輕鬆理解skip gram模型

2021-08-11 22:00:39 字數 2890 閱讀 2156

在許多自然語言處理任務中,許多單詞表達是由他們的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 常常讓人驚訝於它的簡單結構。我認為基本沒啥彎路,或者需要複雜的模型解釋。讓我們從高層語...