终于要给这段时间的学习画上句号了…啊不对我的SVM还没写!等下再补吧。
1 循环神经网络RNN(Recurrent Neutral Network)
1.1 RNN的提出背景
之前介绍了前馈神经网络,前馈神经网络的信息传递是单向的,只能使当前层的信息流入前一层,而不能将过往的信息保留。
之前同样介绍过卷积神经网络,卷积神经网络通过将全连接信息强行限制为稀疏的信息,做到了最大化利用局部信息,并节省了资源。但是卷积神经网络无法存储信息的序列性。
举个例子,例如现在要做手写数字识别,我们知道12345如果是手写出来的,一定需要运笔。书写过程的信息就具有序列性。如果交给卷积神经网络处理,则只能对写出来的形状进行分析,无法结合书写过程的信息。在这种情况下,如果我们希望对书写过程的信息也进行学习,就需要引入一个能够处理序列信息的神经网络。RNN应运而生。
1.2 RNN的结构
这部分其实我没有看太懂…但是出于颜面我还是强行写一些。
这个图是老生常谈的一张图了,用文字解释一下,假如现在有ABC三层网络,则在AB之间夹着一个H-1隐藏层,在BC之间夹着一个H隐藏层。现在B需要向C传导信息,需要先将信息x输入H隐藏层。H隐藏层不仅会接受这一x的信息,也会把上一个隐藏层H-1的信息也接受过来。通过这种方式,RNN实现了信息的记忆。
参数学习的方式是BPTT(back-propagation through time),将层的递进理解为时间的递进,从而基于时间反向传播。这部分我也不是很懂,烦请查阅其他资料。
资料参考:https://www.cnblogs.com/pinard/p/6509630.html
1.3 RNN存在的问题
RNN理论上能够进行全部节点信息的记忆。然而在实际操作过程中,由于梯度爆炸和梯度消失的问题,比较早的时间的信息会出现丢失现象,从而导致RNN只能进行短期记忆。这对于一些序列较长的信息的学习是十分不利的。
2 LSTM与GRU
以下引用邱锡鹏教授的《神经网络与深度学习》的一段文字:
为了解决上节中提到的记忆容量问题,一种非常好的解决方案是引入门控HochreiterandSchmidhuber[1997]来控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。这一类网络可以称为基于门控的循环神经网络(Gated RNN)。
所谓门控就是在两个隐藏层之间进行信息传递的时候进行配额,在不改变记忆信息规模的前提下,尽量保留有价值的信息。
2.1 LSTM
长短期记忆(Long Short-Term Memory,LSTM)网络以RNN网络为基础,引入了输入门、遗忘门、输出门三个“门”。
遗忘门控制上一个时刻的内部状态需要以往多少信息;
输入门控制当前时刻的候选状态有多少信息需要保存;
输出门控制当前时刻的内部状态有多少信息需要输出给外部状态。
2.2 GRU内部状态
门控循环单元(GatedRecurrentUnit,GRU)网络 [Choetal.,2014,Chung et al., 2014]是一种比LSTM网络更加简单的循环神经网络。
以下是书中给出的GRU的描述:
GRU网络也是在RNN的基础上,引入门机制来控制信息更新的方式。
在LSTM网络中,输入门和遗忘门是互补关系,用两个门比较冗余。GRU将输入门与和遗忘门合并成一个门:更新门。
同时,GRU也不引入额外的记忆单元, 直接在当前状态ht和历史状态ht−1 之间引入线性依赖关系。
3 Text-RNN原理
将RNN应用到文本中有许多用途,本人还没吃透,所以也就不卖弄了,直接贴参考链接:http://www.sohu.com/a/162300065_739762
和TextCNN相比,TextRNN能够处理更长的序列信息,能够更好利用上下文信息。若使用CNN,捕获到的信息更偏向于局部的联系,而非整体。
使用TextRNN处理文本信息是一般使用双向LSTM,与n-gram有些类似,不过双向LSTM能捕获的信息更长,并且是双向信息。
(完)
后记:暑假要把微积分和线代的知识再学一遍啊…与此同时听一些课程、啃一啃课本之类的。对于一个天天跟英语打交道的苦学生来说,听课的同时能学到英语,是莫大的福利。定两个短期内的小目标,大概是参加一次数模,再参加一次NLP的比赛,一学期的理工生活也就圆满了。最后的最后,祝各位早日暴富,顶会无数。