您當前的位置:首頁 > 詩詞

Skip_gram(NLP-1)

作者:由 茶樹哥 發表于 詩詞時間:2019-09-29

雲日隱層闕是什麼動物

什麼是word2vec

詞嵌入word embedding,將語言(文字)轉化為數值的形式,也就是嵌入到一個數學空間裡面。透過一個詞嵌入的空間使得語義上相似的詞在空間距離很近。

Skip_gram 使用一個詞作為輸入,預測周圍的上下文

CBOW 一個詞的上下文來輸入,預測詞的本身

Skip_gram

建立模型

透過模型獲取詞嵌入詞向量

模型的訓練The Fake Task

獲得模型基於訓練資料得到的隱層權重

選取一個詞作為輸入詞

獲取詞的上下文。skip-window,選取多少詞進入視窗,num_skips代表最終輸出詞的個數

神經網路基於訓練資料輸出一個機率分佈,代表每個詞output_word的可能性

模型的細節

從訓練樣本抽取n個不重複的單片語成詞彙表,one-hot編碼,每個單詞都是一個n維的向量。輸入是n維的向量、輸出也是n維的向量。包含了n個機率。每個機率代表輸入樣本中output_word的機率大小。訓練的樣本(input word,output_word)

隱層,單詞的表示 n x 300, 隱層的權重為 n * 300 。學習最終的目標是學習隱層的權重矩陣

輸出層是一個softmax分類器,輸出一個0-1之間的機率值

模型的訓練

神經網路超級大

要避免過擬合

計算量大

最佳化點

常見的單詞組合或者片語作為單個words來處理

高頻次的單詞抽樣來減少訓練樣本的個數

最佳化目標negative sampling,每個訓練樣本更新小部分的模型權重,降低計算負擔

抽樣率:單詞出現的頻率增高,被保留的機率也會越來越小

負取樣:提高訓練速度改善詞向量質量的一種方法。每次讓訓練樣本只更新小部分的權重,降低梯度下降過程中的計算量

negative word

:訓練樣本(fox,quick)經過one-hot處理,quick對應的神經元節點是1,其餘是0。輸出時0的神經元節點所對應的單詞是negative - word。隨機選取小部分negative words進行權重的更新

negative words的選取:

一個單詞被選座negative的機率和出現的頻次有關。出現的頻次越高,很容易被選成nagative words。負取樣是,在0-1億範圍內生成一個隨機數,選擇表中索引中的單詞作為nagative word就行。

skip-gram的訓練以及實現

資料的預處理、訓練樣本構建、模型構建、模型的驗證

資料的預處理

替換原始文字中特殊符號,降低低頻詞

文字分詞

構建語料

單詞對映表

訓練樣本的構建

計算每個單詞被刪除的頻率,基於機率進行取樣

構造batch

模型的構建

輸入到嵌入層

嵌入層到輸出層(共享權重矩陣)

模型的驗證

檢視相似詞的變化

計算詞的相似度

提升效果

增大訓練樣本,語料庫

增加window size 獲取更多的上下文資訊

增加embedding size 減少資訊維度的損失。一般取50-300

標簽: 單詞  word  訓練樣本  模型  negative