深度学习笔记——理论与推导之Structured Learning【NLP】(十二)

Language Technology

Meaning of Word(一个vector表示一个word)

Predicting the next word

给一串sequence of words,预测下一个单词
这里写图片描述

  • 我们现在要做的就是将wi-1和wi-2描述成一个feature vector,1- of -N encoding:
    假设只要对着几个词汇做word2vec:lexicon = {apple,bag,cat,dog,elephant}
    那么,apple=[1 0 0 0 0],The vector is lexicon size,每一个dimension对于一个word。
    这里写图片描述
  • 接下来我们要通过wi-2和wi-1来预测wi,这个NN的input是wi-2和wi-1,output是下一个单词wi的可能是某个word的几率。
    这里写图片描述
  • 接下来如何训练这个NN呢?
    首先通过爬虫下载一些博文,通过如下方法设置NN,(如输入“这里”“是”,输出为“八”,即Minimizing cross entropy)
    这里写图片描述
  • Word Vector:
    这里写图片描述
    1. input一个word:有关系的词汇的hidden layer的output会是非常相近的,这样最后输出的结果才会相近:
      这里写图片描述
    2. input两个word:
      下面input到hidden layer中,颜色一样的箭头,代表它们的weight是一样的:
      这里写图片描述
      像下图那样,减少参数量,令W1=W2=W,带来的好处是,我们不用再担心要考虑几个word,因为即使我们考虑10个word,在这个方法上也只是10个word相加,并不会导致weight的数量增加10倍。
      这里写图片描述
      那么我们应该如何update weights呢?
      这里写图片描述
  • 这种找Word Vector的方法除了Predict next word还有Various Architectures方法(如Continuous bad of word(CBOW) model或者Skip-gram)。
    这里写图片描述
  • 但如果词汇难以穷举呢?
    • 加上“other”的dimension,但这样就不能把不同的word分开。
    • 在英文中字母是可以穷举的,所以把26x26x26作为一个dimension。
      这里写图片描述
  • Word Vector:
    word和word之间的差,可以代表两个word之间的关系:
    这里写图片描述
    这个发现可以用来做推理,即:
    这里写图片描述

Meaning of Word Sequence(一个vector表示一个word Sequence)

  1. 用一个固定长度的vector表示不同长度的word sequences,这个word sequence可能指的是一个文章或者是一个段落:
    这里写图片描述
  2. Outline:
    • Deep Structured Semantic Model(DSSM):Application——Information Retrieval(IR)
    • Recursive Deep Model:Application——Sentiment Analysis
    • Paragraph Vector:Unsupervised

Information Retrieval(IR-DSSM)

  • Vector Space Model:我们把document都变成space上面的点,query也是一个点,在搜寻的时候,我们就计算query和其他document之间的夹角,如果夹角很小,说明他们的关联性是很高的,这可能就是我们搜索出来的内容。那么我们如何将,一个query、一个document如何用一个vector来表示它。
    这里写图片描述
  • 最常用的方法就是Bag of word(这个方法无视word前后顺序的问题,所以Bag of word有一个问题,就是如果出现的词一样,那么即使对应顺序不一样,也会是同一个vector):我们有一个vector,这个vector的一个dimension就对应一个word,如下:
    这里写图片描述
    每一个word都会乘以一个IDF(每一个word的重要性)
  • Vector Space Model + Bag-of-word:
    缺点:Bag-of-word中每一个dimension都是没有关系的,所以Bag-of-word其本质上就是在看query和document中有多少词重合,选择词重合数最多的,没有考虑到query和document的背后是在讲什么
    这里写图片描述

IR-Semantic Embedding

  1. Bag-of-word feature通过进一步处理,用一个DNN,将Bag-of-word feature变成一个low dimension的feature,而这个feature就是用来表达document or query的语义。
    下面不同颜色的点,代表不同主题的新闻:
    这里写图片描述
    然而,现在的问题就是我们不知道input bag-of-word后的target是什么。
  2. DSSM:
    • 通过在网页搜索中,记下点击了哪个网页,如下,比如输入query q1时document d1被点击了,那么,document d1和query q1之间的夹角就会更相近,而document d2和query q1之间的夹角就会差别更大,如下(下面六个都是同一种模型):
      这里写图片描述
    • Typical DNN vs DSSM:
      Typical DNN是有一个确切的target。
      DSSM没有指定document和query的output要长什么样子,只要query和所要的document方向一样就好。
      这里写图片描述
    • 有了Click data后,我们就可以learn一个DNN出来,首先,我们将document都通过DNN变成一个low dimension的vector,然后输入一个query,将query通过DNN一样得到一个vector,然后计算它和document之间的夹角,把夹角小的输出来。
      这里写图片描述
    • 卷积的DSSM:
      这里写图片描述

Sentiment Analysis(Recursive Deep Model)词汇顺序问题

  1. 词汇顺序问题很重要(而仅仅使用Bag-of word并不能解决这个问题):
    这里写图片描述
  2. 首先要知道word sequence背后的文法结构,very+good是一个偏移,not good就是一个更大的偏移
    这里写图片描述
  3. 所以现在给我们一个word sequence,我们可以轻易知道它的文法结构。接下来每一个word,我们都可以用vector来描述它。我们怎么知道”very”和”good”的vector长什么样呢?我们现在可以将它经过一个NN,这个NN输入是2倍的Z,输出是一倍的Z(vector的大小是|Z|)。
    这里写图片描述
    那么为什么不直接把very的vector和good的vector直接相加呢?因为V(wA,wB) ≠V(wA) + V(wB)。因为”not”是中性词,”good”是正向词,而”not good”确实负向词。说明这vector之间是不能叠加的。
    这里写图片描述
    灰色代表的是中性词,蓝色代表的是正向词,橙色代表的是负向词。我们可以做到not的时候,reverse another input。
    这里写图片描述
    深蓝色是在强化这个正向词,深红色是在强化这个负向词。我们可以做到very的时候,emphasize another input。
    这里写图片描述
    今天我们可以用V(“good”)和V(“very”)作为NN的input,而output是V(“very good”),我们又可以用V(“not”)和V(“very good”)做为input得到V(“not very good”)。这样词序就被考虑进去了,因此但词序改变的时候,所代表的序列也会改变。
    这里写图片描述
    那我们应该如何learn这些NN呢?
    这里是为了看看这篇文章是正向还是负向的,我们发现不同长度的句子中,Negative,Neutral,Positive,Very Negative,Very Positive等的分布。我们看到当句子比较短的时候,是比较不容易判断句子表达正向还是负向的,所以当句子比较短的时候,Neutral的数量比较多。
    这里写图片描述
    这里写图片描述

Paragraph Vector(Unsupervised)

  1. 不需要任何的Training Data
  2. 这里,我们以填词做为例子,通过xi-1和xi-2判断下面的xi:我们的输入是两个值xi-1和xi-2,输出就是next word xi,因此:
    这里写图片描述
  3. 我们发现上面的模型有一个问题,如果xi-2是魔君而xi-1是名叫,如:针对魔戒的魔君应该是Sauron,而仙剑5的魔君应该是姜世离,而由于xi-1和xi-2的值一样,所以xi得到的也会是一样的:
    这里写图片描述
  4. 针对上面问题,我们在word的基础上添加一个paragraph,我们把paragraph变成一个给定维度的vector,比如有10万个段落,那么就有10万维:
    这里写图片描述
    那么关于这个“魔君名叫__”就会变成:
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/sysstc/article/details/77162477
今日推荐