吳恩達Deeplearning.ai 知識點梳理(course 5,week 2)

  本週主要講Word Embeddings,

Word Embedding Intro

Word Representation

這裏寫圖片描述
  之前我們表示word,都是採用one-hot進行表示。這種方式有一個缺點,就是詞和詞之間是正交的。但是事實上詞和詞之間是有關係的。舉個例子來說,I want a glass of orange ( ),一般就填juice,現在就算我們的language model學會了orange 和juice是一個poplar phrase,但是由於language model並不知道orange和apple是啥關係,也不知道orange和apple的關係,與orange和man/woman/king/queen的關係相比,是不是更近一些,所以很難在apple juice這個phrase上邊泛化。這就是用one-hot編碼後正交帶來的問題。
這裏寫圖片描述
  在這種情況下,可以採用另一種表達法:Feature Representation,也就是Word Embedding。它是列舉一些通用的Feature,例如Gender,Royal,Age等,給每一個詞彙進行一個打分,例如Man的Gender是-1,Woman的Gender是+1,King是-1,Queen是+1,而Apple和Orange則應該爲0。在這種表示法下,Apple和Orange之間的相似度則更有機會比Woman和Orange之間的形似度大。
這裏寫圖片描述
  如果我們採用t-SNE的方式把Feature Representation的word降維繪製出來,則會發現他們能夠一組一組的聚在一起。同時King和queen之間的差別,與man和woman之間的差別類似。Word Embedding這個詞的意思就是將Word潛入到一個Feature空間中。

使用Word Embeddings

  使用Word Embeddings的一個例子是姓名檢測:
這裏寫圖片描述
比方說神經網絡學習了S J is an orange farmer. Robert Lin is an apple farmer. 假如把apple換成了Duran,farmer換成了cultivator,也許你這個named entity recognition沒有訓練這個Duran cultivator,甚至有可能壓根沒見過Duran,cultivator這兩個詞,但是如果Word Embedding告訴說Duran和orange很像,cultivator和farmer很像,那麼這個時候就有可能也會把Robert Lin作爲named Entity檢測出來。Word Embeding算法本身可能是從一個巨大的語料庫裏進行學習,例如10億規模,或者千億規模的unlabeled的語料庫裏學習Duran和orange的關係。然後就可以採用word embedding來進行transfer learning。
這裏寫圖片描述
因此利用word embedding的流程就如同上邊所示。
這裏寫圖片描述
  一個和word embedding比較類似的任務是face encoding。這個encoding和embedding其實是一個意思。face encoding其實就是將face經過Siamese network映射到一個vector上,然後進行對比。

Word Embedding 的性質

  Word Embedding 有一個很有趣的性質。那就是類比:
這裏寫圖片描述
  在Feature Space中,woman-man king-queen,其實也就是說woman和man的差別主要是在性別上。而king和queen的差別也是主要集中在性別上,因此這兩個的差異是相似的。所以可以有類比。一般來說類比的準確率在30%~75%左右。這樣我們便可以採用餘弦距離來進行相似度的度量:
這裏寫圖片描述

Formalize Word Embedding Learning

  說了這麼久,word embedding究竟究竟是如何形式化的呢?
這裏寫圖片描述
  事實上,word embedding learning就是學習一個embedding matrix E ,這個E 將one-hot vector變換到embedding的空間。通常來說,這個E 是隨機初始化的,然後通過優化得到最終的E

Word Embedding Learning

Learning Word Embeddings - Language Model

  學習word embedding的一個很好的方式就是採用學習language model的方法:
這裏寫圖片描述
  這個方法是先將各個word用E進行投影到embedding的空間,然後stack起來,用一個softmax來預測下一個詞是什麼。softmax當然也是有自己的w和b。由於整個模型希望用很少的feature,例如300,來表達數萬詞彙,然後network發現有的時候會出現apple juice,有的時候會出現orange juice,因此會將apple等水果變成比較相似的向量。
這裏寫圖片描述
  進一步,如果是訓練language model,那麼確實需要用last 4 words,但是如果是學習word embedding,那麼就可以把target word附近進行學習,例如前後各4個詞,例如a glass of orange ? to go along with. 甚至也可以Last 1 word,例如看到了orange,那下一個詞是啥?更神奇的是Nearby 1 word,假如看到了glass,那下一個詞是啥?這個叫做skip-gram model。這種nearby 1 word,也可以work很好。

Word2Vec Skip-gram model

這裏寫圖片描述
  正如上邊所講的,Word2Vec Skip-Gram model就找到一個target,然後在context裏邊隨機採樣。然後拿去softmax做訓練。
這裏寫圖片描述
  就是上圖這種。softmax就是softmax,沒啥特別的。
這裏寫圖片描述
  但是這個算法的問題是如果真的這麼算,這個計算量會非常大,比方說10000個素材,那個分母就得計算10000個,如果是100B,那就不得了了。所以會採用softmax tree的方式,這樣就可以logN的複雜度了。另外softmax tree也不是平衡的tree,而是根據出現概率的大小來的。
  另外是如何進行contex 採樣?因爲a啊,the啊,都比容易出現,我們不想每次更新太多a,所以一般不是採用均勻採樣的方式,而是採用經驗法來balance一下common word和非common word。

Negative Sampling

  Negative Sampling和Word2Vec很像,但是大大簡化了計算量:
這裏寫圖片描述
  這個是首先採集一個context word,然後從context裏邊選一個target word,然後再從詞典裏邊隨機選4個(large dataset)到20個(small dataset),然後做1,0預測。
這裏寫圖片描述
  所以相比較而言,這個就簡單了很多。這個問題相當於在問,我選了一個context word,那麼word1是不是target word?word2是不是target word。相比計算10000個word,我們只需要計算5個左右的logistic regression就可以了。
  如何進行採樣呢?作者給出了建議:
這裏寫圖片描述
  就按照出現的頻次取power(*, 3/4)就可以了。

GloVe

  GloVe算法在自然語言處理社區也有很多擁躉。GloVe算法非常簡單。
這裏寫圖片描述
  首先是計算出target i在context c裏邊出現的次數。
然後做如下的優化:
這裏寫圖片描述
  其實就是想用θiTej 預測次數log(Xi,j) ,換個形式eθiTej 來預測次數Xi,j ,所以也是logistic regression的一種形式。同時由於這裏邊θiej 是對稱的,所以最後結果就直接去一個平均數就可以了。
這裏寫圖片描述
  值得指出的是,用word embedding學習來的E 並不一定對應於我們人能夠理解的Feature,很有可能是變換過的。其實就跟CNN選特徵一樣。我們也不知道到底選了那些特徵,爲啥選這個特徵。

Word Embedding 的應用

情感分類

這裏寫圖片描述
  情感分類最大的問題是數據量不足。因此我們採用word embedding的方式進行:
這裏寫圖片描述
  一個簡單的例子就是直接把詞彙投射到embedding的空間裏,然後vector做一個平均,然後使用softmax做分類,這樣能夠解決變長的問題。但是一個比較有問題的是,假如一句話裏邊有一個否定詞,然後剩下都是好好好,那很可能也到一個錯誤的結果。因此這裏可以採用RNN的方法:
這裏寫圖片描述
  這樣就有更好的曲面能夠擬合了。這裏需要說明的是,如果lacking換成了absent,由於使用了word embedding,因此也能得到一個很好的效果。

Word Embedding帶來的歧視

這裏寫圖片描述
  有的時候Word Embedding會出現一些歧視,比方說Man對應程序猿,Woman對應家庭主婦。其實這個是因爲統計概率導致的。但是從公平上講,Woman應該對應女程序猿。由於AI系統今後可能會指導決策,因此一箇中立的AI系統是非常重要的。
這裏寫圖片描述
  消除歧視一般分爲3步,第一步是找到bias的方向,比方說eheesheemaleefemale ,然後求個平均,這樣就能到到bias的方向。第二步,使用SVD將有問題的向量投射到垂直於bias的子空間裏邊,這樣就消除了bias。第3步,均衡化,有的時候投射完了,會導致一些詞彙距離另一些詞彙的距離發生變化,帶來新的bias,例如baby sitter距離grandma比grandpa更近,因此要將grandma和grandpa調整一下,使得距離相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章