这两个前BERT时期的模型可以说是把注意力玩出了花来,给我的感觉就像是穷尽算力和各种信息来推高准确率。但是,这两篇论文里有很多想法也是值得去思考的。通过学习这两个网络,我对注意力的运用模式有了更深的理解。
1.DCN+
这个网络是对DCN的优化。DCN是全称dynamic coattention networks,动态协同注意力网络。其大致的网络架构图如下图所示:
其中两个部分的encoder没什么好说的,只是在文本长度后加了一位称为哨兵位。Coattention encoder是作者称为“协同注意力”的对齐文章和问题的一种注意力运用机制,它的计算可以表示为:
-
首先计算相似(作者使用affinity而不是similarity来描述相似性)矩阵:
其中和分别代表文章和问题的编码矩阵。 -
接着,计算注意力的对齐:
-
计算对齐后的输出:
-
最后将和一起送入LSTM编码得到表示。
而“动态”则体现在计算结果时,
如上图所示,输出层由Highway Maxout Network和LSTM构成,其中HMN作为一种典型输出层不多做描述,有兴趣单独了解。这个结构的特点在于,它不将一次判断的结果作为输出,而是将上次的结果和LSTM的该层的计算作为输入迭代进行判断,迭代结束的条件时连续两次判断相同或到达最大迭代次数。
这个想法虽然计算量很大,而且由于其破坏了很多架构中LSTM的封装性,估计要自己再实现一遍,这样效率应该会降低,但是想法依然很有趣。
而DCN+,作者描述其做了两方面的改进,第一个是认为DCN只做了一次Attention过于淡薄,其引入两层Attention,并通过层之间的短路连接,使网络不至于过于庞大而无法训练,如下图所示:
可以看出基本的思路差不多,基本上就是引入了第二层Attention。
这篇论文的最闪光的想法在于另一点改进,作者认为:现有的对span类型的阅读理解问题,只针对起始位置进行分类预测是不适当的。
他认为在评价网络时,我们使用EM指标和F1指标,其中F1指标用来描述问题与答案的相似之处,但现在的网络基本就是对起始位置的一个N分类,而不考虑这些指标,这造成了训练目标和实际指标的割裂。
在他的举例中,若有问题“which team is considered to be one of the greatest teams in NBA history”,数据集给定的回答是“the Golden State Warriors team of 2017”,在现实中,回答“Warriors”实际上同样正确,但在网络中,这并不比回答“history”更好。
于是作者在传统的交叉熵损失函数外之外(这里看出他没用之前DCN的HMN),还用了强化学习的方法来对问题的相似度作为奖励,他认为这样可以让网络学习到回答真正的字面相近的答案,而且交叉熵也可以促进强化学习的轨迹让它知道是正确的。
2.FusionNet
这篇论文提出的模型,实际上就是对各种注意力机制进行了融合。
就是大杂烩,所谓把现有的东西全混在一起就是新的东西,但人家能混在一起也是本事,还能发出篇顶会,真实。
虽然这种混合技术意义不太大,但是作者对于前BERT时期最强的几个模型的注意力机制进行了研究,并将其分类,这个工作做的很漂亮,很有参考价值。
作者认为,阅读理解的核心思路就是对文章和问题进行融合,并通过融合从文章中获取答案。这些网络的信息融合方式可以如图中所示,分为以下几类:
(1) 单词级融合。提供了单词的直接信息,能够快速地聚焦关注的区域,例如简单地为每个单词附加一位,标注该单词是否出现在问题中。这种做法基本上是类似手工特征。
(2) 高层融合。比如,经过了LSTM的编码,这种特征再参与与文章的判断(一般通过注意力机制)。但高层信息可能会丢失一部分细节。
(2’) 可选的高层融合 。和(1)差不多,但添加的是经过编码的高层信息,直接与Context的Embedding进行拼接。
(3) 自增强融合。信息与自身进行聚合(Transformer是一个典型例子),被认为这样可以对更长的信息进行关联。一般可以在(2)之后进行这一步骤,可以扩展关注问题(question-aware)的感受野。
(3’) 可选的自增强融合。与上文中DCN提到的协同注意力机制和BiDAF中的机制一样,通过先对问题Q进行自增强融合,再将问题Q与文章进行高层融合。
作者对此提出的解释是,当人类阅读文章时,也会将文章中的各种元素抽象化,例如读到了“高山莱茵河”,会将其抽象为“一条欧洲的河”,更高层的抽象是“一条河”之类。但是,人类会将这些信息关联,而不会丢失底层的表示,因为这样会丢失细节。作者称原文加上各层级的抽象为“单词的历史记录”(History of Word,HoW),认为这种把各个层级的融合聚合在一起的方式是对HoW的一种“轻量级实现”。