🐳 模型可解释性 Lemna 🐳
1、LEMNA 简介
给定一个输入样本 x 以及一个分类器,LEMNA (Local Explanation Method using Nolinear Approximation) 尝试去发现那些对于归类 x 起重要作用的关键特征 (权重高/系数大的特征),且这些关键特征可被理解和解释。
一些参考如下:
- CCS 2018 原文 。
- CCS 2018 视频 。
- LEMNA 译文 ,LEMNA 中文博客 。
- Github 1,source code 。
- Github 2,released code ,webpage of released code 。
- Paper 1,LEMNA: Explaining Deep Learning based Security Applications Wenbo Guo, Dongliang Mu, Jun Xu, Purui Su, Gang Wang, Xinyu Xing In CCS 2018。
- Paper 2,Explaining Deep Learning Models – A Bayesian Non-parametric Approach Wenbo Guo, Sui Huang, Yunzhe Tao, Xinyu Xing, Lin Lin In NeurIPS 2018。
- 周报 2021-03-01_2021-03-14。
2、LEMNA 环境配置
本文主要基于 released code 做测试,因此首先安装该代码中的依赖库 rpy2。
主要有以下流程:
- 安装 R,R-4.1.2 for Windows ,Windows 下安装 R 的详细教程 。
- 设置环境变量 1 ,设置环境变量 2 ,具体设置如下。
R_HOME --- R 安装的位置,如 C:\Program Files\R\R-4.1.2。 R_LIBS_USER --- R library 所在位置,如 C:\Program Files\R\R-4.1.2\library。 PATH R.dll 所在的位置,如 C:\Program Files\R\R-4.1.2\bin\x64。 R_USER --- 指向 rpy2 (LEMNA 的依赖库) 的路径,如 E:\anaconda\Lib\site-packages\rpy2。
- R 安装完成后继续安装 rpy2 库。可参考 Windows 安装 rpy2 ,相关文件下载见 rpy2 的 whl 文件 。
如过在 python 命令行输入 import rpy2.robjects as robjects
后不报错,说明 LEMNA 的依赖库 rpy2 安装成功。
3、LEMNA 代码调试
由于 released code 基于 python2 和 R 编写,本文使用的环境为 python 3.6.2,因此主要的 error 集中在 python 2/3 之间的差异和 R 相关库的安装上。另外,其中一些依赖环境还需要参考代码中的 README.md
文件。
- python2 到 python3 的修改 1。
(1) print -> print() (2) xrange() -> range() (3) data_train = pickle.load(file((***)) -> with open(***, 'rb') as f: data_train = pickle.load(f) ……
- R 相关库的安装。
importr('genlasso')
可能会报错,此时需要启动 R 并执行install.packages('genlasso')
,如下所示。 - python2 到 python3 的修改 2。
(1) IndexError: arrays used as indices must be of integer (or boolean) type self.seq_len / 2 -> int(self.seq_len / 2)