G. Alain & Y. Bengio
原文地址
https://arxiv.org/abs/1610.01644
众所周知,大多数时候神经网络模型的内部运算不可测,这篇论文提出了“linear classifier probe”来分析神经网络中间层在整个网络中的作用。由于很多神经网络用于线性分类(或者说各个神经层最终都会导入一个线性分类器中,使用一个线性函数来分析各层的作用是合理的。
论文主要研究三个问题:
- 当我们增加层数时,会发生什么?
- 如果神经网络有多个分支,信息会如何传递?
- 辅助损失(auxiliary losses)有用吗? 如果神经网络有多个分支,信息会如何传递? 辅助损失(auxiliary losses)有用吗?
论文从香农熵开始,提出第一个问题:给出一个含有数据(X,Y)的多层感知机,关于目标Y,中间层是否比X有更多的信息量?
答案是否。
假设上图,Y和A代表各随机变量,根据条件熵,可得:
可推论,在多层感知机中,越深入,信息损失就越大。
“Probe”线性函数:
其中,h∈H是一些隐藏层的特征, [0,1]^d即目标分类的独热码空间,W和b即probe的权值。
Probe插入感知机的结构如下:
Yk为各项线性函数,Hk为各层。每层到Probe中间连接的二极管符号仅指代梯度参数不会反向传递,所以probe不会对模型的参数产生影响。
将这个模型用于检测auxiliary loss的作用
作者使用了128各全连接层,每个连接层有128个隐藏神经元作用于MNIST数据集,使用Glorot initialization和leaky ReLU。在这个过深的模型的基础上,作者在各层都添加了probe
由结果图可见,随着深度提高,模型的准确率越低。在添加auxiliary loss前,通常的gradient descent的方法不能成功训练这个模型。但当添加了这些losses,模型依然达到了一定的效果。
将这个模型用于检测skip connection的作用
在原有的模型中加入一个从第0层到第64层的跳跃连接。
从结果图中可见,被skip connection跳过的部分(左半部分)在训练中被完全忽视了。在这个分支结构中,为了达成预期的结果,一条分支被基本忽视了。
(所有图片摘自原文)