目录(配合文章底部的视频一起食用效果更佳,本篇笔记就是按照视频目录来的,有些潦草,望勿怪罪~)
1. attention:为了解决遗忘和对齐问题
2. 权重系数求法
- 如何找到一个向量q_t与h_1,h_2,h_3,h_4作比较? 【两种方式:一种是将h_t-1当成C,一种是将h_t当成C】
- 如何使用公式计算评分?
3. score函数
第一种计算相似度---内积
问题是编码和解码的维数不一致,无法做内积
中间可以加一个转换矩阵W,使得前后两个矩阵可以相乘,这就是第二种计算相似度的方式---乘法
第三种计算相似度的方式---训练神经网络
将x和y向量做拼接,全连接到中间层
总结(有时候会看到下面这3种说法,其实对应上面的3种情况)
attention score的计算主要有以下几种:
1.最常见的:点积(basic dot-product attention)
2.乘法: multiplicative attention
3.加法: additive attention复旦大学有个教授说乘法方式效果好,因为X和Y相关联了,W就反映了这种关联,而加法方式X和Y没有关联(看不懂就看着图中的神经网络仔细思考一下,X中的元素和Y中的元素没有发生关系)
4. 模型结构分析
下面的架构是soft-attention
用了双向结构(用双向的原因是某个单词和前后单词都有关联)
前向h和后向h拼接成h向量
三个成分参与运算:上一个时刻的输出(I)+ 上一个时刻的隐藏状态(S_t-1) + 输入句子的语义向量(注意力机制部分)(假如翻译成I am chinese,翻译到am时)
5. 模型公式的推导(上)
权重的求法推导
6. 模型公式的推导(下)
g(y_t-1, s_t, c_t)中,实际参与运算的是s_t, c_t和e(y_t-1),e(y_t-1)是y_t-1的embedding
maxout是激活函数,就是max运算,它实现了降维,2:1的降维
然后h_t经过W_0矩阵升维到O_t,O_t的维度和字典的大小一致,O_t是得分,再通过softmax归一化形成概率
和seq2seq的区别就是输入句子的语义向量发生了变化,其他都一样
7.对齐机制
目标句子中的每个单词和原句子中的所有单词存在着有某种关联(这种 假设/猜想 是合理的)
用热力图可视化后发现大致集中在对角线附近,(语言翻译有很大程度的对齐特性),因而attention具有有很好的的解释性
attention有两个优点:1)可以做到对齐 2)解决了长输入遗忘问题
8. 自注意力介绍
如果target=source,也就是对一个句子用attention先编码,再解码
这个过程其实干了这么一件事,探索句子中的每个单词和句子中的所有单词的关系,简言之,发现句子内部的关系,因而输出的到的单词向量是全局的特征表达,这就是self-attention
9.自注意力的理解
评分函数有两种方式
- 之前的做法:score(s_t-1, h_i)
- 现在:score(u, h_i) 在这里u是作为句子的表示来和每个单词的隐向量比较,u是参数,通过模型学习得到
对文档处理的时候,自注意力的做法还可以学习到整个文档的表示
参考视频:【深度学习】Attention机制/注意力模型/attention_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
这个视频讲的很好,很细很透彻,建议多看两遍,我的感觉是第一遍理解不到位,第二遍就好多了
还有别人做的attention笔记 Attention | 读书吧 (statist.cn)
这是这个老师的课 seq2seq 与attention机制 - 网易云课堂 (163.com)
这个老师的深度学习数学推导课,微信扫下面二维码获取
放上一些相关链接做补充
attention及变种:自然语言处理中的Attention机制总结_CODE and POEM-CSDN博客_attention