论文原文:https://arxiv.org/abs/1406.3676
1. 向量建模核心思想
首先根据问题中的主题词在知识库中确定候选答案。把问题和候选答案都映射到一个低维空间,得到它们的分布式表达 (Distributed Embedding),通过训练数据对该分布式表达进行训练,使得问题向量和它对应的正确答案在低维空间的关联得分(通常以点乘为形式)尽量高。当模型训练完成后,则可根据候选答案的向量表达和问题表达的得分进行筛选,找出得分最高的作为最终答案。
需解决两个问题:
如何将问题和答案映射到低维空间。不能仅仅将自然语言的问题和答案进行映射,还要将知识库里的知识也映射到这个低维空间
这种方法需要大量数据 去训练,而 KB-QA中的benchmark数据集WebQuestion只含有5800多个问题答案对,这样的数据是难以训练好这种表达的。
2. 如何用分布式表达表示答案和问题
问题的分布式表达 :
首先把自然语言问题进行向量化,作者将输入空间的维度N设置为字典大小+知识库实体数目+知识库实体关系数目 ,对于输入向量每一维的值设置为该维所代表的单词 (当然这一维也可能代表的是某个实体数目或实体关系,对于问题的向量化,这些维数都设置为 0)在问题中的出现次数 (一般为 0 或 1 次),可以看出这是一种multi-hot的稀疏表达,是一种简化版的词袋模型(Bag-of-words model)
我们用q代表问题,用\(\phi (q)\) 代表N维的问题向量,用矩阵\(W\) 将N维的问题向量映射到\(k\) 维的低维空间,那么问题的分布式表达即\(f(q)=W\phi (q)\)
答案的分布式表达
最简单的方式就是像对问题一样的向量化方式,使用一个简化版的词袋模型。由于答案都是一个知识库实体,那么这种表达就是一个 one-hot 的表达,显然,并没有把知识库的知识引入到我们的输入空间中。
第二种方式,我们把知识库想象成一个图,图的节点代表实体,边代表实体关系。通过问题中的主题词可以定位到图中的一个节点,该节点到答案节点有一条路径,我们把该路径上的所有边(实体关系)和点(实体)都以multi-hot的形式存下来作为答案的输入向量。我们这里只考虑一跳(hop)或者两跳的路径,如路径(barack obama, place of birth, honolulu)是一跳,路径(barack obama, people.person.place of birth, location.location.containedby, hawaii) 是两跳。因此这种表示是一种3-hot或4-hot的表示。
第三种方式
在信息抽取篇介绍的信息抽取办法中,对于每一个候选答案,该答案所对应的属性(type/gender等)和关系都是能够帮助我们判断它是否是正确答案的重要信息,因此我们可以把每个候选答案对应的知识库子图(1跳或2跳范围)也加入到输入向量中,假设该子图包含C个实体和D个关系,那么我们最终的表达是一种3+C+D-hot或者4+C+D-hot的表达。和信息抽取方法一样,我们也对关系的方向进行区分,因此我们**输入向量的大小变为字典的大小+2*(知识库实体数目+知识库实体关系数目)。**
同样的,我们用\(a\) 表示答案,用\(\psi (a)\) 表示答案的输入向量,用矩阵\(W\) 将答案向量映射到\(k\) 维的低维空间,答案的分布式表达即\(g(a)=W\psi (a)\) 。
3. 向量得分
最后我们用一个函数表征答案和问题的得分,我们希望问题和它对应的正确答案得尽量高分,通过比较每个候选答案的得分,选出最高的作为正确答案。得分函数定义为二者分布式表达的点乘,即\(s(q, a)=f(q)^T\cdot g(a)\) 。
上述整个流程如下图所示
4. 如何训练分布式表达
对于训练数据集\(D=\lbrace (q_i,a_i),\ ....\rbrace\) ,我们定义 margin-based ranking 损失函数,公示如下 其中\(\bar a\) 表示负样本集\(\bar A\) 中的一个负样本(错误答案),m 是一个值为 0.1 的 margin。最小化这个损失函数,意味着我们希望正确答案和问题的得分要比任意错误答案的得分高出一个 margin
5. 总结
可以看出,相比信息抽取和语义解析的方法,该方法几乎不需要任何手工定义的特征(hand- crafted features),也不需要借助额外的系统(词汇映射表,词性标注,依存树等)。相对来说,比较简单,也较容易实现,能取得39.2的F1-scor e得分(斯坦福13年的语义解析方法只有35.7)也说明了该方法的强大性。通过自动化的方式扩展数据集和多任务训练也部分解决了实验数据不足的缺点。
然而,向量建模方法,是一种趋于黑盒的方法,缺少了解释性(语义解析可以将问题转化成一种逻辑形式的表达,而信息抽取构造的每一维特征的含义也是离散可见的),更重要的是,它也缺少了我们的先验知识 和推理 (可以看出其F1-score略低于14年使用了大量先验知识的信息抽取方法,该方法F1-score为42.0),事实上,这也是现在深度学习一个比较有争议的诟病。
就篇论文的向量建模方法来说,也存在一些问题,比如对问题的向量表示采用了类似词袋模型的方法,这样相当于并未考虑问题的语言顺序(比如 “谢霆锋的爸爸是谁?” 谢霆锋是谁的爸爸? 这两个问题用该方法得到的表达是一样的,然而这两个问题的意思显然是不同的),且训练分布式表达的模型很简单,相当于一个两层的感知机。
-------------本文结束 感谢阅读-------------