【自然语言处理】:seq2seq中的注意机制。
一.seq2seq机制
传统的seq2seq机制在语言翻译中使用了两个rnn,一个是编码器,对语言进行编码,另一个是解码器,对我们获得的语言代码进行解码。在解码的过程中,我们可以把我们的语言翻译成另一种语言。其机制如下:
当然,有了这个机制,也会出现一些问题。比如一个隐藏层需要捕捉整个句子的所有信息,但实际上,我们面前的一些信息可能会被省略。同样,一些本应更重要的信息可能不会被模型认为是重要的。
比如输入的英文句子是:Tom chase Jerry,目标翻译结果是:Tom Chase Jerry。在没有注意机制的模型中,该模型认为汤姆的翻译受到汤姆、蔡斯和杰瑞相同权重的影响。但其实不应该这样对待。单词Tom受输入单词Tom的影响应该最大,而其他输入单词的影响应该很小。显然,在不考虑注意机制的编码器-解码器模型中,这种不同输入的重要性并不反映处理,这通常被称为分心模型.
因此,我们引入注意力机制,即注意力,来改变这种情况。
二.Attention注意力机制的原理
你只需要注意杨丽坤的名言。让我们来看看注意力机制是如何实现的。首先,我们将解码器第一隐藏层的值乘以编码器的每个值,即点积,得到一个关注度分数。如下图所示:
然后我们使用softmax得到这些点积结果的概率分布。众所周知,softmax得到的概率之和只有1。使用softmax后的概率分布在这里称为注意力分布。我们找到了第一个编码器单元通过softmax后注意力得分的概率。说明目前我们的注意力集中在第一个编码器单元上。机器的主要注意力是翻译当前单位对应的单词。
然后我们用加权和计算当前编码器的隐藏状态作为我们的注意力输出,并形成一个向量。就是注意力分配的结果应该转化为一个向量。
然后,我们用注意力作用的解码器拼接这个向量,并使用这个拼接结果来计算我们最终的翻译结果。
最后,使用刚才的结果作为我们第二个隐藏层的输入(通常可以这样做)。然后,第二次关注之后,我们两个隐藏层的预测结果就是:命中。然后依次重复这个过程,得到我们最终的翻译结果。
最后,我们总结了注意机制。
其中,我们的隐藏状态或隐藏层可以称为h1、h2.然后我们可以通过点积得到我们的注意力分数。
把这个et放到softmax函数中,得到关注度分布:at。我们用这个at来计算加权和,这个权重就是我们隐藏状态(层)的一个权重(最后恍然大悟,知道这个加权和是怎么来的了!)
最后组合拼接(左右拼接,不上下拼接),得到我们的预测值!具体公式如下图所示:
,
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/48881.html