在之前,我们介绍了两种可解释性神经网络:

  • 可解释性神经网络——1.xNN
  • 可解释性神经网络——2.添加约束的xNN

这里我们再介绍另一种网络结构:GAMI-Net,对应的文章为

  • GAMI-Net: An Explainable Neural Network based on Generalized Additive Models with Structured Interactions
  • Accurate Intelligible Models with Pairwise Interactions

前文回顾

前面两篇文章,做可解释性神经网络用的都是GAIM,但由于模型的复杂性依旧相对较高, h i ( w i T x ) h_i \left(\boldsymbol{w}_{i}^{T} \boldsymbol{x}\right) hi​(wiT​x)中的 w i T x \boldsymbol{w}_{i}^{T} \boldsymbol{x} wiT​x的可解释性依旧比较弱,因此后面模型考虑使用GAM模型。
GAIM
g ( E ( y ∣ x ) ) = μ + ∑ i = 1 M h i ( w i T x ) g(\mathbb{E}(y \mid \boldsymbol{x}))=\mu+\sum_{i=1}^{M} h_{i}\left(\boldsymbol{w}_{i}^{T} \boldsymbol{x}\right) g(E(y∣x))=μ+i=1∑M​hi​(wiT​x)

GAM
g ( E ( y ∣ x ) ) = μ + ∑ h i ( x i ) g(\mathbb{E}(y \mid \boldsymbol{x}))=\mu+\sum h_{i}\left(x_{i}\right) g(E(y∣x))=μ+∑hi​(xi​)


Accurate Intelligible Models with Pairwise Interactions

这篇文章是将交互项比较早引入到GAM中的,我们先学习一下此文章。

首先先回顾一般的GAM模型:
g ( E [ y ] ) = ∑ f i ( x i ) g(E[y])=\sum f_{i}\left(x_{i}\right) g(E[y])=∑fi​(xi​)

添加交互项的GAM模型:
g ( E [ y ] ) = ∑ f i ( x i ) + ∑ f i j ( x i , x j ) g(E[y])=\sum f_{i}\left(x_{i}\right)+\sum f_{i j}\left(x_{i}, x_{j}\right) g(E[y])=∑fi​(xi​)+∑fij​(xi​,xj​)

目标是最小化损失函数:
min ⁡ F ∈ H E [ L ( y , F ( x ) ) ] \min _{F \in \mathcal{H}} E[L(y, F(\boldsymbol{x}))] F∈Hmin​E[L(y,F(x))]

目前的问题在于对于高维的情形,添加的交互项过多,从而极大地影响算法的运行速度。若维度为 p p p,则交互项个数为 p × p p×p p×p。因此文章后面提出了一种贪婪前项分步筛选算法进行交互项的选取。针对交互项的选取,主要思路为先列出所有的交互项,而后一项一项的添加进入候选交互项集合,每一轮选出一个误差最小的,最后直到不再影响模型预测精度后,停止迭代。而选取的依据则是根据目前模型的残差,用一个交互项的函数去拟合现有的残差。

添加交互项的算法主体如下:

现在问题的关键在于如何选取这样一个交互项的函数,文章采用了几种方法进行实验:

第一种最简单的想法是用两个变量,记为一个pair ( x i , x j ) (\boldsymbol{x}_{i},\boldsymbol{x}_{j}) (xi​,xj​)找两个阈值 ( c i , c j ) (c_i,c_j) (ci​,cj​),将二维区域分为四个子区域,如上图右侧节点所示。而后类似回归树,每个区域r的预测值都是用那个区域所有样本label的平均值进行预测。依靠下述的残差平方和RSS,我们可以选取每个pair的最优分割,记为 T i j ( x k ) T_{ij} (\boldsymbol{x}_{k}) Tij​(xk​)。
R S S = ∑ k = 1 N ( y k − T i j ( x k ) ) 2 R S S=\sum_{k=1}^{N}\left(y_{k}-T_{i j}\left(\boldsymbol{x}_{k}\right)\right)^{2} RSS=k=1∑N​(yk​−Tij​(xk​))2

由此,文章比较好的解决了交互项函数的选取,但算法复杂度依旧非常高,因为四个区域每个区域都需要计算一次平均值,而两个变量针对所有样本取得的值都需要遍历一次,复杂度非常高。由此文章提出了一种降低复杂度的计算方法。

如下图,四个区域我们分别记为 a , b , c , d a,b,c,d a,b,c,d,注意到四个区域,针对两个变量,我们可以通过遍历两个变量的所有样本可能取值,直接计算出 a + b , c + d , a + c , b + d a+b,c+d,a+c,b+d a+b,c+d,a+c,b+d的值,而后只需要计算出每个样本对应 a a a的值,就可以简单计算出 b , c , d b,c,d b,c,d对应的值,而不需要再重新遍历。

更进一步,我们可以类似地更加细分区域,如同树的方法,对 x i x_i xi​分割的两个区域,再分别按照 x j x_j xj​设置不同的阈值,对四个区域进行分割。

文章为了更进一步降低计算复杂度,针对样本量非常大的连续形变量,等距分为256个区域,转化为256个不同的值,再从中找寻最优分割,实验表明其对最终结果的精度几乎没有影响,并且能够极大降低算法复杂度。
最终文章的算法流程为:

  1. 第一步建立GAM模型,考虑所有的一维变量;
  2. 第二部逐步添加交互项,确立最终的模型。

真实数据

真实数据实验,针对回归数据集:

针对分类数据集:

从上述十个数据集的比较来看,本文提出的方法GA2M FAST在一系列基于GAM的方法中表现最好(GA2M Rand,GA2M Coef,GA2M Order分别为随机加交互项或者按照一个固定的条件添加交互项)。但实际上准确率与RF对比,发现RF总体来看表现得更好。

最后文章应用了上述提出的方法,对真实数据建立模型,并且最后论证选出来的交互项是非常有意义的交互项。


GAMI-Net: An Explainable Neural Network based on Generalized Additive Models with Structured Interactions

下面回到文章:《GAMI-Net: An Explainable Neural Network based on Generalized Additive Models with Structured Interactions》。

文章提出的网络结构:GAMI,全名为generalized additive models with structured interactions,其实也就是添加交互项的网络结构。本文从叙述中感觉和前面的方法与结构比较相似,下面是网络主要结构,主要考虑了多层子网络结构,Heredity以及添加了Marginal clarity约束。

Marginal clarity:
f i j i ( x i ) = ∫ f i j ( x i , x j ) d x j = 0 f i j j ( x j ) = ∫ f i j ( x i , x j ) d x i = 0 \begin{array}{l} f_{i j}^{i}\left(x_{i}\right)=\int f_{i j}\left(x_{i}, x_{j}\right) d x_{j}=0 \\ f_{i j}^{j}\left(x_{j}\right)=\int f_{i j}\left(x_{i}, x_{j}\right) d x_{i}=0 \end{array} fiji​(xi​)=∫fij​(xi​,xj​)dxj​=0fijj​(xj​)=∫fij​(xi​,xj​)dxi​=0​

此约束为了保证模型的可识别性,以及为了防止交互项影响过大从而到时结果不够稳定。下面来叙述整个方法的流程。

此方法的流程和上篇文章的方法比较一致,也是先筛选Main Effects,而后再添加进交互项进一步进行loss的优化,最后还有一步来prune interactions,但是具体的方法可能由于是预印版,没有详细地说明,之后会看开源的代码继续进行学习。而对于具体的交互项选择,则也是使用类似回归树的分割方法。最后文章也对比了一些方法,在识别准确率上有进一步提升。

可解释性神经网络——3.一种新的可解释性神经网络GAMI-Net相关推荐

  1. 神经网络的三种训练方法,如何训练一个神经网络

    1.神经网络有哪些主要分类规则并如何分类? 神经网络模型的分类 人工神经网络的模型很多,可以按照不同的方法进行分类.其中,常见的两种分类方法是,按照网络连接的拓朴结构分类和按照网络内部的信息流向分类. ...

  2. 神经网络的三种训练方法,三种常见的神经网络

    神经网络算法中,参数的设置或者调整,有什么方法可以采用 若果对你有帮助,请点赞.神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值. 现在一般求解权值和阈值,都是采用梯 ...

  3. 一种新的基于时空图神经网络的交通流预测模型

    1.文章信息 <Traffic Flow Prediction via Spatial Temporal Graph Neural Network>.这是北京交通大学发在国际顶级会议WWW ...

  4. Andrej Karpathy发文谈神经网络:这不仅仅是分类器,这是一种新的软件开发思想

    作者: 晓凡 概要:有越来越多的传统编程语言(C.C++.Java)等程序员开始学习机器学习/深度学习,而对机器学习/深度学习的研究人员来说,编程也是必备技巧. 有越来越多的传统编程语言(C.C++. ...

  5. [翻译] 神经网络与深度学习 第三章 提升神经网络学习的效果 - Chapter 3 Improving the way neural networks learn

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 > 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 ...

  6. Hinton最新演讲!一种新神经网络:前向-前向FF算法,论文已公开!

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:机器之心 | 编辑:杜伟.蛋酱 在 NeurIPS 202 ...

  7. 【NLP】五万字综述!Prompt Tuning:深度解读一种新的微调范式

    作者 | 王嘉宁 整理 | NewBeeNLP https://wjn1996.blog.csdn.net/article/details/120607050 这绝对是我看过最全面细致的Prompt ...

  8. 牛顿第三定律不再起作用:芝加哥大学找到了一种新系统,作用力不等于反作用力...

    来源:AI科技评论 作者:吴彤 编辑:青暮 世界上还有许多并未达到平衡的系统,比如生命,在这样的系统中,牛顿第三定律失效了.目前,芝加哥大学的研究员找到了一种思考非平衡系统中相变的新方法. 牛顿第三运 ...

  9. 【深度学习】图像去噪:一种基于流的图像去噪神经网络

    摘要 目前流行的基于卷积神经网络(CNN)的图像去噪方法是通过提取图像的特征来恢复干净的ground truth,获得较高的去噪精度.然而,这些方法可能会忽略干净图像的基本分布,在去噪结果中产生失真或 ...

最新文章

  1. 将一个BYTE数组转换成16进制字符串和10进制字符串格式
  2. 电脑服务器传文件夹吗,服务器和电脑传文件夹吗
  3. python 生成器 generator
  4. 我用Vue2全家桶重写「daza.io」的前端
  5. XidianOJ 1024 简单逆序对
  6. 【新番尝鲜】玛利亚狂热--百合VS伪娘之战
  7. Neotec WELLFLO V8.1.6 油气井生产 模拟软件
  8. java 解析dex_将DEX反编译成Java源代码
  9. 通过Windows的bat方式一键给计算机网卡替换IP地址
  10. stm32教程之三重ADC交错采样
  11. 单总体分布卡方拟合优度检验
  12. c语言负数左移右移_C语言负数的移位运算
  13. RMF模型评分制计算方法(2021/08/04)
  14. 三个数降序排列(汇编)
  15. 申请计算机语言学留学要求,布兰迪斯大学计算机语言学文学硕士研究生申请要求及申请材料要求清单...
  16. Atlas 200 HiLens Kit
  17. 飞腾服务器如何查看cpu型号,飞腾CPU服务器云平台管理
  18. BZOJ 1123: [POI2008]BLO
  19. 区块链改变18大行业,BAT等巨头早已布局
  20. java毕业设计员工绩效考核系统分析与设计Mybatis+系统+数据库+调试部署

热门文章

  1. 关系图d3、封装js
  2. 京东按关键字搜索商品 API 返回值说明
  3. #2021,我们的浮生一日#
  4. 计算机图形学三:光栅化-Rasterization
  5. 老板让你用Excel制作仪表盘?你这样做,几分钟就能搞定了
  6. c语言u8代表,请问头文件里的 u8,u16 vu 等符号是什么意思?
  7. c语言缓冲区溢出函数,示例C程序上的缓冲区溢出
  8. golang读写文件的几种方式
  9. java公社博客_Java的运算符
  10. vue 生命周期 这个博客写的很好https://www.cnblogs.com/happ0/p/8075562.html