Highway Networks

本文深入解析高速路神经网络(HighwayNetworks),一种解决深层神经网络梯度消失问题的创新结构。通过引入transformgate和carrygate机制,允许部分输入直接传递,有效优化深层网络训练,实现更快收敛。文章对比了其与ResNet的区别,并展示了实验结果,证实其在深度增加时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

目前的神经网络普遍采用反向传播(BP算法)方法来计算梯度并更新w和b参数(其实就是导数的链式法则,就是有很多乘法会连接在一起),由于深层网络中层数很多,如果每层都使用类似sigmoid这样的函数,它们的导数都小于1,这样在反向传播中可能会导致最初几层的w和b参数更新的幅度非常小或者几乎不更新,也就是我们所说的梯度消失现象。
目前的神经网络改用relu作为激活函数就是为了减轻梯度消失的现象,因为relu函数求导后导数为1。
更好的办法就是高速路神经网络(Highway Networks)。它主要解决网络深度加深、梯度信息回流受阻,造成网络训练困难的问题

从ImageNet竞赛的几个前几名的模型来看,神经网络的深度对模型效果确实有很大的作用。可是传统的神经网络随着深度的增加,训练越来越困难,这篇paper基于门机制提出了Highway Network,使用简单的SGD就可以训练很深的网络,而且optimization更简单,甚至收敛更快!
传统的神经网络
一个典型的神经网络是一个仿射变换加一个非线性函数。
y = H ( x , W H ) y = H(\mathbf x,W_H) y=H(x,WH)
x 表示输入, W H W_H WH 表示权重.

2.highway network

小博标记版论文下载地址
所谓Highway网络,无非就是输入某一层网络的数据一部分经过非线性变换,另一部分直接从该网络跨过去不做任何转换,就想走在高速公路上一样,而多少的数据需要非线性变换,多少的数据可以直接跨过去,是由一个权值矩阵和输入数据共同决定的。

受lstm门机制的启发,Highway network基于门机制引入了transform gate Tcarry gate C ,输出output是由tranform input和carry input组成:
y = H ( x , W H ) ⋅ T ( x , W T ) + x ⋅ C ( x , W C ) y = H(\mathbf x,W_H) \cdot T(\mathbf x,W_T)+\mathbf x \cdot C(\mathbf x,W_C) y=H(x,WH)T(x,WT)+xC(x,WC)
其中 x \mathbf x x是原来的输入(在resnet中叫identity mapping), H ( x , W H ) H(\mathbf x,W_H) H(x,WH)前言中说的仿射函数;T算出来的是一个向量 ( a 1 , a 2 , … … a n ) (a_1,a_2,……a_n) (a1a2an),其中每个数字都是(0,1)之间的浮点数,代表y中由x变化后的内容所占的比例; x , y , H ( x , W H ) , T ( x , W T ) x,y,H(x,W_H),T(x,W_T) x,y,H(x,WH),T(x,WT)必须是同样的维度。

为了简单,设置 C = 1 - T . 公式变为:

y = H ( x , W H ) ⋅ T ( x , W T ) + x ⋅ ( 1 − T ( x , W T ) ) y = H(\mathbf x,W_H) \cdot T(\mathbf x,W_T)+\mathbf x \cdot (1-T(\mathbf x,W_T)) y=H(x,WH)T(x,WT)+x(1T(x,WT))

特别的,
y = { x , i f T ( x , W T ) = 0 H ( x , W H ) , i f T ( x , W T ) = 1 y = \left\{\begin{matrix} \mathbf x ,& if T(\mathbf x,W_T)=0\\ H(\mathbf x,W_H), & if T(\mathbf x,W_T)=1 \end{matrix}\right. y={x,H(x,WH),ifT(x,WT)=0ifT(x,WT)=1

那么该层的雅可比变为:
d y d x = { I , i f T ( x , W T ) = 0 H ′ ( x , W H ) , i f T ( x , W T ) = 1 \frac {dy}{dx} = \left\{\begin{matrix} I ,& if T(\mathbf x,W_T)=0\\ H'(\mathbf x,W_H), & if T(\mathbf x,W_T)=1 \end{matrix}\right. dxdy={I,H(x,WH),ifT(x,WT)=0ifT(x,WT)=1
可以看到Highway Network其实就是对输入一部分进行处理(和传统神经网络相同),一部分直接通过.
类比于传统的神经网络plain layer计算第 i 个神经元输出, y i = H i ( x ) y_i = H_i(\mathbf x) yi=Hi(x). 我们引入block的概念, 那么计算 i i i 个block的输出需要计算a block state H i ( x ) H_i(\mathbf x) Hi(x)和transform gate output T i ( x ) T_i(\mathbf x) Ti(x) . 所以block output就是:
y = H i ( x ) ⋅ T i ( x ) + x i ⋅ ( 1 − T i ( x ) ) y = H_i(\mathbf x) \cdot T_i(\mathbf x)+\mathbf x_i \cdot (1-T_i(\mathbf x)) y=Hi(x)Ti(x)+xi(1Ti(x))

另外我们设置transform gate计算方法为:
T ( x ) = σ ( W T T x + b T ) T(\mathbf x) = \sigma {(W_T^T \mathbf x + b_T)} T(x)=σ(WTTx+bT)

其中 W T W_T WT是权重矩阵, b T b_T bT是bias vector.初始化时可以给 b T b_T bT初始化一个负值,相当于网络在开始的时候侧重于搬运行为(carry behavior),就是什么处理都不做。

b T b_T bT 一般设置为负值(例如-1,-3),使得网络初始的时候更偏向carry behavior. 还有一个比较有意思的是 σ ( x ) ∈ ( 0 , 1 ) \sigma(x) \in (0, 1) σ(x)(0,1) , 公式(4)永远都不会是True, 这就使得highway network的behavior介于transform和carry之间.

在实验中还发现 b T b_T bT 设置成负值,即是网络层数很深, 用各种各样的方法初始化用不同的激活函数都可以让网络高效的学习.

3.实验结果

作者分别训练相同深度的plain network 和 highway network,实验发现10层的神经网络plain layer效果好于highway network, 但是随着深度的增加plainnetwork越来越难optimize, 但是highway network到了100层都可以很好的optimize,效果比plain layer刚好,收敛也更快.
更多详情参考experiment 结果

4.对比resnet

今天讲的这两种网络结构都是最新被业界针对图像处理问题提出的最新的结构,主要解决就是超深层的网络在训练优化中遇到的问题。

之前看过残差网络的小伙伴可能会有印象,resnet原理特别像,关于更多resnet相关知识可以参考我之前的一篇文章:残差网络(Deep Residual Learning for Image Recognition)

其实深度残差网络和Highway网络这两种网络结构都能够让一部分的数据可以跳过某些变换层,而直接到后面的层中去,只不过Highway网络需要一个权值来控制每次直接通过的数据量,而深度残差网络就直接让一部分数据通到了后面。从大量的实验中,我感觉这两种网络只有在很深的场景中才能发挥出“威力”,如果本身网络层数较浅,勉强使用这两种结构是很难得到好的结果的。

resnet和highway network对比

5.参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI蜗牛之家

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值