Word2vec ------算法崗面試題


● Word2Vec中skip-gram是什么,Negative Sampling怎么做

參考回答:

Word2Vec通過學習文本然后用詞向量的方式表征詞的語義信息,然后使得語義相似的單詞在嵌入式空間中的距離很近。而在Word2Vec模型中有Skip-Gram和CBOW兩種模式,Skip-Gram是給定輸入單詞來預測上下文,而CBOW與之相反,是給定上下文來預測輸入單詞。Negative Sampling是對於給定的詞,並生成其負采樣詞集合的一種策略,已知有一個詞,這個詞可以看做一個正例,而它的上下文詞集可以看做是負例,但是負例的樣本太多,而在語料庫中,各個詞出現的頻率是不一樣的,所以在采樣時可以要求高頻詞選中的概率較大,低頻詞選中的概率較小,這樣就轉化為一個帶權采樣問題,大幅度提高了模型的性能。

● .FastText和Glovec原理

參考回答:

FastText是將句子中的每個詞通過一個lookup層映射成詞向量,對詞向量疊加取平均作為句子的向量,然后直接用線性分類器進行分類,FastText中沒有非線性的隱藏層,結構相對簡單而且模型訓練的更快。

Glovec融合了矩陣分解和全局統計信息的優勢,統計語料庫的詞-詞之間的共現矩陣,加快模型的訓練速度而且又可以控制詞的相對權重。

● word2vec實施過程

參考回答:

詞向量其實是將詞映射到一個語義空間,得到的向量。而word2vec是借用神經網絡的方式實現的,考慮文本的上下文關系,有兩種模型CBOW和Skip-gram,這兩種模型在訓練的過程中類似。Skip-gram模型是用一個詞語作為輸入,來預測它周圍的上下文,CBOW模型是拿一個詞語的上下文作為輸入,來預測這個詞語本身。

詞向量訓練的預處理步驟:

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同樣也是隱藏層(第一層)中的隱藏節點個數。

每次一個batch_size輸入其實一個矩陣(batch_size, V),記為X,隱藏層輸出為Y,公式為 。所有的輸入共享一個W,每次迭代的時候都在修改W,由於one-hot的性質,每次修改W只修改1對應的那一行。而這一行也就是詞向量(轉置后)

神經網絡像是一個黑盒子,這其中的概念很難理解,這里給出我對詞向量訓練的個人理解:對於每個詞s,訓練數據對應的標記是另一個詞t,訓練其實是想找到一種映射關系,讓s映射到t。但很顯然我們不是希望找到一個線性函數,使得給定s一定能得到t,我們希望的是能夠通過s得到一類詞T,包含t。對於T中的每個t,由於在s上下文中出現的頻次不同,自然能得到一個概率,頻次越高說明s與t相關性越高。

對於詞向量,或者說參數矩陣W,可以認為是一個將詞映射到語義空間的橋梁,s與t相關性越高,則認為其在語義空間中越近,那么對應的橋梁也越靠近。如果用向量來理解的話就是向量之前的夾角越小,我們使用向量來表示這個詞的信息,重要的是得到了語義信息。在實際應用中,生成一段文本,我們可以判斷詞與詞的向量之間相似度,如果過低則就需要懷疑是否正確了。

● softmax的原理了解

參考回答:

考慮一個多分類問題,即預測變量y可以取k個離散值中的任何一個.比如一個郵件分類系統將郵件分為私人郵件,工作郵件和垃圾郵件。由於y仍然是一個離散值,只是相對於二分類的邏輯回歸多了一些類別。下面將根據多項式分布建模。

考慮將樣本共有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公式

參考回答:

Hierarchical Softmax

CBOW

Skip-gram

Negative Sampling

CBOW

Skip-gram

 

● Wod2vec公式

參考回答:

Hierarchical Softmax

CBOW

Skip-gram

Negative Sampling

CBOW

Skip-gram

 

● 使用gensim的word similar方法預測句子

參考回答:

利用gensim訓練Word2vec向量,得到詞向量空間,通過詞向量空間預測詞之間的相似度,從而去預測由詞組成的句子之間的相似度。


免責聲明!

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



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