注意力机制概述
重点
- 传统注意力机制模块和结构,计算方法
- 不同应用场景
- nlp attention应用场景,具有什么优势
- 编码方式(同一/不同序列编码,计算方式)
本质上是一个加权求和模块
传统注意力机制
加权求和模块:神经网络中的一个组件,可以单独使用,但更多地用作网络中的一部分。
-
模块结构
-
训练
将模块放到整体模型中,不需要额外的训练数据权重可以由模块中的参数学到 -
评价
放到各个任务中检验,通过任务指标的提升证明模块的效果 -
注意力模块应用
应用场景:网络中有“求和”的地方都可以用,如图卷积,机器翻译等
优点:- 根据不同场景动态选择不同的关注对象
- 不考虑词之间的距离直接计算依赖关系,提升任务性能
- 软注意力:在求注意力分配概率分布时,对于输入句子X中任意一个单词都给出一个概率值,是个概率分布。
- 硬注意力:直接从输入句子里面找到某个特定的单词,然后把目标句子单词和这个单词对齐,而其它输入句子中的单词硬性地认为对齐概率为0
-
注意力机制优势
- 让任务处理系统找到与当前任务相关显著的输入信息,并按重要性进行处理,从而提高输出的质量
- 不需要监督信号,可推理多种不同模态数据之间难以解释、隐蔽性强、复杂映射关系,对于先验认知少的问题,极为有效。
- 解决长距离依赖问题,提升任务性能。
存在问题:
注意力编码机制
注意力机制可以作为一种编码机制,即:通过建立序列各元素之间的关联关系形成一种序列表示(按元素之间关系对序列进行编码);或通过不同序列元素之间的关联关系形成不同序列间的融合表示
-
单一向量编码:将输入序列按规则编码成单一向量表示。
- 对序列中某元素的真正上下文编码(词编码)
- 使用双向RNN语言模型编码词的上下文
存在问题:双向RNN语言模型实际上是单独的两个方向的语言模型,并不能同时观察到上下文 - 采用注意力机制编码词的上下文
- 使用双向RNN语言模型编码词的上下文
- 对序列中某元素的真正上下文编码(词编码)
-
不同序列间编码:将两个序列编码成二者的融合的表示序列,如匹配任务和阅读理解任务常用的融合层表示
-
同一序列自编码:利用多头自注意力编码对句子编码可以起到类似句法分析器的作用。如Transformer编码端