发布时间:2022-08-18 18:23
注意力机制起源于应用于NLP的RNN模型,但也在其他的领域有所应用。对注意力机制的理解也是算法面试经常提及的一道基础面试题,在这篇博文里我们汇总吴恩达深度学习视频序列模型3.7和3.8以及台大李宏毅教授对Attenion Mechanism以及相关参考文献对注意力机制给出详细的介绍的解释。
注意力机制是深度学习中一个非常重要的思想,在NLP领域尤为重要。
在一个Encoder和Decoder的翻译模型中,翻译一段法语到英文大致是整个序列输进Encoder然后Decoder再输出整个结果。也就是说模型是观测了整个要翻译的序列,然后再按序做的翻译(时间步模型)。
随着输入序列边长,对模型输出结果的Bleu score评估会呈现这样的变化:
绿线代表人类翻译的水平,蓝线代表机器翻译的水平,之间的Gap能衡量模型记忆长序列的能力。
而人工翻译则是看一部分,翻译一部分,再看下一部分,再翻译一部分,如此往复。因为对人来说,要记忆整个序列是非常困难的。
总结下来:
如同前面讲过的人工翻译是一部分一部分看,一部分一部分翻译一样,注意力机制旨在实现在计算某个时间步的输出时,将注意力集中在一段序列上,段的大小可以由一个窗口来决定,并且为该段序列每一个时间步都赋以权值,以决定它们对最终输出的影响权重。这样使得前面所述问题得到一定程度的解决。
实例说明:
如图所示,在计算Encoder的输出上下文 c 0 c^0 c0时,维持窗口大小为4,即一个时间步输出由四个时间步输入决定。
c 0 = ∑ i = 1 4 α 0 ^ i h i c^0=\sum_{i=1}^4\hat{\alpha_0}^ih^i c0=i=1∑4α0^ihi
那么每个时间步的权重 α 0 i \alpha_0^i α0i如何计算,通过一个match机制来实现,具体而言,可以使用一个小型的网络协同训练来得到一个具体match函数。
图中z是上一个时间步的输出,吴恩达notation里写作 s < t − 1 > s^{
可以使用softmax来实现:
使用softmax是为了窗口内部所有时间步权重相加等于1。