1. 程式人生 > >吳恩達深度學習總結(15)

吳恩達深度學習總結(15)

自然語言處理與詞嵌入

詞彙表徵

之前我們表示一個詞彙都是建立一個詞典,然後基於詞彙在詞典中的位置建立一個在該位置為1其他位置為0的向量表示詞彙。比如我們建立一個10000個單詞構成的字典,那麼每個單詞的向量維度為10000,apple在字典中的第1個位置,那麼apple的表示為 [

1 , 0 ,   , 0 ] [1,0,\cdots,0]
,這種表示方法稱為 one-hot表示。該表示方法存在很大的缺點:將每個詞的完全分隔開,無法知道兩個詞之間的聯絡,對相關詞彙的泛化能力不強。
另一種表述方法:特徵表述(word embedding),即用其他的詞來表述當前詞彙。
在這裡插入圖片描述
通過這種表述可以更好地發現兩個詞之間的相似度,embedding是指將詞彙以向量的形式嵌入到空間的某點上

基於遷移學習訓練word embedding

步驟

  1. 從大量文集中訓練word embedding或者直接從網上下載開源的預訓練模型
  2. 根據新任務給定的小資料集,轉換embedding(比如新的任務中有100k個詞彙,對embedding進行轉換)
  3. (可選)基於新的資料集對embedding進行調整(只有當新任務的資料集很大時才需要這樣做)

這種word embedding的方法通常用於命名實體識別,文字摘要,文字解析,對擁有大量資料的任務應用不是很多。
分析可知 word embedding方法和人臉識別中的 face encoding方法類似,都是將待識別的目標轉換為一個向量,但是這兩個任務存在著一些不同:Face encoding可以對任意一張圖片識別出人臉,而word embedding 只能學習詞彙表中的單詞,對於未在單詞表中的單詞標記為 “UNK”

類比推理演算法

類比推理演算法時由已知的兩個詞A、B,根據給定的單詞C,找出詞彙表中與C的關係最像A、B之間關係的詞。
例如:我們已知women對應著men,那麼在詞彙表中與Queen相對應的詞是?
對於這個問題,我們可以將詞彙表示為word embedding的形式 e women e men e queen e ? e_{\text{women}} \to e_{\text{men}} \approx e_{\text{queen}} - e_? ,這個問題可以轉化為找到一個單詞 w w 使得 argmin w s i m ( e w , e queen e women + e men ) \text{argmin}_w sim(e_w, e_{\text{queen}} - e_{\text{women}} + e_{\text{men}}) ,其中 s i m sim 是指輸入之間的相似度,通常我們可以使用 cosine similarity描述相似度,即 s i m ( u , v ) = u T v u v sim(u,v) = \frac{u^Tv}{||u||||v||}

Embedding matrix

embedding matrix是由一系列表徵單詞的向量構成的矩陣,矩陣中的每一列代表一個單詞,在矩陣 E E 中單詞的位置與one-hot中單詞的位置一致,在神經網路的框架中,通常會有專門的方法從embedding matrix中提取單詞,不需要其與one-hot vector相乘。
在這裡插入圖片描述
從這個網路中我們可以瞭解Neural language model的工作模式,首先從embedding matrix中提取出需要的向量,將向量放到網路中進行訓練,最後經過softmax得到one-hot中的一個向量。
在訓練過程中存在一個超引數:相關詞彙的數目。在圖示的網路結構中,我們選擇了前6個作為預測值的相關詞彙,在實際的除錯過程中,常見的選擇方式有:1. 前4個詞彙;2. 前後各4個;3. 前1個; 3. 附近的一個詞彙;4. skip gram。

skip gram

skip gram:skip gram時選擇一個詞作為context,另一個詞作為target,選擇的方法有很多,前一個或者前幾個,後一個或後幾個。
在計算softmax時,我們計算的是一個整個詞彙表大小的向量,這大大增加了計算複雜度。為了減小計算量提出了hierarchical softmax:先看屬於那一部分,再繼續分類(類似於建立了一個決策樹)。在實際應用時,hierarchical softmax不會是一個balance tree,通常將常用的詞放到tree優先順序較高的節點上(即靠近root)不用的歸為葉節點。

CBOW

CBOW與skip gram類似,將兩邊的詞選做context,然後將中間的詞作為target

負取樣

先選擇一個詞作為context,在context一定範圍內選擇一個詞作為正樣本;負樣本選擇同樣的context,再隨機選擇一個詞作為負樣本,因此是隨機選擇,我們認為負樣本與context無關。負樣本的數目k一般在5-20,若資料集很大,那麼k在2-5之間,這裡用sigmoid函式來訓練loss function。
負樣本的選取:綜合考慮出現頻率和重要性(因為出現頻率最多的單詞如the,of,and的重要性一般不高),使用 f ( w i ) 3 4 i = 1 n f ( w i ) 3 4 \frac{f(w_i)^{\frac{3}{4}}}{\sum_{i=1}^{n}f(w_i)^{\frac{3}{4}}} 作為每一個詞彙的選擇概率,其中 n n 為總詞彙量(embedding的列數), f ( w i ) f(w_i) 為詞彙的出現頻率。

GloVe(Global vectors for word representation)

我們用 x i j x_{ij} 表示單詞 i i 出現在單詞 j j 周圍的次數,這裡 i i 類似於 target, j j 類似於 context。
將差距最小化:
minimize i = 1 n I = 1 n f ( x i j ) ( θ i T e j + b i + b j log x i j ) 2 \text{minimize} \sum_{i=1}^{n}\sum_{I=1}^nf(x_{ij})(\theta_i^Te_j + b_i + b_j - \log x_{ij})^2
其中 f ( x i j ) f(x_{ij}) 給不常出現的單詞有意義的運算,給經常出現的單詞更大但不過分的權重,當 x i j x_{ij} 為0時, f ( x i j ) f(x_{ij}) 也為0

情緒分類

由於情緒分類時不僅僅需要簡單的單詞識別,也需要先後順序的判定才能正常識別出情緒,因此在文字識別的基礎上引入了RNN網路。
在這裡插入圖片描述

除偏

  1. 分辨偏見存在的方向,即用座標軸將存在偏見的詞彙與不存在偏見的詞彙分隔開(不一定是一維的)
  2. 基於偏見座標軸建立無偏座標軸,將不存在偏見的詞彙對映到無偏座標軸上
  3. 使得有偏見的詞彙到對映後無偏見詞彙的距離相等(基於無偏見座標軸等距,與偏見座標軸平行)
    在這裡插入圖片描述