05.序列模型 W2.自然語言處理與詞嵌入

Michael阿明發表於2020-09-30


參考:
吳恩達視訊課
深度學習筆記

自然語言處理與詞嵌入
Natural Language Processing and Word Embeddings

1. 詞彙表徵

詞嵌入(word embeddings),這是語言表示的一種方式,可以讓演算法自動的理解一些類似的詞,比如 男人對女人,比如 國王對王后

one-hot 向量來表示詞,缺點:它把每個詞孤立起來,演算法對相關詞的泛化能力不強(每兩個詞之間的向量內積都是0)


2. 使用詞嵌入


詞嵌入遷移學習的步驟:

  1. 從大量的文字集中學習詞嵌入。或者下載網上預訓練好的詞嵌入模型

  2. 用詞嵌入模型把它遷移到你的新的只有少量標註訓練集的任務中
    例如,用這個300維的詞嵌入來表示你的單詞,代替原來的10000維的one-hot向量

  3. 新的任務訓練模型時,你可以選擇要不要繼續微調,用新的資料調整詞嵌入。實際中,只有第二步中有很大的資料集你才會這樣做,如果資料集不是很大,通常不會在微調詞嵌入上費力氣(你的資料很小,微調詞嵌入,效果也不明顯)

詞嵌入 在語言模型機器翻譯領域用的少一些,因為這些任務你有大量的資料(可用於訓練,不必使用遷移)

人臉識別中的人臉Encoding演算法,未來可能涉及到海量的人臉照片
而自然語言處理 有一個固定的詞彙表 embedding,而像一些沒有出現過的單詞我們就記為 未知單詞UNK

總結:
用詞嵌入來實現遷移學習,拋棄原來的one-hot表示,而是用之前的嵌入的向量,你的演算法會泛化的更好,你也可以從較少的標記資料中進行學習

3. 詞嵌入的特性


找到一個單詞 w : argmax ⁡ Similarity ⁡ ( e w , e king  − e man ⁡ + e woman  ) w : \operatorname{argmax} \operatorname{Similarity}\left(e_{w}, e_{\text {king }}-e_{\operatorname{man}}+e_{\text {woman }}\right) w:argmaxSimilarity(ew,eking eman+ewoman )

通過這種方法來做類比推理準確率大概只有30%~75%

還有餘弦相似度(夾角):

sim ⁡ ( u , v ) = c o s ( θ ) = u T v ∣ u ∣ ∣ 2 ∣ ∣ v ∣ ∣ 2 \operatorname{sim}(u, v)= cos(\theta) = \frac{u^{T} v}{\left.|u|\right|_{2}|| v||_{2}} sim(u,v)=cos(θ)=u2v2uTv

4. 嵌入矩陣


我們的目標是學習一個嵌入矩陣。

我們將隨機地初始化矩陣,然後使用梯度下降法來學習這個300×10000的矩陣中的各個引數,然後取出你需要的列

5. 學習詞嵌入


如果想建立一個語言模型,用目標詞的前幾個單詞作為上下文是常見做法

如果你的目標是學習詞嵌入,那麼你就可以用這些其他型別的上下文(下圖所示),也能得到很好的詞嵌入

6. Word2Vec


p ( t ∣ c ) = e θ t T e c ∑ j = 1 10 , 000 e θ j T e c p(t \mid c)=\frac{e^{\theta_{t}^{T} e_{c}}}{\sum_{j=1}^{10,000} e^{\theta_{j}^{T} e_{c}}} p(tc)=j=110,000eθjTeceθtTec

L ( y ^ , y ) = − ∑ i = 1 10 , 000 y i log ⁡ y ^ i L(\hat{y}, y)=-\sum_{i=1}^{10,000} y_{i} \log \hat{y}_{i} L(y^,y)=i=110,000yilogy^i

為了解決 softmax 對分母求和很慢的問題:

  • 採用 分級(hierarchical)的softmax分類器、負取樣(Negative Sampling)


如果對上下文進行隨機均勻取樣,像 the、of、a、and、to 之類出現得相當頻繁,於是你會發現你的上下文到目標詞的對映會相當頻繁地得到這些種類的詞。

實際上,詞 p ( c ) p(c) p(c) 的分佈並不是單純的在訓練集語料庫上均勻且隨機的取樣得到的,而是採用了不同的分級平衡更常見的詞和不那麼常見的詞

以上就是 Word2Vec 的其中一種 Skip-Gram 模型,另一個叫做CBOW,即連續詞袋模型(Continuous Bag-Of-Words Model),它獲得中間詞兩邊的上下文,然後用周圍的詞預測中間的詞,這個模型也很有效

總結下:CBOW是從原始語句推測目標字詞;而Skip-Gram正好相反,是從目標字詞推測出原始語句。
CBOW對小型資料庫比較合適,而Skip-Gram在大型語料中表現更好

7. 負取樣

構造一個新的監督學習問題,就是給定一對單詞,比如orange和juice,要去預測這是否是一對上下文詞-目標詞(context-target)


選取負樣本採用經驗分佈:

P ( w i ) = f ( w i ) 3 4 ∑ j = 1 10 , 000 f ( w j ) 3 4 P\left(w_{i}\right)=\frac{f\left(w_{i}\right)^{\frac{3}{4}}}{\sum_{j=1}^{10,000} f\left(w_{j}\right)^{\frac{3}{4}}} P(wi)=j=110,000f(wj)43f(wi)43

因為在softmax分類器中計算成本很高。本節我們學到了如何通過將其轉化為一系列二分類問題使你可以非常有效的學習詞向量。

當然網上也有別人預訓練過的詞向量,你想要在NLP問題上取得快速進展,去下載他人的詞向量是很好的方法,在此基礎上改進

8. GloVe 詞向量

GloVe代表用詞表示的全域性變數(global vectors for word representation)

對於GloVe演算法,我們可以定義上下文和目標詞為任意兩個位置相近的單詞,假設是左右各10詞的距離,那麼 X i j X_{ij} Xij 就是一個能夠獲取單詞 i i i 和單詞 j j j 出現位置相近時或是彼此接近的頻率的計數器

GloVe模型做的就是進行優化,我們將他們之間的差距進行最小化處理:
minimize ⁡ ∑ i = 1 10 , 000 ∑ j = 1 10 , 000 f ( X i j ) ( θ i T e j + b i + b j ′ − log ⁡ X i j ) 2 \operatorname{minimize} \sum_{i=1}^{10,000} \sum_{j=1}^{10,000} f\left(X_{i j}\right)\left(\theta_{i}^{T} e_{j}+b_{i}+b_{j}^{\prime}-\log X_{i j}\right)^{2} minimizei=110,000j=110,000f(Xij)(θiTej+bi+bjlogXij)2

9. 情感分類

情感分類一個最大的挑戰就是可能標記的訓練集沒有那麼多

對於情感分類任務來說,訓練集大小從10,000到100,000個單詞都很常見,甚至有時會小於10,000個單詞,採用了詞嵌入能夠帶來更好的效果(泛化好),尤其是隻有很小的訓練集時。

10. 詞嵌入除偏

根據訓練模型所使用的文字,詞嵌入能夠反映出性別、種族、年齡、性取向等其他方面的偏見,修改學習演算法來儘可能減少或是理想化消除這些非預期型別的偏見是十分重要的

  • 定位偏見
  • 中和,減少兩個詞在某個軸上的距離
  • 均衡,將兩個詞移至與中間軸線等距的一對點上

作業

待寫,見下一篇


我的CSDN部落格地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
Michael阿明

相關文章