放牧代码和思想
专注自然语言处理、机器学习算法
    博主不用扣扣,公事请博客留言,私事请微博私信。开源项目一律GitHub见,发错地方恕不回复,谢谢。

CS224n笔记18 挑战深度学习与自然语言处理的极限

目录

障碍4:重复的词语表示

输入的词向量是一个词语表示,RNN或LSTM的隐藏状态到softmax的权值又是一个词语表示。这并不合理,为什么同一个单词非要有重复的表示呢?

解决方法

以前没人思考过两者的关系,就让它们独立吧。CS224n的学生决定将两者视作同一套参数矩阵tie起来,在训练语言模型的同时jointly训练词向量矩阵和softmax权值矩阵。

2017-07-14_14-57-57.png

效果

然后他们就用更少的参数拿到了更小的困惑度:

hankcs.com 2017-07-14 下午2.59.07.png

障碍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的输出,这样就可以根据场景决定问题在问什么了。

hankcs.com 2017-07-14 下午3.05.50.png

Coattention encoder

将document LSTM每个时刻(单词)的隐藏状态与query每个时刻的隐藏状态存成矩阵形式,左乘右乘得到两个矩阵,然后跟每个隐藏状态列向量相乘,拼接……混合充分后丢入另一个bi-LSTM合并。

hankcs.com 2017-07-14 下午3.13.14.png

据说是一作拼积木一样一点点尝试找出来的框架,个人觉得非常丑陋,以前手工试特征,现在手工试框架么。

将合并结果丢入所谓的Dynamic Decoder解码,之所以叫动态是因为每个token要运行多个step,取最大值。图中的s代表start token,e代表end token。

hankcs.com 2017-07-14 下午3.23.38.png

Stanford Question Answering Dataset

10万个文档-问题-答案pair,每个问题由多个可接受的答案,其中一些与原文一样(所以预测start end token是个可行方案)。

hankcs.com 2017-07-14 下午3.27.32.png

结果

hankcs.com 2017-07-14 下午3.36.49.png

论文发表时是首次将F1值推到80%以上的记录,后来MSR等人超越了这个分数。

一个可视化

hankcs.com 2017-07-14 下午3.40.28.png

多次decode之后得到了答案的正确起止位置。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n笔记18 挑战深度学习与自然语言处理的极限

分享到:更多 ()

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机