一点关于cloze-style问题的简谈

一个小任务:给出一个问题和诺干个候选句子,从候选句子中选出答案,有没有好的实现方案?

一个小任务:类似于:“中国最大的内陆湖是哪个?”给出候选句子1.”中国最大的内陆湖,就是青海湖”2.“青海湖在中国内陆湖中最大的”等等 这种句子 然后根据句子找出答案 请问有什么实现的方案吗?

写了个答案,算是个科普向的,搬运到专栏

1 从“是什么”说起
这个问答属于传统的question-answer问题,比如例子上的

中国最大的淡水湖是___(转义,并不一定存在填空,但性质相同)

需要的结果,是补全出,青海湖这个结果

在英文中,我们称这种,给予一个query,回答一个词,作为“填空”,来回答的问题,称为“cloze style”的问题,来源于英语中的填字游戏

我们的input是一个query,一篇context,然后从文章中选取一个 存在于文章中的(point) 词,来做一个 填空 问题,将这个词作为output

现在,问题明确了,我们的任务,就是构建这个"端对端"的,input-output系统

2 从“为什么”谈谈

首先想说一说attention这个概念,以此导入后面的介绍

准确的描述请看

大神关于attention的回答


我们现在已经确定了两点

第一,我们所要找的"填空"词,必然是context中的一个

第二,判定这个词我们需不需要,主要取决与我们的query,也就是问题

那么很自然的就会想到,如果我们能够对context中的每个词,和这个query都构建一个函数,假设context = {word1,word2......},我们希望有一个量化的函数f(query,word_i) = value,然后我们只需要选择出max的那个词来进行"填空",就完成了

放到题目中,我们假设存在那么一个f

query:中国最大的淡水湖是哪一个?

f(query,青海湖) = 10

f(query,doge) = 1

f(query,野鸭湖) = 5

然后我们就max(),直接获得了青海湖这个答案

3 往"怎么做"说说

现在的问题变成了:

(1) 如何把这些离散的变量纳入函数去计算?

写过相关代码的,说一句embedding足够了,本质上就是用词向量去表达

简单解释一下,词向量就是用向量来把离散化的词来进行另一个形式的表达,比较好的词向量可以model到语义,具体来说就是,v1如果表达"青海湖",v2 表达 "抚仙湖",v3表达"青海".v4表达"云南",我们甚至可以直接做到v3 -v1 = v4-v2的神奇效果

但这显然不够

如果只是model到单个词,很大程度上浪费了文章信息,我们需要尽可能的涵盖上下文的意思,英文capture

我们希望,model出青海湖这个词的向量的时候,能包含"淡水湖,最大"之类的描述信息,这又如何做到呢

LSTM,时序神经网络RNN,一个经典的解决方案,embedding日常

看个热闹的话,这里,我们已经用一个向量表达了青海湖,还包含了一些它的属性信息,当然这个表达,只有计算机看得懂

(2) 如何构建合理的函数f?

第一篇开山的是这个

Teaching Machines to Read and Comprehend (Hermann et al., 2015)

Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu

蓝红部分做的就是所谓的capture的工作,也就是对词做了一个抽象,也对问题进行了一个抽象,在这个时候,训练了一个权重向量s,也就是attention

计算的思路也是非常清晰的,g就是我们之前试图寻找的那个f,表达的东西是一样的


秉承这个attention的思路,IBM搞出了一个更清晰的完全体,大概是1.0版本和1.1版本的关系,并且github上有完整的实现,能给一个比较好的参考

Text Understanding with the Attention Sum Reader Network (Kadlec et al., 2016)

Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu

网络的结构和计算非常简单,但是人家就有soa的效果

今年的Squad,stanford的全球性评测当中,科大讯飞andHIT和MSRA的两篇论文我记得第一第二,其中Aoa reader的论文和上两篇可以说是一脉相承的思路,只不过在对attention的利用上更近一层,MSRA的r-net有所不同,都是值得一读的文章,我在此贴一下paper的链接,这算是目前我知道的,这类问题的最好解决方案了

MSRA

aka.ms/rnet

Joint Laboratory of HIT and iFLYTEK Research

[1607.04423] Attention-over-Attention Neural Networks for Reading Comprehension

前一个复杂一些,后一个实现一下不难就是了,不过嘛,谁知道炼丹过程中有什么佐料呢


感谢观看

编辑于 2017-09-21
原文链接:https://zhuanlan.zhihu.com/p/29548295
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值