关键词
Bi-GRU, attention sum
来源
arXiv 2016.03.04 (published at ACL 2016)
问题
如何利用 attention 机制直接选择答案
文章思路
主要分为以下几步:
- 通过 look-up table 将 document 和 query 每个词转化为向量表示
- document 部分利用双向 GRU 来 encode,每个 token 都是由前向后向的隐层状态拼接而成;query 都是用前向和后向的 GRU 的 last hidden state 连接在一起来表示的。
- 将上面得到的 document 中每个词的向量与 query 的向量做点积,并利用 softmax 得到概率分布。
- 将相同的词的概率加起来,选择概率最大的词作为答案。
资源
论文地址:https://arxiv.org/abs/1603.01547v1.pdf
相关工作
本文的模型算是 Attentive Reader 的简化版本,同时借鉴以下工作:
Memory Networks 在候选词周围开一个大小为 8 的窗口,然后直接将窗口内的词向量相加,显然不能捕获窗口外的信息。
Pointer Networks 这种架构能够解决输出与变长的输入有关的问题,比如对变长序列分类、组合优化问题 (Travelling Salesman Problem)。传统的 attention 是为了将 encoder 的隐层组合成一个 context vector,这一模型通过 attention 作为指针去选择输入的某个部分作为输出。
简评
文中直接利用 attention 机制选择答案,模型就比较偏爱出现次数多的词,这就隐含了出现次数比较多的词作为答案的可能性大的假设。
另外实验得到了一些有趣的结论,比如:在CNN/Daily Mail数据集上,随着document的长度增加,测试的准确率会下降,而在CBT数据集上得到了相反的结论。从中可以看得出,两个数据集有着不同的特征,构造方法也不尽相同,因此同一个模型会有着不同的趋势。