Word2vec 入門(skip gram部分

2021-08-06 06:34:08 字數 1276 閱讀 8659

給定句子中乙個特定的詞(input word),隨機選它附近的乙個詞。網路的目標是** 我們選到這個附近詞的概率。

取視窗大小為2(前後兩個詞):得到一些詞對:

如之中的(quick, brown)

訓練神經網路時:

輸入quick的one-hot編碼, 輸出層softmax分層的brown的概率應該是最大的

我們訓練乙個簡單的網路來執行乙個任務,但是我們實際上並沒有用這個網路來**test中的任務。而是,利用這個任務(目標)去學習網路中的權重w。我們將看到這些學出來的權重w就是我們所要的詞向量(wordvectors)。

假設corpus裡有10000個詞語, 目標詞向量為 300維:

簡單做乙個圖來表示過程:

依然用(quick, brown)訓練神經網路

如果兩個不同的詞有相同的上下文,那麼我們的模型會需要**類似的輸出。那麼網路為了輸出類似的**,他就會使這兩個不同詞的word vector盡可能相似。所以,如果兩個詞有相同的上下文,我們就可以得到比較接近的word vector。

那麼什麼詞有相同的上下文? 比如一些近義詞 smart 和intelligent 再比如 一些相關的詞 engine 和 transmission。

所以word2vec採用了降取樣(subsampling)的策略。對於每個我們在訓練樣本中遇到的詞,我們有乙個概率去刪除它。這個概率與單詞出現的頻率相關。

(這裡word2vec)就直接做了乙個類似 去掉一些大眾詞彙,類似tf_idf的工作

訓練神經網路 意味著輸入乙個訓練樣本調整weight,讓它**這個訓練樣本更準。換句話說,每個訓練樣本將會影響網路中所有的weight。像我們之前討論的一樣,我們詞典的大小意味著我們有好多weight,所有都要輕微的調整。

negative sampling 解決了這個問題,每次我們就修改了其中一小部分weight,而不是全部。

(這裡其實我還有一點疑問,因為沒有細讀*****, 既然輸入的是one-hot向量,相當於look-up的話,和別的權重(隱層神經元)有什麼關係呢?有必要negative sampling嗎?)

ref:

與word2vec 原來word2vec那麼簡單

說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...

word2vec 入門(三)模型介紹

word2vec 入門 三 模型介紹cbow 是 continuous bag of words model 的縮寫,是 p w w w w w w w 這個網路結構的功能是為了完成乙個的事情 判斷一句話是否是自然語言。怎麼判斷呢?使用的是概率,就是計算一下這句話的 一列詞的組合 的概率的連乘 聯合...

word2vec學習參考

最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...