1. 程式人生 > >深度學習筆記——理論與推導之Structured Learning【NLP】(十二)

深度學習筆記——理論與推導之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萬維:
    這裡寫圖片描述
    那麼關於這個“魔君名叫__”就會變成:
    這裡寫圖片描述