先放四张图,分别是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没有建立起Optimization
和 evaluation
的联系。 这也是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后,得到两个语义编码:文档
计算关联得分矩阵
A
做行Softmax
,得到Q对D的权值分配概率attention_weights
- 每一行是一个文档单词w
- 元素值是所有问句单词对当前文档单词w的注意力分配权值
- 元素值是每个问句单词的权值概率
计算D的summary,
- D所需要的新的语义,参考机器翻译的新语义理解
的每一行去乘以Q的每一列去表达单词w - 用Q去表达D,每个
都是Q的所有单词对w的线性表达,权值就是 - 所以
也是D的 summary
, 也称作D需要context
同理,对列做softmax
, 得到D对Q的权值分配概率summary
,
这时,借鉴alternation-coattention思想 去计算对D的Coattention context
实际上,Summary
, 都是context
。 只是
Coattention Encoder总结

使用两层coattention
, 最后再残差连接,经过LSTM输出。
第一层
第二层
残差连接所有的D
LSTM编码输出,得到Encoder的输出
Mixed Objective
