Highway network——《Training Very Deep Networks》

最近在家里听斯坦福CS231n的课程,很系统的学习了一些深度学习的知识,很受启发。其中,我对深度学习中的梯度流的概念印象深刻。讲到RNN时,提到LSTM能够解决普通RNN的梯度消失和梯度爆炸的问题。LSTM包含两个隐状态,分别为单元状态和隐藏状态。其中,单元状态是梯度传播的主要路径。上一时刻和下一时刻单元状态的传播通过一个加法和一个逐元素的矩阵乘法操作。这两个操作降低了计算复杂度,同时也能避免梯度消失和梯度爆炸问题(主要是由于forget gate是变化的,避免梯度反复乘以相同的权重矩阵)。因此,该课程提到单元状态中的加法和逐元素乘法可为梯度提供一条类似ResNet的梯度高速公路。从某种程度说,通过加法连接和乘法门管理梯度流是很有用的。因此,我特意看了高速公路网络的论文《Training Very Deep Networks》,并且总结一下这篇论文。

普通神经网络:

Highway network——《Training Very Deep Networks》

highway networks:

Highway network——《Training Very Deep Networks》

其中,T(x)和C(x)分别对应transform gate和carry gate。

简化的highway networks:

Highway network——《Training Very Deep Networks》

然后就是训练highway networks:

Highway network——《Training Very Deep Networks》

不过需要注意的是,这里的初始化的一个小技巧,T(x)的偏置初始化为一个负值。这个做法的目的是在网络初期保存更多的初始值(long-term temporal dependencies)。

Highway network——《Training Very Deep Networks》

实验验证了作者的想法,highway networks相比普通网络能够更好地训练很深的神经网络。

论文中的一些分析:

1. T函数的偏置并非在训练时变小,有的偏置随着网络深度变深而增大。作者称,这暗示浅层的偏置为较大的负值,其并非是用于将transform门关闭,而是可以让其更具有选择性(浅层还是深层?)。我猜测这里的意思是能够浅层网络的transform占比更小能够保存更多的原始数据,使得深层网络有更多的操作空间。

2. 大多数的transform gate都很活跃(平均),但是在单个例子上的活跃值不同。这也就意味着,每个sample只采用一部分blocks去进行transformation,不同的sample用的blocks不同。

3. 同一数据集不同类别的transform gate activity不同。这说明gate不仅仅能够减轻训练,而且是能够帮助分类(不同的模式代表不同的类别)。

4. 注意,这里的transform gate(T(x))是依赖数据的(data-dependent routing mechanism),不同的数据不同,因为具有更多的灵活性。

看到一个总结还不错:

https://www.cnblogs.com/zeze/p/8274305.html 里面的一段话(贴在下面了)

Highway network——《Training Very Deep Networks》

highway networks只是简化了训练,没有提升模型效率。看到一个知乎的回答,觉得很有启发性,也贴过来。

Highway network——《Training Very Deep Networks》