2015-04-01 87 views
7

我想了解爲什麼word2vec的skipgram模型有2個表示每個單詞(隱藏表示這是詞嵌入)和輸出表示(也稱爲上下文詞嵌入)。這只是爲了一般性,上下文可以是任何東西(不只是單詞)或者是否有更根本的原因爲什麼word2vec爲每個單詞使用2個表示?

回答

0

word2vec模型可以被認爲是一個帶有一個隱藏層的簡化神經網絡模型,並且沒有非線性激活。給出一個單詞的模型試圖預測它出現的上下文單詞。

因爲它是一個神經網絡,它需要輸入,輸出和目標函數。輸入和輸出只是單詞的一種熱門編碼,目標函數是在輸出端具有softmax激活的交叉熵損失。

隱藏權重矩陣的輸入乘以單熱編碼輸入,爲每個單詞選擇一個唯一列。類似地,隱藏到輸出矩陣表明它可以解釋爲對應於每個上下文字的行(相同的熱門編碼輸出在此處起作用)。

7

我建議你閱讀這篇文章關於Word2Vec: http://arxiv.org/pdf/1402.3722v1.pdf

他們給爲什麼在腳註兩種表示一種直覺:它是不太可能,一個單詞出現在自己的範圍內,所以你會想最小化概率p(w | w)。但是,如果將w用作上下文而不是w用作中心詞,則如果要在單位圓中保留單詞嵌入,則不能將p(w | w)(通過點積計算)最小化。

但它只是一種直覺,我不知道是否有任何明確的理由這個...

恕我直言,你爲什麼使用不同的表示真正的原因是因爲您操作不同性質的實體。作爲背景的「狗」不被視爲與作爲中心詞的「狗」相同,因爲它們不是。你基本上操縱出現的大矩陣(單詞,上下文),試圖最大化這些實際發生的對的概率。理論上你可以把它用作上下文bigrams,試圖最大化例如(word =「for」,context =「to maximize」)的概率,並且你將分配一個向量表示來「最大化」。我們不這樣做是因爲會有太多的表示要計算,我們會有一個稀疏的矩陣,但我認爲這個想法在這裏:我們使用「1-gram」作爲上下文的事實只是一個特例我們可以使用的所有類型的上下文。

這就是我的看法,如果錯了,請更正!

相關問題