● Word2Vec中skip-gram是什么,Negative Sampling怎么做
參考回答:
● .FastText和Glovec原理
參考回答:
Glovec融合了矩陣分解和全局統計信息的優勢,統計語料庫的詞-詞之間的共現矩陣,加快模型的訓練速度而且又可以控制詞的相對權重。
● word2vec實施過程
參考回答:
詞向量訓練的預處理步驟:
1.對輸入的文本生成一個詞匯表,每個詞統計詞頻,按照詞頻從高到低排序,取最頻繁的V個詞,構成一個詞匯表。每個詞存在一個one-hot向量,向量的維度是V,如果該詞在詞匯表中出現過,則向量中詞匯表中對應的位置為1,其他位置全為0。如果詞匯表中不出現,則向量為全0
2.將輸入文本的每個詞都生成一個one-hot向量,此處注意保留每個詞的原始位置,因為是上下文相關的
3.確定詞向量的維數N
Skip-gram處理步驟:
1.確定窗口大小window,對每個詞生成2*window個訓練樣本,(i, i-window),(i, i-window+1),...,(i, i+window-1),(i, i+window)
2.確定batch_size,注意batch_size的大小必須是2*window的整數倍,這確保每個batch包含了一個詞匯對應的所有樣本
3.訓練算法有兩種:層次Softmax和Negative Sampling
4.神經網絡迭代訓練一定次數,得到輸入層到隱藏層的參數矩陣,矩陣中每一行的轉置即是對應詞的詞向量
CBOW的處理步驟:
1.確定窗口大小window,對每個詞生成2*window個訓練樣本,(i-window, i),(i-window+1, i),...,(i+window-1, i),(i+window, i)
2.確定batch_size,注意batch_size的大小必須是2*window的整數倍,這確保每個batch包含了一個詞匯對應的所有樣本
3.訓練算法有兩種:層次Softmax和Negative Sampling
4.神經網絡迭代訓練一定次數,得到輸入層到隱藏層的參數矩陣,矩陣中每一行的轉置即是對應詞的詞向量
參數矩陣解釋:
對輸入層到隱藏層的參數包含W和b,我們需要的是W,這里的W是一個矩陣,shape=(N,V)。其中V是上文所述的詞表的大小,N是需要生成的詞向量的維數。N同樣也是隱藏層(第一層)中的隱藏節點個數。

神經網絡像是一個黑盒子,這其中的概念很難理解,這里給出我對詞向量訓練的個人理解:對於每個詞s,訓練數據對應的標記是另一個詞t,訓練其實是想找到一種映射關系,讓s映射到t。但很顯然我們不是希望找到一個線性函數,使得給定s一定能得到t,我們希望的是能夠通過s得到一類詞T,包含t。對於T中的每個t,由於在s上下文中出現的頻次不同,自然能得到一個概率,頻次越高說明s與t相關性越高。
對於詞向量,或者說參數矩陣W,可以認為是一個將詞映射到語義空間的橋梁,s與t相關性越高,則認為其在語義空間中越近,那么對應的橋梁也越靠近。如果用向量來理解的話就是向量之前的夾角越小,我們使用向量來表示這個詞的信息,重要的是得到了語義信息。在實際應用中,生成一段文本,我們可以判斷詞與詞的向量之間相似度,如果過低則就需要懷疑是否正確了。
● softmax的原理了解
參考回答:
考慮將樣本共有k類,每一類的概率分別為,由於
,所以通常我們只需要k-1個參數
即可
,
為了推導,引入表達式:
上面T(y)是k-1維列向量,其中y = 1, 2, ...k.
T(y)i 表示向量T(y)的第i個元素。
還要引入表達式,如果大括號里面為真,則真個表達式就為1,否則為0.例如:1{2=3} = 0和1{3=3} = 1.
則上面的k個向量就可以表示為
以為y只能屬於某一個類別,於是T(y)中只能有一個元素為1其他元素都為0,可以求出k-1個元素的期望:
定義:
其中i = 1,2,...k.則有:
也就容易得出:,由該式和上面使得等式:
一起可以得到:
這個函數就是softmax函數。
然后假設和
具有線性關系,即
於是從概率的角度出發:
其中這個模型就是softmax回歸(softmax regression),它是邏輯回歸的泛化。
這樣我們的輸出:
就是輸出了x屬於(1,2,...k-1)中每一類的概率,當然屬於第k類的概率就是:
下面開始擬合參數
同樣使用最大化參數θ的對數似然函數:
● Wod2vec公式
參考回答:
CBOW
Skip-gram
Negative Sampling
CBOW
Skip-gram


● Wod2vec公式
參考回答:
CBOW
Skip-gram
Negative Sampling
CBOW
Skip-gram

