QA(三): 复杂attention机制(coattention及bi-attention)
来源:互联网 发布:it培训评价网 编辑:程序博客网 时间:2024/05/22 00:44
DCN-动态共同attention网络
两种模型都是类似的,不像前一篇文章介绍的soft attention机制,只是考虑query到context的attention
这里两篇论文都会考虑
query 到 context 和 context到query的attention
然后得到的attention回和原始的encoder向量进行作用,得到修正后的query和context的修正矩阵
然后这些修正后的矩阵和原始的encoder矩阵结合,进入到下面一层的模型预测层。
首先介绍的是coattebtion机制
DYNAMIC COATTENTION NETWORKS
https://arxiv.org/pdf/1611.01604.pdf
标签:相关性矩阵,互为attention,coattention
迭代,HMN,MLP
短文本效果佳
模型

上图是一个简单的图形,question 和 文本经过encoder之后,得到的向量经过 coattention机制在进行encoder,然后decoder得到结果
Passage AND QUESTION ENCODER
对文本passage 和question分别独立进行encoder
l 是LSTMcell的隐藏层大小,p和q分别是文本passage 和 问题question的长度
然后每个向量后面加上一个特殊的向量,作为模型的识别,得到
然后qustion经过一层非线性的网络,得到最终的encoder矩阵:
coattention encoder
首先计算一个相关性矩阵:
然后利用相关性矩阵,可以计算passage里面的每一个词和question的attention分数
以及question里面每一个词和passage里面每一个词的attention分数
这两个都是相互的attention score,权重score需要和原始的矩阵机型相乘计算。
我们对文本passage 进行summary,然后经过attention后得到question的修正向量矩阵:
然后我们利用question矩阵
这里的
最后一步:
利用passage的原始encoder信息
得到
整体的算法我们可以看

很清晰的总结了encoder线路
DYNAMIC POINTING DECODER
目的是预测答案在原始passage里面的start index 和 end index
之前讲的方式有个确定就是,答案可能有很多种方式,所以直接利用softmax或者序列模型,可能陷入局部解
这里对利用序列模型进行修正,增加适当的迭代,使得它能够跳出局部解
假设我们的迭代是基于LSTM:
其中
下面我们介绍
计算
start 和end的预估是独立的。
其中
Highway Maxout Netword计算的,它们的计算方式一致,但不共享参数
其中
然后
这样的方式我们可以得到

实验

迭代的效果:

看这两个case,从上到下是迭代的过程,我们可以看到,刚开始迭代,和迭代几步后它们的结果是不一样的,
比如第一个case,第一步的迭代是从第5个词开始,第22个词介绍;到第3步,start=21,end=22,这个正是我们的正确结果。
不同类型问题的效果
文本的长度:
在长文本上面表现不佳
question type:

when 最好,因为简单,
why 最差,因为复杂
Bi-Attention
BI-DIRECTIONAL ATTENTION FLOW FOR MACHINE COMPREHENSION
标签:相关性矩阵,bi-attention
迭代,softmax,MLP
模型

1. 底层 embedding 和 encoder机制基本一致:
不同的是这里加了 Charactor的 embedding
2. Attention 层
Attention Flow Layer
和Coattention的做法类似,也要先计算一个相关性矩阵
在Coattention中
这里构造的相似性矩阵稍微复杂点:
这种
就是先将p,q,p和q逐个元素点乘的向量concatenation,然后乘以权重矩阵 w
下面计算 Bi-attention:
一. passage context 到 query的attention
作用:修正query encoder向量,每一个query的向量是context里面每一个词对query向量作用后的加权和
- 计算context到query的attention
Ap=softmax(L)∈R[p,q] - 每一个contxt里面term的对于query权重系数
at=Apt: - 每一个词的权重分别和query向量做元素相乘之后,把所有词的结果向量相加,得到最终的query修正矩阵
Hqt:^=∑jatjHq:j
简单说就是,利用每个词读query的影响,整体修正query向量
二. query 到passage context的attention
- 计算 query对context里面每个词的 attention
b=softmax(maxcol(L))∈R[p] maxcol 是矩阵列里面最大的元素 - 利用attention对原始的context的每个词进行修正,进行权重和后得到一个向量
ĥ =∑tbtHpt:∈R[d] - 然后直接对这个d维的向量复制q次,得到和query shape一致的矩阵
Hp^=tileq(ĥ )
三. 对bi-attention向量进行统一处理
包含的信息:原始context encoder信息,用context to query attention修正后的query信息,用query to context attention修正后的context信息
本质上来说都是类似的机制
3. Modeling Layer
上衣层输出的是一个矩阵G
可以将G通过两层的bi-Lstm,得到ouput 举证 M
4. Output Layer
利用独立的softmax来预测start 和end index
然后total loss
至于start 和end是否要独立建模就不在这里复述
实验结果

整体看来效果要稍微比coattention好点
- QA(三): 复杂attention机制(coattention及bi-attention)
- attention 机制
- Attention机制
- attention机制
- 深度学习之OCR(三)——Attention机制_hard attention
- QA(二):利用Attention机制,带着问题阅读
- attention
- Attention
- Attention
- attention
- Attention
- Attention
- Attention
- Attention
- Attention
- 神经网络中注意力机制(Attention Mechanism)
- (Slide)Attention Mechanism注意力机制
- attention机制 深入理解
- 关于VB中的Trim函数浅析
- myeclipse中保存时自动格式化代码
- 二叉搜索树
- 面向对象程序设计上机练习十二(运算符重载)
- 二叉树- 二叉搜索树
- QA(三): 复杂attention机制(coattention及bi-attention)
- Pandas透视表(pivot_table)详解
- matlab中使用小波变换进行图像去噪
- mysql5.7官网直译锁操作优化--表锁的使用建议
- 假程序员启示录:房价
- springmvc 登陆后跳转到登陆前的界面
- 遗传算法求解TSP问题
- BZOJ1150(CTSC2007)[数据备份Backup]--贪心+链表+堆
- MySQL zip包使用安装、修改密码讲解