放牧代码和思想
专注自然语言处理、机器学习算法
    正处于一个非常忙的阶段,抱歉不会经常回应任何联络

CS224n研究热点14 自动组合神经网络做问答系统

目录

hankcs.com 2017-07-13 下午4.29.41.png

这是自我组装推断的QA,可接受多种知识,包括图片和结构化知识库。问答具有复合性,很早就有人引入句法分析判断究竟在问什么,甚至脑洞大开想做自然语言编译器。但他们总是脱离不了手写规则的思维,白白糟蹋了性能卓越的句法分析器。而该模型自动组装多个神经网络用于逻辑推断,拿到了显著的好成绩。

四个 Jointly 训练的组件

hankcs.com 2017-07-13 下午4.34.11.png

利用这四个组件可以组装分析问题的逻辑流:

hankcs.com 2017-07-13 下午4.36.09.png

目标是训练模型自动分析query,组装逻辑组件。

模型:在两个分布上构建

hankcs.com 2017-07-13 下午4.40.44.png

一个Layout Model,选择问题的layout(应该是逻辑语句的“语法树”)。一个Execution Model,在world representation(应该理解为fact的表示)上执行layout。

Layout Model

这个模型的训练有3步,首先将输入句子解析为依存句法树:

hankcs.com 2017-07-13 下午4.42.18.png

第二步,将句法树的片段分配给合适的逻辑组件:

hankcs.com 2017-07-13 下午4.43.57.png

最后,将逻辑片段组装为完整的layout:

hankcs.com 2017-07-13 下午4.45.11.png

这个layout的root是and逻辑,每个句子可能有多个layout,接下来介绍如何为layout打分

Layout Scoring Model

得到问题的LSTM表示,以及特征表示,将两个表示传入多层感知机。每个时刻的梯度是layout的log-probability乘以该layout预测的准确率的梯度。

Execution Model

在知识库上面执行逻辑查询,输入结构化知识库中某种实体的所有representation,流入逻辑树输出每个备选答案的分值,取最大的那个。

hankcs.com 2017-07-13 下午4.55.03.png

Module: lookup

就是lookup table,去结构化知识库(数据库)取数据,查出实体的向量表示:

hankcs.com 2017-07-13 下午5.50.17.png

“把全部attention放到第$f(i)$个元素上,真是清丽脱俗的说法呢。

Module: relate

hankcs.com 2017-07-13 下午5.57.02.png

将attention从输入的一部分导向另一部分,条件中含有当前的attention$h$。公式没展开讲,详细看论文吧。

Module: find

hankcs.com 2017-07-13 下午6.00.53.png

也是把输入的特征拼接起来往多层感知机里面过一下然后softmax。这里的输入应当是遍历所有单词。

Module: and

有点像集合运算中的交集,只不过是在多个attention上做的乘法:

hankcs.com 2017-07-13 下午6.03.13.png

训练Execution Model

目标函数是给定world representation和layout下正确答案的最大似然:

hankcs.com 2017-07-13 下午6.05.40.png

结果

VQA

直观效果不错:

hankcs.com 2017-07-13 下午6.06.56.png

也拿到了最高分数:

hankcs.com 2017-07-13 下午6.07.42.png

GeoQA

在这个领域知识库上表现也很出色:

hankcs.com 2017-07-13 下午6.09.43.png

虽然在结构化知识库的手写特征利用上没有免俗,但总算自动化了“推断”这个被丑陋规则统治的部分。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n研究热点14 自动组合神经网络做问答系统

分享到:更多 ()

评论 欢迎留言

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

我的开源项目

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