Sequence Models — week 2

Kevin Chiu
CodingJourney
Published in
3 min readAug 24, 2019

Week 2: Natural Language Processing & Word Embeddings

上一篇:week 1

下一篇:week 3

上一週的課程我們學到RNN, GRU, LSTM,這禮拜我們要將這些技術應用到Natural Language Processing(NLP)上面。

1. Introduction to Word Embeddings

1–1 Word Representation

關於字詞特徵,我們之前是用one-hot representation,但是單純這樣會看不出相似字詞的特徵,例如king-queen, apple-orange…,因此我們透過特徵矩陣將相似的字詞互相連結,如下左圖,最後得到t-SNE。

1–2 Using word embeddings

接著介紹將Transfer learning 應用在 word embedding,以下是NLP進行遷移學習的方法。

  • 從海量詞彙庫中學習word embeddings。或從網上下載預訓練好的word embeddings。
  • 使用較少的訓練樣本,將word embeddings遷移到新的任務中,並使用新數據微調word embeddings。

Andrew特別提到,word embedding與人臉特徵編碼(encoding)有很多相似性。人臉圖片經過Siamese網絡,得到其特徵向量f(x),其實跟word embedding是很類似。

1–3 Properties of word embeddings

舉剛剛的範例,我們有個四維特徵,分別是[Gender, Royal, Age, Food]。

利用Word embeddings可以找到這樣的對應類比關係: 我們將“Man”的embedding vector與“Woman”的embedding vector相減,也將“King”的embedding vector與“Queen”的embedding vector相減,結果呈現 “Man”與“Woman”的主要區別與“King”與“Queen”一樣,都是性別

關於相似函數,比較常用的是cosine similarity。其表達式為下圖右,其中Euclidian distance(||u−v||²)距離越大,相似性越小。

1–4 Embedding matrix

一個詞彙庫包含了10000個單詞,每個單詞包含的特徵維度為300,那麼embedding matrix即為300 x 10000,用E來表示。某單詞w的one-hot向量表示為Ow,維度為10000 x 1,則該單詞的embedding vector表達式為: ew=E⋅Ow 。

因此,只要知道embedding matrix (E),就能計算出所有單詞的embedding vector (ew)。通常這種矩陣乘積運算E⋅Ow效率並不高,矩陣維度很大,且Ow大部分元素為零。通常做法是直接從embedding matrix中選取適合的column,作為某個字的embedding vector,如下圖。

介紹完Embedding matrix,接著介紹實際的應用

2. Learning Word Embeddings: Word2vec & GloVe

2–1 Learning word embeddings

我們直接以一個範例來介紹流程

輸入: I want a glass of orange (juice). 通過這句話的前6個單詞,預測最後的單詞“juice”。 E未知待求,每個單詞可用embedding vector (ew)表示,構建的神經網絡模型結構如下圖。

每一個輸入 e 都是一個300維的嵌入向量,然後把這些全部填入一個神經網絡層,再把神經網絡接到一個softmax層。softmax會在詞彙表1萬種可能的輸出中,分類出 “那些我們試圖預測出的最終單詞”,在這個範例預測出的單字為“juice”。

實際上,更常見的做法是使用一個固定的參考字詞長度。比如,只看前四個單詞的歷史,這表示著你的神經網絡的輸入是一個1200維的特徵向量,進入這一層,然後有一個softmax來試圖預測結果,當然,也可以看前後四個單詞,如下圖。

2–2 Word2Vec

用下面句子為例,來了解Skip-Gram模型的做法,簡單來說,就是建立一個監督式學習模型。

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

先隨機選擇一個單詞作為context,例如“orange”;然後使用一個自定義寬度為5或10的滑動窗,在context附近選擇一個單詞作為target,像是“juice ”、“glass”、“my”…。最終得到多個context — target對作為監督式學習樣本。構建NLP模型,經過softmax單元的輸出如下圖P(t|c),θt為目標對應的參數,ec為上下文的嵌入向量,且ec =E⋅Oc。最後用梯度下降,迭代優化得到embedding matrix E。

這種方式計算量很大。主因為softmax輸出單元為10000個,y包含了大量的求和運算。解決的辦法之一是使用hierarchical softmax classifier。它在每個數節點上對目標單詞進行區間判斷,最終定位到目標單詞。這好比是猜數字遊戲,數字範圍0~100。我們可以先猜50,如果分類器給出目標數字比50大,則繼續猜75,以此類推,每次從數據區間中部開始。這種樹形分類器最多需要log N 步就能找到目標單詞,N為單詞總數。

實際應用中,樹形分類器(hierarchical softmax classifier)是非對稱的,通常選擇把比較常用的單詞放在樹的頂層,而把不常用的單詞放在樹的底層,來提高搜索速度。另外,一般不選擇隨機均勻採樣的方式來選擇context,而是使用其它算法來處理這類問題。理由是一些常用的介詞、冠詞(如the, of, a, and, to)等出現的頻率更高,但它們往往不是我們最關心的。名詞,動詞才是我們注重的部分。

Word2Vec的另外一種模型是CBOW(Continuous Bag of Words)。它比Skip-Gram出現的更早,Skip-Gram可以說是它的反向操作。間單來說CBOW就是,我們預測的目標在中間,利用上下文做輸入,找到embedding matrix。但無論如何,Skip-Gram依然是計算量龐大,因此接下來要解決這個問題。

2–3 Negative Sampling

Negative Sampling是另外一個更有效率的求解embedding matrix的方法。做法是判斷選取的context word和target word是否構成一組正確的context-target對,一般包含一個正樣本和k個負樣本。正樣本(orange juice),相應的target label為1。其他負樣本則為0。一般來說,固定某個context word對應的負樣本個數k:

  • 訓練樣本較小,k一般選擇5~20
  • 訓練樣本較大,k一般選擇2~5

關於如何選擇負樣本對應的target單詞,可以使用隨機選擇的方法。但有研究以經驗提出一個更實用、效果更好的方法。就是根據該詞出現的頻率進行選擇,相應的概率公式為右下圖 P(wi),其中f(wi) 表示單詞wi在單詞表中出現的概率。

2–4 GloVe word vectors

GloVe ( global vectors for word representation)

Xij: 表示i出現在j之前的次數,即i和j同時出現的次數。 其中,i表示context,j表示target。如果不限定context一定在target的前面,則有對稱關係Xij=Xji。

接著寫出GloVe的Loss function模型。從下圖可以看出,若兩個詞的embedding vector越相近,同時出現的次數越多,則對應的loss越小。權重因子 f(Xij) 是為了防止出現 log 0 而引入(即兩個單詞不會同時出現) ,出現頻率較大的單詞相應的權重因子較大,出現頻率較小的單詞相應的權重因子較小。 若參數θi和ej是對稱的。使用優化算法得到所有參數之後,最終的ew可表示為 (ew + θw)/2。

另外有重要的一點, 無論使用Skip-Gram模型或是GloVe模型等等,從模型計出來的embedding matrix E的每一個特徵值,不一定是可以解釋的物理意義特徵值。(例如,性別,年紀,食物,…)

3. Applications using Word Embeddings

3-1 Sentiment Classification

Sentiment Classification 稱為情感分類,從一大串文字來分類這人是喜歡或不喜歡,是NLP的重要應用。 如下右圖所示,它是應用word embedding來處理情感分類問題的簡單模型:

“The dessert is exellent.”這句話的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”,很明顯這句話表示的是負評。為了解決這樣的問題,可引入RNN模型(many-to-one),來考慮單詞出現的次序,便能有效識別句子表達的真實情感。另一個額外的好處是,假設今天有人使用同義但類似的句型結構來表示,隨然你未曾在情感識別任務訓練過,但這些字曾在你的word embedding的字彙集被訓練過,那你仍有機會獲得好的預測結果。

3-2 Debiasing word embeddings

這章節介紹的問題是: Word embeddings中其實存在一些性別、宗教、種族等偏見或者歧視,如下圖。

消除word embeddings中bias(偏見)有三個步驟:

  • 先確定bias(偏見)的方向。(例如: 對所有性別對立的單詞求差值再平均)
  • 然後,單詞中立化(Neutralize)。將需要消除性別偏見的單詞投影到non-bias direction上去,消除bias維度,例如下圖的babysitter,doctor等。
  • 最後,均衡對(Equalize pairs)。讓性別對立單詞與上面的中立詞距離相等,呈現同樣的相似度。例如讓grandmother和grandfather各自與babysitter的距離等距,這就表示babysitter已經是性別上中立的字詞。

值得一提的是,掌握哪些單詞需要中立化非常重要。一般來說,大部分英文單詞,例如職業、身份等都需要中立化,消除embedding vector中性別這一維度的影響。

#assignment 1: Operations on word vectors — Debiasing

#assignment 2: Emojify

--

--