NLP学习笔记(6)

  • 我们希望把多个单词组成的短语同样在词向量的空间中找到对应的向量,当然你也可以在不同的空间中,但是如果在同一空间中是有好处的 ,我可以利用该空间捕捉到短语与单词之间意思的相似度,比如the man on the snowboard 和 snowboarder。但是你不可能为每一个短语定义一个向量,即使为每一个单词定义一个词向量都不能完全实现,所以为了实现在这个空间中找到这个意思对应的向量,我们要借助principal of compositionality,这个是语言学的一个有名的原则,大概是说,你可以利用一个合成函数,利用短语或句子中每个单词的意思,来得到短语或句子的意思。如果找到了这样一个函数,它可以以两个语义为输入,产生一个新的语义,这个函数将可以产生两个结果,一个是合成的语义,一个是合成语言结构。如果事先知道一个句子的树状结构的前提下,就可以根据这个树状结构来合成语义。这个tree structure的recursive network没有流行起来的原因在于,如果要对每个句子建立不同的树结构,训练的梯度传导是个问题,还有就是GPU不友好。还有一种结构是上节课讲的卷积神经网络,它只是简单地对所有相邻单词实施合成,而不考虑句子的结构。
  • 这个图说明了recursive和recurrent的区别 NLP学习笔记(6)_第1张图片
  • 如果我们事先不知道句子的结构,为了实现recursive,我们需要这样一个函数,输入两个词向量,输出合成的向量和一个分数,这个分数用来评估这个结构是否合理,也就是说是否应该把这两个向量合成为一个向量NLP学习笔记(6)_第2张图片
  • 这个合成函数的一个形式如下 NLP学习笔记(6)_第3张图片
  • 如何利用这个函数来生成树状结构:一种方法是用一种类似受限哈夫曼数的贪婪策略来生成,每一步都看所有相邻两个向量的分数,找到最高的分数,合并为一个新的向量,然后继续这个过程直至剩下一个向量。也可以有别的方法像beam search之类的,但是这些方法都不能保证找到的tree结构是最优的,除非进行全局搜索,但是这是指数级的时间复杂度,所以一般还是采取一些次优但是效率高的策略
    NLP学习笔记(6)_第4张图片
  • 最终我们会得到一个树结构,为了计算这个树结构的分数我们要把所有节点的分数加起来。损失函数是这样的:我们有一个target的树结构,还有一个模型根据贪婪策略生成的树结构,这两个树结构都可以算分数,用模型生成的树结构的分数减去target的树结构的分数得到loss,只有当target的树结构的分数就是模型生成的树结构的分数时loss会最小化,下图是这个loss的max-margin形式,但是总觉得这个loss函数减反了,后面那个应该是被减数。。因为后面的是模型的预测。NLP学习笔记(6)_第5张图片
  • 但是上述合成函数有两个问题,一个问题是用于合成的两个单词之间没有交互,一个是我们用同一个W来对各种各样的单词对进行合成,形容词和名词组成的单词对与介词和名词组成的单词对显然应该用不同的合成函数才对,为了解决第二个问题,提出了下述方法NLP学习笔记(6)_第6张图片
    ,找到了方法去分割syntax(语法)和semantics(语义)。用CFG来标记每个单词的词性,然后对不同词性组合的两个vector应用不同的W,并且分析合成的vector的词性。也就是说,语法部分交给传统语言模型,语义部分交给深度学习。
  • 关于第一个问题的解决办法是一种称为matrix-vector recursive neural network的方法,每个单词的表示由一个vector和一个matrix组成,当用合成函数去融合两个单词时,用第一个单词的vector去乘以第二个单词的matrix得到一个vector,第二个单词的vector乘以第一个单词的matrix得到第二个vector,再将这两个vector送进合成函数生成新的vector NLP学习笔记(6)_第7张图片
  • 此外还需要得到新的matrix,是通过下图的方法得到的 NLP学习笔记(6)_第8张图片
  • 此外再记一下research highlight的内容,是用强化学习来做nlp的。有一个观点我觉得比较值得记:问答系统中,最高概率的回答不代表最好的回答,好的回答要有以下几个特点:NLP学习笔记(6)_第9张图片

你可能感兴趣的:(NLP,深度学习,nlp)