[NLP论文阅读]A Neural Knowledge Language Model(一)

来源:互联网 发布:淘宝怎么发布图片 编辑:程序博客网 时间:2024/04/29 04:21

原文地址:A Neural Knowledge Model

摘要

现有的语言模型(Language Model)在对factual knowledge的编码(encode)和解码(decode)方面存在着明显的局限。原因是语言模型主要通过统计共现的方式来获得knowledge,但是大部分和知识有关的词是极少出现的。在本文中,作者提出了一个Neural Knowledge Language Model(NKLM),该模型将知识图谱提供的symbolic knowledge和RNN语言模型结合在一起。通过预测要生成的单词是否具有潜在的事实,模型可以通过从预测的事实描述中复制的方式来生成与知识相关的单词(knowledge-related words)。实验表明NKLM与现有模型相比,产生的未知单词数量更少。
我的理解就是一般的语言模型遇到训练时没有遇到过的单词时,就会出现unknown words,而NKLM希望通过将知识图谱与语言模型结合,当模型遇到训练是没有遇到的单词时,就能从知识图谱中得到附加的信息,从而减少预测中unknown words。

本文的主要贡献

  1. 提出NKLM模型使用知识图谱来解决传统语言模型处理事实类知识(factual knowledge)的不足;
  2. 提出了一个新的数据集WikiFact
  3. 通过实验说明NKLM能显著提升性能,能生成在传统模型中被当成unknown words对待的命名实体;
  4. 提出了一个新的评价指标,用来解决传统的困惑度(perplexity)指标不能有效处理unknown words的问题。

模型

1. 一些定义

一个topic可以由两部分组成:
对TOPIC的定义
topic knowledge是由一系列事实组成的集合,其中的每一个事实a都可以表示为一个三元组(subject, relationship, object),例如(Barack Obama, Married-To, Michelle Obama)。topic knowledge可以从Freebase这样的知识图谱中获得;
注意:同一个topic knowledge的所有fact的subject都是相同的,就是topic本身。

topic description是由一系列单词组成的序列,可以从维基百科中获得。
那么K个主题就可以表示为{(Fk,Wk)}Kk=1.

文中为topic knowledge中的每一个事实a定义了knowledge wordsOa=(oa1,oa2,...,oaN),NKLM在产生输出的时候可能会直接复制该单词序列中的单词。
那么什么样的词会在Oa中呢?
a=(Barack Obama, Married-To, Michelle Obama)
在该事实中,married-to是非常常见的词,那么该词可以通过我们维护的一个全局词典V来生成而不需要复制,作者将knowledge words限制在了三元组的Object这项中,那么上例中,Oa=(oa1="Michelle",oa2="Obama")
注意:所有Topic Knowledge都有一条特殊的事实(Topic, Topic_Itself, Topic),该事实是为了将topic与topic knowledge关联

我们用有监督的方法来训练模型,标签是单词及其基于的事实,那么这就需要将topic description中的单词与topic knowledge中的facts对齐。
举例来说,对于一个主题的F和W,我们使用字符串匹配的方法将W中的单词w与OF=UaFOa中所有单词进行匹配,如果w出现在knowledge wordsOa中,那么就将w和a相关联。
那么标签Y可以表示为

Y={yt=(wt,at,zt)}|W|t=1

其中zt是一个二值变量,用于表示wt的来源

这样的表示是不是意味着每个基于事实产生的wt都只能基于一个事实产生?

文中给出了一个例子
关于标签Y的举例

例子中的fact embedding ai都存放在一个knowledge memory矩阵中,并且该矩阵在训练过程中是不会变化的。

模型

这里写图片描述

  1. 输入:xt=fconcat(at1,wvt1,wot1)简单的进行连接。
    如果zt1=0,则wot1=0,否则wvt1=0.
    然后输入LSTM得到

    ht=fLSTM(xt,ht1)

  2. 然后通过htwt对应的事实at进行预测,其中ek是当前主题对应的可用事实,计算方式是取平均值。
    这里写图片描述
    通过ht,ek,可以得到检索的键值kfact,然后与当前所有可用的事实a进行概率分布的预测,找到使概率最大的事实at,作为wt要基于的事实。

  3. 通过ht,at计算zt来判断wt是从事实单词中复制还是从词典中生成
    这里写图片描述
    这里写图片描述

  4. 如果zt<0.5,那么就和普通语言模型一样,预测概率分布
    这里写图片描述
    如果zt>=0.5,那么wt就要从Oat中复制,这是作者没有采用预测概率的方式,而是对复制单词在Oat中的位置就行了预测。
    这里写图片描述
    这个方法和之前寻找事实at的方法很类似,就不在赘述。

目标函数

对于标签{Yk}Kk=1和对应的事实{Fk}Kk=1,最大化下面的目标函数
这里写图片描述
这里写图片描述
这里写图片描述
这个目标函数好像看懂了,数学不好就不评论了,希望能开源代码。

实验

未完待续。

0 0