怎样评价IndRNN模型
乍看起来,现代神经网络中最流行的RNN(循环神经网络,这里包括LSTM和GRU变体)和CNN(卷积神经网络,这里主要指深度卷积神经网络),好像是两个泾渭分明的流派:
ReLU在CNN上大放异彩,而RNN用的还是经典的tanh和sigmoidRNN的每层共享权重(所谓weight-tying),而CNN每层中的权重一般不一样。但是这些并不是颠扑不破的教条,RNN和CNN完全可以互相借鉴彼此的思路。比如,人们很早就开始尝试在CNN中共享权重。这方面最近的一项工作是Ryo Takahashi等的A Novel Weight-Shared Multi-Stage Network Architecture of CNNs for Scale Invariance (2017)
同样,RNN可以使用ReLU,比如Quoc V. Le等2015年提出的IRNN,和Talathi等2016年提出的NPRNN。
IndRNN可以说是RNN流派的叛逆者:
和IRNN、NPRNN一样使用ReLU作为激活函数。独立权重。
IndRNN结构,BN为Batch Normalization的缩写IndRNN的“离经叛道”是为了解决RNN系模型的痛点:梯度爆炸(gradient exploration)和梯度消失(gradient vanishing)。
根据论文作者的试验,效果很不错:
T=100的时候,其实大家的表现都很好,除了原始RNN(所以说,现在人们提到RNN,通常指的就是LSTM、GRU或者别的什么RNN变体,真正“原汁原味”的RNN在实际项目中几乎见不到)。
T=500的时候,IRNN有点吃力了,不过还能撑住。
T=1000,这是IndRNN的光辉时刻。其他模型都收敛不了。
T=5000,IndRNN仍然收得住!
论文作者在MNIST(手写数字图像分类)、Treebank(自然语言处理)、NTU RGB+D(动作识别)数据集上做了试验,效果很不错。
当然,话说回来,之前RNN系也不是对梯度爆炸和消失毫无办法。梯度爆炸,可以用梯度裁剪(gradient clipping)来缓解。而梯度消失其实在LSTM和GRU上不是特别严重(上面的试验中,LSTM在T=500的时候依然表现优异,T=1000的时候才挂掉)。所以,实际项目中是否要用IndRNN,还需要具体情况具体分析,权衡多方面的因素,可能还需要做一些实际的试验。
另外,IndRNN的效果很好,但结构并不复杂。这意味着将IndRNN作为构件集成到更大、更复杂的模型中比较方便。另一方面,因为使用ReLU作为激活函数,IndRNN堆叠起来也更方便(基于sigmoid和tanh的LSTM,直接堆叠一般只能2-3层,再往上叠表现反而下降)。
以残差网络的方式堆叠IndRNNRNN和CNN互相借鉴彼此的设计思路,可能是比较值得关注的一个方向。而IndRNN是这一方向中一项非常优雅的工作。
■网友
传统 RNN 因为在时间上参数共享,所以会出现梯度消失/爆炸问题。LSTM/GRU 在解决层内梯度消失/爆炸问题时,梯度仍然会在层间衰减,所以 LSTM/GRU 难以做成多层网络。并且,LSTM/GRU 也存在着无法捕捉更长的时序信息的问题。此外,传统 RNN 由于层内神经元相互联系,难以对神经元的行为进行合理的解释。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
