吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings

吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings

1 Word Representation


上節課咱們介紹過表徵單詞的方式是首先創建一個較大的詞彙表(例如10000),而後使用one-hot的方式對每一個單詞進行編碼。例如單詞Man,Woman,King,Queen,Apple,Orange分別出如今詞彙表的第5391,9853,4914,7157,456,6257的位置,則它們分別用O5391,O9853,O4914,O7157,O456,O6257表示。算法

這中one-hot表徵單詞的方法最大的缺點就是每一個單詞都是獨立的、正交的,沒法知道不一樣單詞之間的類似程度。例如Apple和Orange都是水果,詞性相近,可是單從one-hot編碼上來看,內積爲零,沒法知道兩者的類似性。在NLP中,咱們更但願能掌握不一樣單詞之間的類似程度。數據庫

所以,咱們可使用特徵表徵(Featurized representation)的方法對每一個單詞進行編碼。也就是使用一個特徵向量表徵單詞,特徵向量的每一個元素都是對該單詞某一特徵的量化描述,量化範圍能夠是[-1,1]之間。特徵表徵的例子以下圖所示:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
特徵向量的長度依狀況而定,特徵元素越多則對單詞表徵得越全面。這裏的特徵向量長度設定爲300。使用特徵表徵以後,詞彙表中的每一個單詞均可以使用對應的300 x 1的向量來表示,該向量的每一個元素表示該單詞對應的某個特徵值。每一個單詞用e+詞彙表索引的方式標記,例如e5391, e9853, e4914, e7157, e456, e6257。網絡

這種特徵表徵的優勢是根據特徵向量能清晰知道不一樣單詞之間的類似程度,例如Apple和Orange之間的類似度較高,極可能屬於同一類別。這種單詞「類別」化的方式,大大提升了有限詞彙量的泛化能力。這種特徵化單詞的操做被稱爲Word Embeddings,即單詞嵌入。app

值得一提的是,這裏特徵向量的每一個特徵元素含義是具體的,對應到實際特徵,例如性別、年齡等。而在實際應用中,特徵向量不少特徵元素並不必定對應到有物理意義的特徵,是比較抽象的。可是,這並不影響對每一個單詞的有效表徵,一樣能比較不一樣單詞之間的類似性。ide

每一個單詞都由高維特徵向量表徵,爲了可視化不一樣單詞之間的類似性,可使用降維操做,例如t-SNE算法,將300D降到2D平面上。以下圖所示:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
從上圖能夠看出類似的單詞分佈距離較近,從而也證實了Word Embeddings能有效表徵單詞的關鍵特徵。函數

2 Using Word Embedding


以前咱們介紹過Named entity識別的例子,每一個單詞采用的是one-hot編碼。以下圖所示,由於「orange farmer」是份職業,很明顯「Sally Johnson」是一我的名。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
若是採用featurized representation對每一個單詞進行編碼,再構建該RNN模型。對於一個新的句子:性能

Robert Lin is an apple farmer學習

因爲這兩個句子中,「apple」與「orange」特徵向量很接近,很容易能判斷出「Robert Lin」也是一我的名。這就是featurized representation的優勢之一。測試

能夠看出,featurized representation的優勢是能夠減小訓練樣本的數目,前提是對海量單詞創建特徵向量表述(word embedding)。這樣,即便訓練樣本不夠多,測試時遇到陌生單詞,例如「durian cultivator」,根據以前海量詞彙特徵向量就判斷出「durian」也是一種水果,與「apple」相似,而「cultivator」與「farmer」也很類似。從而獲得與「durian cultivator」對應的應該也是一我的名。這種作法將單詞用不一樣的特徵來表示,即便是訓練樣本中沒有的單詞,也能夠根據word embedding的結果獲得與其詞性相近的單詞,從而獲得與該單詞相近的結果,有效減小了訓練樣本的數量。優化

featurized representation的特性使得不少NLP任務能方便地進行遷移學習。方法是:

  • 從海量詞彙庫中學習word embeddings,即全部單詞的特徵向量。或者從網上下載預訓練好的word embeddings。
  • 使用較少的訓練樣本,將word embeddings遷移到新的任務中。
  • (可選):繼續使用新數據微調word embeddings。

建議僅當訓練樣本足夠大的時候,再進行上述第三步。

有趣的是,word embeddings與吳恩達《卷積神經網絡》精煉筆記(4)– 人臉識別與神經風格遷移中介紹的人臉特徵編碼有不少類似性。人臉圖片通過Siamese網絡,獲得其特徵向量f(x),這點跟word embedding是相似的。兩者不一樣的是Siamese網絡輸入的人臉圖片能夠是數據庫以外的;而word embedding通常都是已創建的詞彙庫中的單詞,非詞彙庫單詞統一用< UNK >表示。

3 Properties of Word Embeddings


Word embeddings能夠幫助咱們找到不一樣單詞之間的類似類別關係。以下圖所示:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
上例中,特徵維度是4維的,分別是[Gender, Royal, Age, Food]。常識地,「Man」與「Woman」的關係類比於「King」與「Queen」的關係。而利用Word embeddings能夠找到這樣的對應類比關係。

咱們將「Man」的embedding vector與「Woman」的embedding vector相減:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
相似地,咱們將「King」的embedding vector與「Queen」的embedding vector相減:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
相減結果代表,「Man」與「Woman」的主要區別是性別,「King」與「Queen」也是同樣。

通常地,A類比於B至關於C類比於「?」,這類問題可使用embedding vector進行運算。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
還能夠計算Euclidian distance來比較類似性,即||u−v||^2。距離越大,類似性越小。

4 Embedding Matrix


假設某個詞彙庫包含了10000個單詞,每一個單詞包含的特徵維度爲300,那麼表徵全部單詞的embedding matrix維度爲300 x 10000,用E來表示。某單詞w的one-hot向量表示爲Ow,維度爲10000 x 1,則該單詞的embedding vector表達式爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
所以,只要知道了embedding matrix E,就能計算出全部單詞的embedding vector ew。後面咱們將重點介紹如何求出E。

值得一提的是,上述這種矩陣乘積運算E⋅Ow效率並不高,矩陣維度很大,且Ow大部分元素爲零。一般作法是直接從E中選取第w列做爲ew便可。

5 Learning Word Embeddings


embedding matrix E能夠經過構建天然語言模型,運用梯度降低算法獲得。舉個簡單的例子,輸入樣本是下面這句話:

I want a glass of orange (juice).

經過這句話的前6個單詞,預測最後的單詞「juice」。E未知待求,每一個單詞可用embedding vector ew表示。構建的神經網絡模型結構以下圖所示:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
這種算法的效果還不錯,可以保證具備類似屬性單詞的embedding vector相近。

爲了讓神經網絡輸入層數目固定,能夠選擇只取預測單詞的前4個單詞做爲輸入,例如該句中只選擇「a glass of orange」四個單詞做爲輸入。固然,這裏的4是超參數,可調。

通常地,咱們把輸入叫作context,輸出叫作target。對應到上面這句話裏:

  • context: a glass of orange
  • target: juice

關於context的選擇有多種方法:

  • target前n個單詞或後n個單詞,n可調
  • target前1個單詞
  • target附近某1個單詞(Skip-Gram)

事實證實,不一樣的context選擇方法都能計算出較準確的embedding matrix E。

6 Word2Vec


上一小節咱們介紹了context和target的選擇方法,比較流行的是採用Skip-Gram模型。如下面這句話爲例:

I want a glass of orange juice to go along with my cereal.

Skip-Gram模型的作法是:首先隨機選擇一個單詞做爲context,例如「orange」;而後使用一個寬度爲5或10(自定義)的滑動窗,在context附近選擇一個單詞做爲target,能夠是「juice」、「glass」、「my」等等。最終獲得了多個context—target對做爲監督式學習樣本。

訓練的過程是構建天然語言模型,通過softmax單元的輸出爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
相應的loss function爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
而後,運用梯度降低算法,迭代優化,最終獲得embedding matrix E。

然而,這種算法計算量大,影響運算速度。主要由於softmax輸出單元爲10000個,y^計算公式中包含了大量的求和運算。解決的辦法之一是使用hierarchical softmax classifier,即樹形分類器。其結構以下圖所示:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
這種樹形分類器是一種二分類。與以前的softmax分類器不一樣,它在每一個數節點上對目標單詞進行區間判斷,最終定位到目標單詞。這比如是猜數字遊戲,數字範圍0~100。咱們能夠先猜50,若是分類器給出目標數字比50大,則繼續猜75,以此類推,每次從數據區間中部開始。這種樹形分類器最多須要log N步就能找到目標單詞,N爲單詞總數。

實際應用中,對樹形分類器作了一些改進。改進後的樹形分類器是非對稱的,一般選擇把比較經常使用的單詞放在樹的頂層,而把不經常使用的單詞放在樹的底層。這樣更能提升搜索速度。

最後提一點,關於context的採樣,須要注意的是若是使用均勻採樣,那麼一些經常使用的介詞、冠詞,例如the, of, a, and, to等出現的機率更大一些。可是,這些單詞的embedding vectors一般不是咱們最關心的,咱們更關心例如orange, apple, juice等這些名詞等。因此,實際應用中,通常不選擇隨機均勻採樣的方式來選擇context,而是使用其它算法來處理這類問題。

Skip-Gram模型是Word2Vec的一種,Word2Vec的另一種模型是CBOW(Continuous Bag of Words)。關於CBOW此處再也不贅述。

7 Negative Sampling


吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings

Negative sampling是另一種有效的求解embedding matrix E的方法。它的作法是判斷選取的context word和target word是否構成一組正確的context-target對,通常包含一個正樣本和k個負樣本。例如,「orange」爲context word,「juice」爲target word,很明顯「orange juice」是一組context-target對,爲正樣本,相應的target label爲1。若「orange」爲context word不變,target word隨機選擇「king」、「book」、「the」或者「of」等。這些都不是正確的context-target對,爲負樣本,相應的target label爲0。通常地,固定某個context word對應的負樣本個數k通常遵循:

  • 若訓練樣本較小,k通常選擇5~20;
  • 若訓練樣本較大,k通常選擇2~5便可。

Negative sampling的數學模型爲:

其中,σ表示sigmoid激活函數。

很明顯,negative sampling某個固定的正樣本對應k個負樣本,即模型總共包含了k+1個binary classification。對比以前介紹的10000個輸出單元的softmax分類,negative sampling轉化爲k+1個二分類問題,計算量要小不少,大大提升了模型運算速度。

最後提一點,關於如何選擇負樣本對應的target單詞,可使用隨機選擇的方法。但有資料提出一個更實用、效果更好的方法,就是根據該詞出現的頻率進行選擇,相應的機率公式爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
其中,f(wi)表示單詞wi在單詞表中出現的機率。

8 GloVe Word Vectors


GloVe算法引入了一個新的參數:

Xij: 表示i出如今j以前的次數,即i和j同時出現的次數。

其中,i表示context,j表示target。通常地,若是不限定context必定在target的前面,則有對稱關係Xij=Xji;若是有限定前後,則Xij≠Xji。接下來的討論中,咱們默認存在對稱關係Xij=Xji。

GloVe模型的loss function爲
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
從上式能夠看出,若兩個詞的embedding vector越相近,同時出現的次數越多,則對應的loss越小。

爲了防止出現「log 0」,即兩個單詞不會同時出現,無相關性的狀況,對loss function引入一個權重因子f(Xij):
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
當Xij=0時,權重因子f(Xij)=0。這種作法直接忽略了無任何相關性的context和target,只考慮Xij>0的狀況。

出現頻率較大的單詞相應的權重因子f(Xij)較大,出現頻率較小的單詞相應的權重因子f(Xij)較小一些。具體的權重因子f(Xij)選取方法可查閱相關論文資料。

通常地,引入偏移量,則loss function表達式爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
值得注意的是,參數θi和ej是對稱的。使用優化算法獲得全部參數以後,最終的ew可表示爲:
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
最後提一點的是,不管使用Skip-Gram模型仍是GloVe模型等等,計算獲得的embedding matrix E的每個特徵值不必定對應有實際物理意義的特徵值,如gender,age等。

9 Sentiment Classification


吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings

情感分類通常是根據一句話來判斷其喜好程度,例如1~5星分佈。以下圖所示:

情感分類問題的一個主要挑戰是缺乏足夠多的訓練樣本。而Word embedding偏偏能夠幫助解決訓練樣本不足的問題。

首先介紹使用word embedding解決情感分類問題的一個簡單模型算法。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
如上圖所示,這句話的4個單詞分別用embedding vector表示。e8928, e2468, e4694, e3180計算均值,這樣獲得的平均向量的維度還是300。最後通過softmax輸出1~5星。這種模型結構簡單,計算量不大,不論句子長度多長,都使用平均的方式獲得300D的embedding vector。該模型實際表現較好。

可是,這種簡單模型的缺點是使用平均方法,沒有考慮句子中單詞出現的次序,忽略其位置信息。而有時候,不一樣單詞出現的次序直接決定了句意,即情感分類的結果。例以下面這句話:

Completely lacking in good taste, good service, and good ambience.

雖然這句話中包含了3個「good」,可是其前面出現了「lacking」,很明顯這句話句意是negative的。若是使用上面介紹的平均算法,則極可能會錯誤識別爲positive的,由於忽略了單詞出現的次序。

爲了解決這一問題,情感分類的另外一種模型是RNN。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
該RNN模型是典型的many-to-one模型,考慮單詞出現的次序,可以有效識別句子表達的真實情感。

值得一提的是使用word embedding,可以有效提升模型的泛化能力,即便訓練樣本很少,也能保證模型有不錯的性能。

10 Debiasing Word Embeddings


Word embeddings中存在一些性別、宗教、種族等偏見或者歧視。例以下面這兩句話:

Man: Woman as King: Queen
Man: Computer programmer as Woman: Homemaker
Father: Doctor as Mother: Nurse

很明顯,第二句話和第三句話存在性別偏見,由於Woman和Mother也能夠是Computer programmer和Doctor。

以性別偏見爲例,咱們來探討下如何消除word embeddings中偏見。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
首先,肯定偏見bias的方向。方法是對全部性別對立的單詞求差值,再平均。上圖展現了bias direction和non-bias direction。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
而後,單詞中立化(Neutralize)。將須要消除性別偏見的單詞投影到non-bias direction上去,消除bias維度,例如babysitter,doctor等。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings
最後,均衡對(Equalize pairs)。讓性別對立單詞與上面的中立詞距離相等,具備一樣的類似度。例如讓grandmother和grandfather與babysitter的距離同一化。
吳恩達《序列模型》精煉筆記(2)-- NLP和Word Embeddings值得注意的是,掌握哪些單詞須要中立化很是重要。通常來講,大部分英文單詞,例如職業、身份等都須要中立化,消除embedding vector中性別這一維度的影響。

相關文章
相關標籤/搜索