向量建模
本期我们将介绍 KB-QA 传统方法之一的向量建模(Vector Modeling),我们以一
个该方法的经典代表作为例,为大家进一步揭开知识库问答的面纱。该方法来自
Facebook 公 司 Bordes A, Chopra S, Weston J 的 论 文 Question answering with
subgraph embeddings(文章发表于 2014 年的 EMNLP 会议)。
向量建模的核心思想
向量建模方法的思想和信息抽取的思想比较接近。首先根据问题中的主题词在知
识库中确定候选答案。把问题和候选答案都映射到一个低维空间,得到它们的分
布式表达(Distributed Embedding),通过训练数据对该分布式表达进行训练,使
得问题向量和它对应的正确答案向量在低维空间的关联得分(通常以点乘为形式)
尽量高。当模型训练完成后,则可根据候选答案的向量表达和问题表达的得分进
行筛选,找出得分最高的作为最终答案。
此时,你的心中可能会出现两个问题,一是如何将问题和答案映射到低维空间,
显然我们不能仅仅将自然语言的问题和答案进行映射,还要将知识库里的知识也
映射到这个低维空间中(否则我们就只是在做 QA 而非 KB-QA 了)。第二个问
题是,如果做过类似工作(one-shot,imgae caption,word embedding 等)的朋友
应该知道,使用这种方法是需要大量数据去训练这个低维空间的分布式表达的,
而 KB-QA 中的 benchmark 数据集 WebQuestion 只含有 5800 多个问题答案对,这
样的数据是难以训练好这种表达的。
接下来,就让我们带着这两个问题,一起看看作者是怎么解决的。
如何用分布式表达表示答案和问题
问题的分布式表达:首先我们把自然语言问题进行向量化,作者将输入空间的维
度 N 设置为字典的大小+知识库实体数目+知识库实体关系数目,对于输入向量
每一维的值设置为该维所代表的单词(当然这一维也可能代表的是某个实体数目
或实体关系,对于问题的向量化,这些维数都设置为 0)在问题中出现的次数
(一般为 0 或 1 次),可以看出这是一种 multi-hot 的稀疏表达,是一种简化版的
词袋模型(Bag-of-words model)。
答案的分布式表达:我们想想可以怎样对答案进行向量化,最简单的方式,就是
像对问题一样的向量化方式,使用一个简化版的词袋模型。由于答案都是一个知
识库实体,那么这样的表达就是一个 one-hot 的表达,显然,这种方式并没有把
知识库的知识引入到我们的输入空间中。
第二种方式,我们把知识库想象成一个图,图的节点代表实体,边代表实体关系。
通过问题中的主题词可以定位到图中的一个节点,该节点到答案节点有一条路径,
我们把该路径上的所有边(实体关系)和点(实体)都以 multi-hot 的形式存下
来作为答案的输入向量。我们这里只考虑一跳(hop)或者两跳的路径,如路径
评论0
最新资源