我們拿這句話進行舉例:
i like playing football.
那我們需要做的就是,當拿到某個單詞時,推導出它的前乙個單詞和後乙個單詞。
like -> i, playing p(i|like),p(playing|like)
playing -> like, football p(like|playing),p(football|playing)
football -> playing p(playing|football)
下面看一下具體的推理過程:
1.假設我們有乙個長度為v的詞庫θ,那目標函式為:
其中w為中心詞,c為上下文單詞
2.然後我們可以一項log,得到:
3.將p(c|w)展開,可得:
4.將其簡化,最後可得:
由於其中有一項 i ∈ v ,會導致演算法時間複雜度很高,所以該目標函式我們可以歸納為 nagative sampling,在實際使用中我們需要使用monte carlo隨機取樣進行處理。
我們在回頭看到的例子上:
i like playing football.
比如我們要考慮window size = 2,那我們可以得到以下訓練樣本:
前面的推導部分說過,直接處理時間複雜度太高,所以在此我們引申出nagative sampling的處理方法。
我們可以設定乙個 p(d=1|w,c,θ)
w指中心詞,c指上下文,θ指(w, c)是否為語料庫中的positive sample
例如 p(d=1|i, like)、p(d=1|i, much)、p(d=0|i, much)
因為(i, like)存在於語料庫中,而(i, much)不存在於語料庫中,所以我們希望 p(d=1|i, like)和p(d=0|i, much)的概率越大越好,而p(d=1|i, much)的概率越小越好。
根據這個定義,我們可以重新表達我們的目標函式
因為u_c * v_w的值並不是在0~1之間,我們需要使它的值保持在(0,1),可以套一層邏輯函式,這樣就變成了
然後加一項log
簡化後可得
在實際使用時,因為正樣本的數量會遠遠少於負樣本的數量(有很多負樣本根本不會出現在文字中),所以我們引入nagetive sampling,我們在對正樣本進行取樣時,同時對該中心詞的一些負樣本進行取樣,這樣上述公式可轉變為如下形式
輕鬆理解skip gram模型
在許多自然語言處理任務中,許多單詞表達是由他們的tf idf分數決定的。即使這些分數告訴我們乙個單詞在乙個文字中的相對重要性,但是他們並沒有告訴我們單詞的語義。word2vec是一類神經網路模型 在給定無標籤的語料庫的情況下,為語料庫中的單詞產生乙個能表達語義的向量。這些向量通常是有用的 接下來我將...
CBOW與Skip Gram模型基礎
用distributed representation我們可以較容易的分析詞之間的關係了,比如將我們的詞降到二維,我們會發現 其資料的輸入輸出分為cbow和skip gram 這樣我們這個cbow的例子裡,輸入八個詞向量,輸出的是所有詞的softmax概率 訓練的目標的期望訓練樣本特定次對應的sof...
Word2Vec教程 Skip Gram模型
這個教程包含 訓練word2vec的 skip gram 模型。通過這個教程,我希望跳過常規word2vec 的介紹和抽象理解,而是去討論一些細節。特別是skip gram的網路結構。skipgram model 常常讓人驚訝於它的簡單結構。我認為基本沒啥彎路,或者需要複雜的模型解釋。讓我們從高層語...