NLP獲取詞向量的方法(Glove、n-gram、word2vec、fastText、ELMo 對比分析)


  自然語言處理的第一步就是獲取詞向量,獲取詞向量的方法總體可以分為兩種兩種,一個是基於統計方法的,一種是基於語言模型的。

1 Glove - 基於統計方法

  Glove是一個典型的基於統計的獲取詞向量的方法,基本思想是:用一個詞語周邊其他詞語出現的次數(或者說兩個詞共同出現的次數)來表示每一個詞語,此時每個詞向量的維度等於詞庫容量,每一維存儲着詞庫對應序號的詞語出現在當前詞語周圍的次數,所有這些詞向量組成的矩陣就是共現矩陣。
  我們也可以換一個角度來理解共現矩陣,共現矩陣就是兩個詞同時出現的次數,共現矩陣的i行j列的數值表示詞庫中第i個詞和第j個詞同時出現的次數,同時共現矩陣是對角線為零的斜對稱矩陣。
  大家可以通過下邊這個例子來更直觀的理解共生矩陣:

  1.1 實現步驟

  1. 統計所有語料當中任意兩個單詞出現在同一個窗口中的頻率,結果表現為共現矩陣 X
  2. 直接統計得到的共現矩陣 X,大小為 |V| x |V|(V=詞庫容量)
  3. 實踐當中通常對原始統計矩陣施加 SVD(Singular Value Decomposition)來降低矩陣維度,同時降低矩陣的稀疏性

  1.2 優點

  • 訓練速度快
  • 充分利用了全局的統計信息

  1.3 存在的問題

  • 對於單一詞語,只有少部分詞與其同時出現,導致矩陣極其稀疏,因此需要對詞頻做額外處理來達到好的矩陣分解效果
  • 矩陣非常大,維度太高
  • 需要手動去掉停用詞(如although, a,...),不然這些頻繁出現的詞也會影響矩陣分解的效果 

2 基於語言模型的方法

  按照語言模型的演進歷史,大體可分為三類:文法型語言模型、統計語言模型、神經概率語言模型;文法型語言模型是人工撰寫的語言規則,這里不做贅述

  2.1 基於 n-gram 的語言模型

  基於 n-gram 的語言模型是基於統計的語言模型,在NLP任務中,我們往往要計算一個句子出現的概率,通常的做法是:
  1. 對於句中的每個詞,計算在給定前邊所有詞的條件下每個詞出現的條件概率:
 
 
 
 
  2. 將每個詞出現的條件概率連乘,從而得到當前句子出現的概率(當前句子對應詞語組合出現的概率)公式如下:
但是上述方法有兩個缺陷:
  1. 參數空間過大,概率  的參數有 O(n)O(n)O(n) 個。
  1. 數據稀疏嚴重,有些詞同時出現的情況可能沒有,組合階數高時尤其明顯。
  為了解決上述問題,n-gram 模型使用n階馬爾可夫假設對上述 $p(s)$ 公式進行了簡化處理,即用前 n-1 個詞代替當前詞前邊的所有詞計算當前詞出現的條件概率,簡化后的 $p(s)$ 公式如下:
 
 
 
  每個單詞出現的條件概率如下:
  簡單解釋一下n階馬爾可夫假設:
  • 簡單來說,n階馬爾可夫假設的意思就是:符合馬爾科夫過程的隨機變量,當前狀態只和前n-1個狀態有關,即N階馬爾可夫假設認為,當前詞出現的概率只依賴於前 n-1 個詞
  • 1階馬爾科夫假設當前狀態只和當前狀態有關,1階馬爾科夫假設不會考慮上下和當前次的關系,因此 n 一般大於1

  這里插一嘴,筆者認為 雖然 n-gram 只用到了前 n-1 個數據,但是這前 n-1 個數據也是由前邊數據得出的,因此 n-gram 也間接用到了前邊的數據

  2.2 基於神經網絡的語言模型

  基於神經網絡的語言模型根據學習方法不同大體可以分為兩大類,分別是 Feature-based 和 Fine-tune,其中 Feature-based 學習方法就是通過神經網絡獲取詞向量 ,ELMO、fastText、word2vec、NNLM都是 Feature-based 模型的例子
    雖然 ELMO、FastText、Word2vec等都是獲取詞向量的模型,但是fastText、word2vec、NNLM 得到的是靜態詞向量,靜態詞向量不考慮上下文(對於不同語境下的同一單詞給出的詞向量是相同的),因此不能夠解決一次多義的問題。
  而 ELMO 等語言模型會根據詞語的上下文的不同對同一詞語給出不同的詞向量,從而解決的一詞多義的問題。

  2.2.1 word2vec

  word2vec 思想是訓練一個神經網絡,然后提取神經網絡中的參數作為詞語的詞向量;訓練網絡的方式有兩種,一種是cbow 一種是 skip-gram,前者是通過上下文詞語預測中間詞,后者是通過中間詞預測周圍詞;哪種訓練方法並不重要,我們也不會用這個模型去做預測,訓練的目的是提取最終網絡中的參數作為詞語的詞向量

  2.2.2 fastText

  fastText 設計之初是為了解決文本分類問題的,只不過在解決分類問題的同時 fastText 也能產生詞向量,因此后來也被用來生成詞向量。
  fastText 和 word2vec 類似,也是通過訓練一個神經網絡,然后提取神經網絡中的參數作為詞語的詞向量,只不過 fastText 訓練網絡的方法是對文本進行分類;此外 word2vec 的輸入是多個詞語的 noe-hot 編碼,fastText的輸入是多個單詞及其n-gram特征;同時fastText為了解決類別過多導致的softmax函數計算量過大的問題,使用了層次softmax代替標准的softmax。
  fastText 和 word2vec 最主要的區別如下:
  1. 輸入增加了n-gram特征
  2. 使用 層次softmax做多分類
  3. 通過文本分類的方式來訓練模型

  2.2.3 ELMO

  ELMO 模型是一個雙向的動態語言模型,在給出詞語的詞向量時會考慮詞語的上文和下文,從而解決word2vec所遇到的一詞多義問題;
  1、 ELMO得到詞向量的過程
  • 用通用語言模型(如word2vec、fastText、glove等)去訓練一個靜態詞向量,ELMO內部使用 CNN-BIG-LSTM 語言模型得到的詞向量,得到詞向量的維度為 512
  • 使用得到的靜態詞向量去訓練ELMO網絡
  • 下游任務中使用詞向量時,加載預訓練的ELMO網絡參數,根據當前上下文去動態調整詞向量,從而得到一個動態的詞向量。
  2、 ELMO網絡結構

   上圖展示的就是ELMO的網絡結構,ELMO由兩層網絡組成,每層網絡用於提取不同層級的特征;其中每層由兩個方向相反的RNN網絡構成(雙向LSTM,簡稱BiLSTM),分別記錄上文信息和下文信息

同時,為了保證網絡的穩定,ELMO從最底層詞嵌入層到第一層biLSTM輸出層之間還有一個殘差鏈接。
  3. 得到ELMO的詞向量
  對於輸入的第 i 個靜態詞向量(因為靜態詞向量通過 CNN-BIG-LSTM 得到,因此維度為512),ELMO最終會出輸出1個靜態詞向量和兩個動態詞向量,分別是:

 

  •  $h(i,0)$:將兩個輸入的靜態詞(復制一份)向量拼接在一起,維度是512+512=1024,拼接的目的是為了和后邊兩個詞向量的維度統一。

 

  •  $h(i,1)$:將ELMO第1層兩個反向LSTM的輸出拼接,維度是512+512=1024。
  •   $h(i,2)$:將ELMO第2層兩個反向LSTM的輸出拼接,維度是512+512=1024。
  ELMo 中不同層的詞向量往往的側重點往往是不同的,輸入層采用的 CNN-BIG-LSTM 詞向量可以比較好編碼詞性信息,第 1 層 LSTM 可以比較好編碼句法信息,第 2 層 LSTM 可以比較好編碼單詞語義信息。
  ELMO 的作者提出了兩種使用詞向量的方法:
  • 是直接使用最后一層 biLSTM 的輸出作為詞向量,即  $h(i,2)$ 。
  • 更加通用的做法,將 $h(i,0)$ 、$h(i,1)$ 、$h(i,2)$ 三個輸出加權融合在一起,公式如下。其中γ 是一個與任務相關的系數,允許不同的 NLP 任務縮放 ELMO 的向量,可以增加模型的靈活性。  $s_{j}^{task}$是使用 softmax 歸一化的權重系數;此方法得到的elmo詞向量可以看成是各層向量與初始靜態詞向量的ensemble 
  通過下面這張圖片能形象地理解使用第二種方法獲取詞向量的過程:

4. ELMO優點

  • ELMO的各層參數實際上就是為各種有監督的下游任務准備的,因此ELMO可以被認為是一種遷移學習(transfer learning)。
  • 通過這樣的遷移策略,那些對詞義消歧有需求的任務就更容易通過訓練給第二隱層一個很大的權重,而對詞性、句法有明顯需求的任務則可能對第一隱層的參數學習到比較大的值(實驗結論)。總之,這樣便得到了一份”可以被下游任務定制“的特征更為豐富的詞向量。

5. ELMO缺點

  • lstm是串行機制,訓練時間長,從這一點來看ELMO注定成為不了大哥,
  • 相比於Transformer,lstm提取特征的能力還是不夠的,我覺得未來lstm可能會被淘汰,畢竟屁股決定腦袋,時間為上!
  • ELMO 的兩個RNN網絡是分別計算的,導致計算時上下文的信息不會相互通信,進而導致ELMO得到的詞向量有一定的局限性
  • 輸出的結果只是講兩個RNN網絡得到的結果拼接在一起,上下文信息並不會相互影響

 

轉載於:https://blog.csdn.net/lch551218/article/details/114836207


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM