在許多自然語言處理任務中,許多單詞表達是由他們的tf-idf分數決定的。即使這些分數告訴我們乙個單詞在乙個文字中的相對重要性,但是他們並沒有告訴我們單詞的語義。word2vec是一類神經網路模型——在給定無標籤的語料庫的情況下,為語料庫中的單詞產生乙個能表達語義的向量。這些向量通常是有用的:
接下來我將描述word2vec其中乙個模型,叫做skip-gram模型在我詳細介紹skip-gram模型前,我們先來了解下訓練資料的格式。skip-gram模型的輸入是乙個單詞wi
,它的輸出是wi
的上下文wo
,1,.
..,w
o,c ,上下文的視窗大小為
c 。舉個例子,這裡有個句子「i drive my car to the store」。我們如果把」car」作為訓練輸入資料,單詞組就是輸出。所有這些單詞,我們會進行one-hot編碼。skip-gram模型圖如下所示:
接下來我們來看下skip-gram神經網路模型,skip-gram的神經網路模型是從前饋神經網路模型改進而來,說白了就是在前饋神經網路模型的基礎上,通過一些技巧使得模型更有效。我們先上圖,看一波skip-gram的神經網路模型:
在上圖中,輸入向量
x代表某個單詞的one-hot編碼,對應的輸出向量。輸入層與隱藏層之間的權重矩陣
w 的第
i行代表詞彙表中第
i 個單詞的權重。接下來重點來了:這個權重矩陣
w就是我們需要學習的目標(同w′
),因為這個權重矩陣包含了詞彙表中所有單詞的權重資訊。上述模型中,每個輸出單詞向量也有個n×
v 維的輸出向量w′
。最後模型還有
n 個結點的隱藏層,我們可以發現隱藏層節點hi
的輸入就是輸入層輸入的加權求和。因此由於輸入向量
x 是one-hot編碼,那麼只有向量中的非零元素才能對隱藏層產生輸入。因此對於輸入向量x其中
xk=1
並且xk
′=0,
k≠k′
。所以隱藏層的輸出只與權重矩陣第
k 行相關,從數學上證明如下: h=
xtw=
wk,.
:=vwi
(1)注意因為輸入時one-hot編碼,所以這裡是不需要使用啟用函式的。同理,模型輸出結點c×
v 的輸入也是由對應輸入結點的加權求和計算得到: uc
,j=v
′twj
h(2)
其實從上圖我們也看到了輸出層中的每個單詞都是共享權重的,因此我們有uc
,j=u
j 。最終我們通過softmax函式產生第
c 個單詞的多項式分布。 p(
wc,j
=wo,
c|wi
)=yc
,j=e
xp(u
c,j)
∑vj′
=1ex
p(uj
′)(3
)說白了,這個值就是第c個輸出單詞的第j個結點的概率大小。
前面我講解了skip-gram模型的輸入向量及輸出的概率表達,以及我們學習的目標。接下來我們詳細講解下學習權重的過程。第一步就是定義損失函式,這個損失函式就是輸出單詞組的條件概率,一般都是取對數,如下所示: e=
−log
p(wo
,1,w
o,2,
...,
wo,c
|wi)
(4)
=−lo
g∏c=
1cex
p(uc
,j)∑
vj′=
1exp
(u′j
)(5)
接下來就是對上面的概率求導,具體推導過程可以去看bp演算法,我們得到輸出權重矩陣w′
的更新規則: w′
(new
)=w′
(old
)ij−
η⋅∑c
=1c(
yc,j
−tc,
j)⋅h
i(6)
同理權重
w 的更新規則如下: w(
new)
=w(o
ld)i
j−η⋅
∑j=1
v∑c=
1c(y
c,j−
tc,j
)⋅w′
ij⋅x
j(7)
從上面的更新規則,我們可以發現,每次更新都需要對整個詞彙表求和,因此對於很大的語料庫來說,這個計算複雜度是很高的。於是在實際應用中,google的mikolov等人提出了分層softmax及負取樣可以使得計算複雜度降低很多。
[1] mikolov t, chen k, corrado g, et al. efficient estimation of word representations in vector space[j]. computer science, 2013.(這篇文章就講了兩個模型:cbow 和 skip-gram)
[2] mikolov t, sutskever i, chen k, et al. distributed representations of words and phrases and their compositionality[j]. 2013, 26:3111-3119.(這篇文章針對skip-gram模型計算複雜度高的問題提出了一些該進)
[3] presentation on word2vec(這是nips 2013workshop上mikolov的ppt報告)
CBOW與Skip Gram模型基礎
用distributed representation我們可以較容易的分析詞之間的關係了,比如將我們的詞降到二維,我們會發現 其資料的輸入輸出分為cbow和skip gram 這樣我們這個cbow的例子裡,輸入八個詞向量,輸出的是所有詞的softmax概率 訓練的目標的期望訓練樣本特定次對應的sof...
Skip Gram模型目標函式詳細推導
我們拿這句話進行舉例 i like playing football.那我們需要做的就是,當拿到某個單詞時,推導出它的前乙個單詞和後乙個單詞。like i,playing p i like p playing like playing like,football p like playing p f...
Word2Vec教程 Skip Gram模型
這個教程包含 訓練word2vec的 skip gram 模型。通過這個教程,我希望跳過常規word2vec 的介紹和抽象理解,而是去討論一些細節。特別是skip gram的網路結構。skipgram model 常常讓人驚訝於它的簡單結構。我認為基本沒啥彎路,或者需要複雜的模型解釋。讓我們從高層語...