前言
如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。
第十章 循环神经网络
4、长短期记忆网络
- 长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络最知名和成功的扩展。
10-4 LSTM结构
LSTM加入了输入门、遗忘门
、输出门
,还有一个内部记忆单元
。输入门控制当前计算的新状态以多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;输出门控制当前的输出有多大程度上取决于当前的记忆单元。
经典的LSTM中,第步的更新公式为:
与传统的循环神经网络不同的是,从上一个记忆单元的状态
到当前的状态
的转移不一定完全取决于激活函数计算得到的状态,还由输入门和遗忘门来共同控制。
- LSTM各模块激活函数的选择:遗忘门、输入门和输出门使用Sigmoid函数作为激活函数;在生成候选记忆
时,使用Tanh作为激活函数。这两个激活函数都是饱和的,即在输入达到一定值时输出不再明显变化。如果用非饱和激活函数如ReLU,则难以实现门控效果。
Sigmoid函数输出在0~1之间,符合门控的物理定义;Tanh函数输出在-1~1之间,与大多数场景下特征分布是0中心吻合。此外,Tanh函数在输入为0附近相比Sigmoid函数有更大的梯度,通常使模型收敛更快。 - 在一些计算能力有限的设备,如可穿戴设备中,由于Sigmoid函数求指数需要一定的计算量,此时会使用0/1门(hard gate)让门控制输出为0或1的离散值,即当输入小于阈值时门控输出为0;大于阈值时输出为1。在性能下降不显著的情况下,减小计算量。
- 经典的LSTM在计算各门控时,通常用输入
和隐层输出
参与门控计算。最常见的变种是加入了窥孔机制,让记忆
也参与到门控的计算中,此时输入门的更新方式变为
5、Seq2Seq模型
- Seq2Seq模型的核心思想是,通过深度神经网络将一个作为输入的序列映射为一个作为输出的序列,这一过程由编码输入和解码输出两个环节构成。在经典的实现中,编码器和解码器各由一个循环神经网络构成,既可以选择传统循环神经网络也可以使用LSTM、GRU等。Seq2Seq模型中,两个循环神经网络是共同训练的。
10-5 循环神经网络编解码结构图
10-5 机器翻译模型结构示意图 - Seq2Seq模型最核心的部分是其解码部分。最基础的解码方法是贪心法,即选取一种度量标准后,每次都在当前状态下选择最佳的一个结果,直到结束。
贪心法的计算代价低,适合作为基准结果与其他方法相比较。贪心法获得的是一个局部最优解,由于实际问题的复杂性,该方法往往并不能取得最好的结果。 -
集束搜索是常见的改进算法,它时一种启发式算法。该方法会保存beam size(后面简写为
)各当前的较佳选择,然后解码时每一步根据保存的结果进行下一步扩展和排序,接着选择前
各进行保存,循环迭代,直到结束时选择最佳的一个作为解码的结果。
当取1时回退化为贪心法。随着
增大,搜索空间增大,最终效果会有所提升,但计算量也相应增大,实际应用中b取8~12为佳。
- 除了集束搜索,解码时使用堆叠的RNN、增加Dropout机制、与解码器之间建立残差连接等,均是常见的改进措施。
还有一个重要的改进是注意力机制,使得解码时每一步可以有针对性地关注与当前有关的编码结果,从而减小解码器输出表示的学习难度,也更容易学习到长期的依赖关系。此外,解码时还可以采用记忆网络等,从外界获取知识。
6、注意力机制
- 在Seq2Seq模型中,当前输出词由当前隐状态以及上一个输出词决定,即
其中
和
是非线性变换,通常是多层神经网络;
是输出序列中的一个词,
是对应的隐状态。
- 实际使用中,随着输入序列的增长,模型的性能会显著下降。因为编码时输入序列的全部信息压缩到了一个向量表示中,随着序列增长,句子越前面的词的信息丢失就越严重。将源语言句子逆序输入,或者重复输入两遍来训练模型,可以得到一定的性能提升。使用LSTM也能够一定程度上缓解这个问题,但在实践中过长的序列仍然难以有很好的表现。同时,Seq2Seq模型的输出序列中,常常会损失部分输入序列的信息,这是因为在解码时,当前词及对应的源语言词的上下文信息和位置信息在解码过程中丢失了。
- Seq2Seq中加入注意力机制也是为了解决过长序列的问题,在注意力机制中,仍然可以用普通的循环神经网络对输入序列进行解码,得到隐状态
。但在解码时,每一个输出词都依赖于前一个隐状态以及输入序列每一个对应的隐状态。
其中
为语境向量,是输入序列全部隐状态
的加权和
其中注意力权重参数
并不是一个固定权重,而是由另一个神经网络计算得到
神经网络
将上一个输出序列隐状态
和输出序列隐状态
作为输出,计算出一个
对齐的值
,再归一化得到权重
。
一个直观的解释是,在生成一个输出词时,会考虑每一个输入词和当前输出词的对齐关系,对齐越好的词,会有越大的权重,对生成当前输出词的影响也就越大。如下图所示,在互为翻译的词对上会有最大的权重。
10-6 注意力机制权重分布
小结
这是本章的第二部分,主要是LSTM、Seq2Seq模型和注意力机制,都非常好理解。其反向传播的计算还是挺难的,以后再整理。
结尾
如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!