专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧
目录
- 传统注意力机制
- 注意力结构
- 软注意力机制
- 硬注意力机制
- 注意力机制优势与不足
- 注意力模块应用
- 注意力编码机制
- 单一向量编码
- 不同序列间编码
- 同一序列自编码:
- 自注意力
- 多头注意力
- 注意力机制实际上是一个加权求和模块
- 加权求和模块 :神经网络中的一个组件,可以单独使用,但更多地用作网络中的一部分。
计算F(Q,Ki):F为注意力打分函数,本质上该打分函数描述Q和Ki之间的关系,它可以是一个小型的神经网络。常见的打分函数有点积模型,缩放点积模型,双线性模型等
softmax(f(Q,Ki)):经过softmax之后会形成一个概率分布,也就是得到了对于Q 各个 Ki 的权重。
加权求和:Att-V = 1ⅹK1+2ⅹK2+3ⅹK3+4ⅹK4+5ⅹK5
Soft AM:在求注意力分配概率分布的时候,对于输入句子X中任意一个单词都给出个概率,是个概率分布。
Hard AM:直接从输入句子里面找到某个特定的单词,然后把目标句子单词和这个单词对齐,而其它输入句子中的单词硬性地认为对齐概率为0。
除此之外还有全局注意力和局部注意力,此处不做过多介绍
优势:
不足:
coverage向量表示过往时刻的所有注意力机制的累加,其告诉模型,输入中哪些部分是已经被注意力关注过的,哪些没有。为了使得模型不过多地关注已经关注过的区域,所以将coverge向量作为下一步的注意力的构成部分,这样下一步生成的注意力分布就会有意识地减少已经关注过的区域的概率。
应用场景:
优点:
作用:
注意力机制可以作为一种编码机制,即:通过建立序列各元素之间的关联关系形成一种序列表示(按元素之间关系对序列进行编码);或通过不同序列元素之间的关联关系形成不同序列间的融合表示。注意力机制作为编码机制有以下几种:
单一向量编码:将输入序列按规则编码成单一向量表示。如,句表示/篇章表示 ,某词的上下文表示 等
不同序列间编码:将2个序列编码成二者的融合的表示序列, 如,匹配任务和阅读理解任务常用的融合层表示
同一序列自编码:利用多头自注意力编码对一个句子编码可以起到类似句法分析器的作用。如Transformer的编码端。
通过建立序列K各元素与Q之间的关联关系形成单一向量表示(按元素之间关系对序列进行编码)
应用:对序列中某元素的真正上下文编码
双向RNN语言模型实际是单独的两个相反方向的语言模型,并不能同时观察到上下文。采用注意力机制编码词的上下文是可以同时观察到的真正的上下文。
将二个序列编码成二者的融合的表示序列(如,匹配任务和阅读理解任务常用的融合层表示)
利用多头自注意力编码对一个句子编码可以起到类似句法分析器的作用。
Attention(Q,K,V),其中Q=K=V,其含义为在序列内部做Attention计算,寻找序列内部词与词之间的关联关系。
多头(Multi-Head)就是做多次同样的事情(参数不共享),然后把结果拼接。
多头自注意力编码对一个句子编码可以起到类似句法分析器的作用。注意力机制典型应用是Transformer,这部分内容会在后续的博客中更新。
这里有关于Attention的实验:NLP作业四:RNN+Attention实现Seq2Seq中英文机器翻译(Pytorch)【代码+报告】