表示學習02 word2vec具體實現細節

2021-09-30 20:03:52 字數 2494 閱讀 1299

1.知乎解答

2.word2vec的數學原理

step1:首先有了文字語料庫,你需要對語料庫進行預處理,這個處理流程與你的語料庫種類以及個人目的有關,比如,如果是英文語料庫你可能需要大小寫轉換檢查拼寫錯誤等操作,如果是中文日語語料庫你需要增加分詞處理(jieba庫)。這個過程其他的答案已經梳理過了不再贅述。

step2:得到你想要的processed corpus之後,將他們的one-hot向量作為word2vec的輸入,通過word2vec訓練低維詞向量(word embedding)就ok了。

1.輸入層:上下文單詞的onehot.

2.所有onehot分別乘以共享的輸入權重矩陣w.

3.所得的向量 相加求平均作為隱層向量, size為1n.

4.乘以輸出權重矩陣w』

5.得到向量 啟用函式處理得到v-dim概率分布 ,概率最大的index所指示的單詞為**出的中間詞(target word)

6.與true label的onehot做比較,誤差越小越好

所以,需要定義loss function(一般為交叉熵代價函式),採用梯度下降演算法更新w和w』。訓練完畢後,輸入層的每個單詞與矩陣w相乘得到的向量的就是我們想要的詞向量(word embedding),這個矩陣(所有單詞的word embedding)也叫做look up table(其實聰明的你已經看出來了,其實這個look up table就是矩陣w自身),也就是說,任何乙個單詞的onehot乘以這個矩陣都將得到自己的詞向量。有了look up table就可以免去訓練過程直接查表得到單詞的詞向量了。

1.請問這裡w在onehot的情況下,是否理解成沒一列就是對應這個單詞的embedding,比如第一列v1就是第乙個單詞的embedding?

a: 你的理解是正確的,one-hot嘛,除了單詞所在的index是1其他都是0,乘積之後自然是index所在位置的向量。

2.為什麼v1 v2 v4要求平均?

a:相加是為了將這些向量融合在一起,與「根據周圍單詞推測中心單詞」(cbow的情況)的目的相呼應。至於為什麼是相加這種簡單的操作,是**中提出的,我覺得大牛們應該是嘗試了其他的很酷很帥的演算法比如求log啦,但是最終結果差不多所以才選擇了這種很樸素簡單的單純相加的演算法。

3.輸入層和對映層之間的引數矩陣w,它是整個語料上的矩陣還是只是當前視窗內所有詞的矩陣呢?

a:是整個語料上的矩陣,視窗內的word的one-hot向量與w相乘會得到相應的word embedding。這也就說明了我們要求的詞向量就是w啊!因為每個詞的one-hot乘以w就相當於提取對應列的值。

4.輸出權重矩陣w』是怎麼來的?也是隨機得到嗎?

a:輸出權重矩陣是隨機得到的。

5.因為初始的詞向量是隨機生成的,那麼模型要更新到什麼時候才能確定現在的詞向量就是比較穩定的而不是某個中間態呢?

a:對於訓練終止條件,一般是迭代次數決定的,gensim實現的word2vec整體迭代預設5次,也不一定就是最好的,但是應該也差不了多少。

6.cbow的具體訓練過程?

a:訓練是從第乙個單詞開始的,如果window size是2,第乙個單詞而言上下文單詞的個數就是2;同理直到最後乙個單詞;w是整個語料庫的矩陣,輸入層是每個單詞的onehot向量,與w相乘會得到相應的屬於該單詞的向量,更新的時候也只更新相應的部分,

7.但詞向量不是模型訓練的任務麼?怎麼變成了輸入?好奇怪?

a:詞向量一般不是模型訓練的任務,而是為完成任務順帶得到的附屬品。就像90年代很多男生為了追女生而學結他,出發點並不是自己熱愛藝術,但也順帶提公升了藝術氣質,甚至留起了飄逸的長髮:) 詞向量是在訓練過程中和模型引數一起被優化的。

網上的很多資料好像並沒有在一開始就闡明這個「詞向量」到底是怎麼來的,也有可能是簡短說了一下但是並沒有引起我們的注意,導致我們會問「生成的向量到底在哪兒呀」。那麼word2vec向量到底在哪兒?其實這些詞向量就是神經網路裡的引數,生成詞向量的過程就是乙個引數更新的過程。那麼究竟是什麼引數呢?就是這個網路的第一層:將one-hot向量轉換成低維詞向量的這一層(雖然大家都不稱之為一層,但在我看來就是一層),因為word2vec的輸入是one-hot。one-hot可看成是1n(n是詞總數)的矩陣,與這個係數矩陣(nm, m是word2vec詞向量維數)相乘之後就可以得到1m的向量,這個向量就是這個詞對應的詞向量了。那麼對於那個nm的矩陣,每一行就對應了每個單詞的詞向量。接下來就是進入神經網路,然後通過訓練不斷更新這個矩陣。這個部分在網上的資料裡經常被簡略的概括,輸出層一般是重點解釋的物件,所以需要仔細地理清這個思路。有了這個概念之後再去看word2vec網路具體是怎麼實現的,就會容易很多。

8.什麼,輸入也能優化?

a:對。cbow也好,skip-gram也好,還是各種各樣其他nnlm也好,簡單來看,不過是模型任務的區別。通過建模,每個詞與其上下文建立了聯絡;通過訓練,引數和輸入得到優化。最終,在實現損失函式minimization的同時,得到乙份包含semantic properties的詞向量。

表示學習1 word2vec

幾點基礎工作 distributed representation softmax function 函式公式 si ezj kk 1ezk for j 1,k 具體softmax function的特點可以參考softmax function 的特點和應用 word2vec 總體上,構建乙個多層神...

word2vec學習參考

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

word2vec學習筆記

常見面試問題 問題 1,介紹一下 word2vec word2vec 的兩個模型分別是 cbow 和 skip gram,兩個加快訓練的 loss 是 hs hierarchical softmax 和負取樣。假設乙個訓練樣本是又核心詞 w和其上下文 context w 組成,那麼 cbow 就是用...