目录
障碍4:重复的词语表示
输入的词向量是一个词语表示,RNN或LSTM的隐藏状态到softmax的权值又是一个词语表示。这并不合理,为什么同一个单词非要有重复的表示呢?
解决方法
以前没人思考过两者的关系,就让它们独立吧。CS224n的学生决定将两者视作同一套参数矩阵tie起来,在训练语言模型的同时jointly训练词向量矩阵和softmax权值矩阵。
效果
然后他们就用更少的参数拿到了更小的困惑度:
障碍5:问题的输入表示是独立的
问题输入表示应当相关于fact的表示,比如May I cut you?根据场景是凶案现场还是超市排队的不同,表示也应该不同。
解决方案
Dynamic CoaaenQon Networks for QuesQon Answering by Caiming Xiong, Victor Zhong, Richard Socher (ICLR 2017)这篇论文提出用Coattention encoder同时接受fact encoder和query encoder的输出,这样就可以根据场景决定问题在问什么了。
Coattention encoder
将document LSTM每个时刻(单词)的隐藏状态与query每个时刻的隐藏状态存成矩阵形式,左乘右乘得到两个矩阵,然后跟每个隐藏状态列向量相乘,拼接……混合充分后丢入另一个bi-LSTM合并。
据说是一作拼积木一样一点点尝试找出来的框架,个人觉得非常丑陋,以前手工试特征,现在手工试框架么。
将合并结果丢入所谓的Dynamic Decoder解码,之所以叫动态是因为每个token要运行多个step,取最大值。图中的s代表start token,e代表end token。
Stanford Question Answering Dataset
10万个文档-问题-答案pair,每个问题由多个可接受的答案,其中一些与原文一样(所以预测start end token是个可行方案)。
结果
论文发表时是首次将F1值推到80%以上的记录,后来MSR等人超越了这个分数。
一个可视化
多次decode之后得到了答案的正确起止位置。