Skip to content

Dynamic Coattention Network (Plus)

📅 发表于 2018/03/15
🔄 更新于 2018/03/15
👁️ 次访问
📝 0 字
0 分钟
自然语言处理
#DCN
#coattention
#QA

先放四张图,分别是DCN的Encoder、Decoder,DCN+的Encoder和Objective。后面再详细总结

Dynamic Coattention Networks For Question Answering

DCN+: Mixed Objective and Deep Residual Coattention for Question Answering

DCN

Coattention Encoder

Dynamic Pointing Decoder

HMN

DCN+

DCN的问题

loss没有判断真正的意义

DCN使用传统交叉熵去优化optimization,只考虑答案字符串的匹配程度。但是实际上人的评判evaluation却是看回答的意义。如果只考虑span,则有下面两个问题:

  • 精确答案:没影响
  • 但是对正确答案周围重叠的单词,却可能认为是错误的。

句子:Some believe that the Golden State Warriors team of 2017 is one of the greatest teams in NBA history

问题:which team is considered to be one of the greatest teams in NBA history

正确答案:the Golden State Warriors team of 2017

其实Warriors也是正确答案, 但是传统交叉熵却认为它还不如history

DCN没有建立起Optimizationevaluation的联系。 这也是Word Overlap。

单层coattention表达力不强

DCN+的优化点

Mixed Loss

交叉熵+自我批评学习(强化学习)。Word真正意义相似才会给一个好的reward

  • 强化学习会鼓励意义相近的词语,而dis不相近的词语
  • 交叉熵让强化学习朝着正确的轨迹发展

Deep Residual Coattention Encoder

多层表达能力更强,详细看下面的优点。

Deep Residual Encoder

优点

两个别人得出的重要结论:

  • stacked self-attention 可以加速信号传递
  • 减少信号传递路径,可以增加长依赖

比DCN的两个优化点:

  • coattention with self-attention和多层coattention 。可以对输入有richer representations
  • 对每层的coattention outputs进行残差连接。缩短了信息传递路径。

Coattention深层理解

当时理解了很久都不懂,后来一个下午,一直看,结合机器翻译实现和实际例子矩阵计算,终于理解了Attention、Coattention。

参考了我的下面三篇笔记。

单个Coattention层计算

经过双向RNN后,得到两个语义编码:文档E0DRm×e, 问题编码E0QRn×h

E1D=biGRU1(E0D)Rm×hE1Q=tanh(WbiGRU1(QE)+b)Rn×h

计算关联得分矩阵A

A=E1D(E1Q)TRm×n[0023021133]5×2[131113]3×2T=[0001151162642412612]5×3

行Softmax,得到Q对D的权值分配概率AQattention_weights

  • 每一行是一个文档单词w
  • 元素值是所有问句单词对当前文档单词w的注意力分配权值
  • 元素值是每个问句单词的权值概率
[0.33330.33330.33330.49940.00120.49940.49550.00910.49550.46830.06340.46830.49940.00120.4994]5×3

计算D的summary, SD=AQQ

SD=AQQ
  • D所需要的新的语义,参考机器翻译的新语义理解
  • AQ的每一行去乘以Q的每一列去表达单词w
  • 用Q去表达D,每个Dw都是Q的所有单词对w的线性表达,权值就是AQ
  • 所以SD也是D的summary, 也称作D需要context

同理,对列做softmax, 得到D对Q的权值分配概率AD, 得到Q的summarySQ=ADD

这时,借鉴alternation-coattention思想 去计算对D的Coattention contextCD

CD=SQAQ

实际上,CDSD类似,都是Summary, 都是context。 只是CD使用的是新的SQ, 而不是E1Q

Coattention Encoder总结

使用两层coattention, 最后再残差连接,经过LSTM输出。

第一层

E1D=biGRU1(E0D)Rm×hE1Q=tanh(WbiGRU1(E0Q)+b)Rn×hcoattn1(E1D,E1Q)=S1D,S1Q,C1Q

第二层

E2D=biGRU2(E1D)Rm×hE2Q=tanh(WbiGRU2(E1Q)+b)Rm×hcoattn2(E2D,E2Q)=S2D,S2Q,C2Q

残差连接所有的D

c=concat((E1D,E2D,S1D,S2D,C1D,C2D)

LSTM编码输出,得到Encoder的输出

U=biGRU(c)Rm×2h

Mixed Objective

总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025