前言
如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。
第十章 循环神经网络
1、循环神经网络和卷积神经网络
- 典型的循环神经网络如下图:
10-1 循环神经网络结构
如上图,一个长度为的序列用循环神经网络建模,展开之后可以看作是一个层的前馈神经网络。其中,第层的隐含状态编码了序列中前个输入的信息,可以通过当前的输入和上一层神经网络的状态计算得到;最后一层的状态编码了整个序列的信息,因此可以作为整篇文档的压缩表示,以此为基础的结构可以应用于多种具体任务。例如,在后面直接接一个Softmax层,输出文本所属类别的预测概率,就可以实现文本分类。和的计算公式为: 其中和为激活函数,为输入层到隐含层的权重矩阵,为隐含层从上一时刻到下一时刻状态转移的权重矩阵。在文本分类任务中,可以取Tanh函数或者ReLU函数,可以采用Softmax函数。
2、循环神经网络的梯度消失问题
- 循环神经网络模型的求解可以采用BPTT(Back Propagation Through Time,基于时间的反向传播)算法实现,BPTT实际上是反向传播算法的简单变种,可以将循环神经网络按时间展开成层的前馈神经网络来理解。
-
梯度爆炸的问题可以通过梯度裁剪来缓解,即当梯度的范式大于某个给定值时,对梯度进行等比收缩。
梯度消失问题相对棘手,需要对模型本身进行改进。深度残差网络是对前馈神经网络的改进,通过残差学习的方式缓解了梯度消失的现象;对于循环神经网络来说,LSTM及其变种GRU等模型通过加入门控机制,很大程度上弥补了梯度消失所带来的损失。
3、循环神经网络中的激活函数
- 在循环神经网络中使用ReLU作为激活函数,需要对矩阵的初值做一定限制,否则十分容易引发数值问题。而在卷积神经网络中一般不会出现严重的数值问题。
- 循环神经网络中使用ReLU作为激活函数时,只有当的取值在单位矩阵附近时才能取得比较好的效果,因此需要将初始化为单位矩阵。实验证明,初始化为单位矩阵并使用ReLU激活函数在一些应用中取得了与LSTM相似的结果,并且学习速度比LSTM更快,是一个值得尝试的小技巧。
小结
这是本章的第一部分,书中公式还是有一些的,我这里没有写。主要是循环神经网络的前向计算公式,循环神经网络会发生梯度爆炸和梯度消失的公式解释,以及为什么要将初始化为单位矩阵的公式解释。本章的第二部分主要是LSTM、Seq2Seq模型和注意力机制。
结尾
如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!
网友评论