什么是注意力(Attention)?
注意力机制可看作模糊记忆的一种形式。记忆由模型的隐藏状态组成,模型选择从记忆中检索内容。深入了解注意力之前,先简要回顾Seq2Seq模型。传统的机器翻译主要基于Seq2Seq模型。该模型分为编码层和解码层,并由RNN或RNN变体(LSTM、GRU等)组成。编码矢量是从模型的编码部分产生的最终隐藏状态。该向量旨在封装所有输入元素的信息,以帮助解码器进行准确的预测。其用于充当模型解码器部分的初始隐藏状态。
Seq2Seq模型的主要瓶颈是需要将源序列的全部内容压缩为固定大小的矢量。如果文本稍长,则很容易丢失文本的某些信息。为解决这个问题,注意力应运而生。注意机制通过使解码器回顾源序列隐藏状态,然后将其加权平均值作为附加输入提供给解码器来缓解该问题。使用注意力,顾名思义,模型在解码阶段选择最适合当前节点的上下文作为输入内容。
注意力与传统的Seq2Seq模型有两个主要区别:
第一,编码器向解码器提供更多数据,并且编码器会向解码器提供所有节点的隐藏状态,而不仅仅是编码器的最后节点的隐藏状态。
第二,解码器不直接将所有编码器提供的隐藏状态作为输入,而是采用选择机制来选择与当前位置最匹配的隐藏状态。为此,它尝试通过计算每个隐藏状态的得分值并对得分进行softmax计算来确定哪个隐藏状态与当前节点相关性最高,这使得隐藏状态的更高相关性具有更大的分数值,不太相关的隐藏状态具有较小的分数值。然后它将每个隐藏状态与其softmax得分相乘,从而放大分数高的隐藏状态,淹没分数低的隐藏状态。该评分练习在解码器侧的每个迭代时间完成。
参考:
https://baijiahao.baidu.com/s?id=1646339383512667132&wfr=spider&for=pc