循环(递归)神经网络
引出:针对文本数据,为了注意到词与词之间的关系,引出循环神经网络RNN。
ps:有了多层感知机神经网络,卷积神经网络,但是输入和输出都是互相独立的,不能很好地处理文本数据。
1.RNN介绍
RNN:通过引入记忆的概念,在每个元素上都执行相同的任务但是当前时刻的输出依赖于当前时刻的输入和前t时刻的记忆!
目标:RNN就是在知道这个字的前提下,可以预测下一个字!
2.层级结构
概述:每一个元素都会有一个输出,t时刻的输出只与t时刻的输入和t时刻之前的记忆有关!(U,V,W)是需要学习的权重参数。
缺点:实际中,记忆信息保留不完全,记忆有限。
3.多种RNN
双向RNN
ps:对于文本数据,只利用前面的信息或许不够,利用双向结构把前面的信息和后面的信息进行整合,共同来输出。
深层双向RNN
对于更复杂的数据,我们要想更好的拟合他,需要加深网络结构!
ps:利用多层网络结构来进行优化。
4.BPTT算法
DNN和CNN都是利用BP算法来进行优化,但是RNN有一个时间和记忆的概念,所以会有少许不同!
损失函数:交叉熵损失。
目标:通过BPTT算法不断的对参数(U,V,W)进行优化。
ps:针对BP进行改进的传播优化算法。
LSTM
1.长时的依赖问题
引出:通过改造记忆细胞,在RNN的基础上加入“门”的思想来进行优化!
ps:对RNN的短距离记忆问题做出了处理,并且缓解了梯度弥散问题。
ps:LSTM通过门的思想把求导的连乘变为了加法运算缓解了梯度弥散,并且加深了记忆力。
2.“记忆细胞”与门思想
细胞状态:它的控制是通过“门”让信息选择性通过,来去除或者增加信息来改变细胞的状态!
step 1 忘记门:从细胞状态丢弃多少前t-1时刻的记忆信息
ps:利用sigmoid函数的值域特性,决定忘记多少信息!
step 2 输入门:决定放什么信息到“细胞状态”(决定记忆的信息)
ps:利用sigmoid函数的值域特性,决定记忆多少信息!
step 3:通过决定忘记的信息剩余量和决定记忆的一些信息,更新“细胞状态”
step 4:输出门:基于“细胞状态”得到输出
ps:利用tanh函数的对称值域来进行输出最终的信息。
ps:最终通过门结构这种思路,把链式求导变为加法运算,很大程度减少了梯度弥散现象。
ps:门结构虽然好,但是参数太多了,模型结构比较复杂。
3.GRU(LSTM的一个变种)
概念:对忘记门和输入门进行合成,变为一个更新门。
ps:对门结构进行优化,进行门的合并,参数合并来形成。