通俗易懂的Word Embeddings
通俗易懂的Word Embeddings
??Word Embeddings是機(jī)器學(xué)習(xí)領(lǐng)域最酷的事情之一,因?yàn)樗梢詮暮A康奈谋緮?shù)據(jù)中挖掘出單詞之間紛繁復(fù)雜的聯(lián)系。例如你可以在不給定任何先驗(yàn)知識的情況下,利用Word Embeddings學(xué)習(xí)到所有和顏色相關(guān)的詞匯。為了方便理解,我們先給出一個簡單的例子:
I painted the bench _______??不難發(fā)現(xiàn)上述例句中缺少一個單詞,顯然這里需要填入一個有關(guān)色彩的詞匯,例如:
I painted the bench red
I painted the bench green
??甚至我們可以說這里所填入的內(nèi)容很可能與顏色有關(guān),但不幸的是,這里也可以填入和色彩無關(guān)的單詞,比如:
I painted the bench today
??但不管怎么樣,語境與語義其實(shí)是息息相關(guān)的。所以上述的例子中,我們在空白地方填入不同的單詞,并且會假設(shè)這些單詞是相關(guān)的。
??除了以上情況之外,還有另外一種方式可以利用語境來幫助我們理解兩個單詞之間的相關(guān)性。若兩個單詞通常出現(xiàn)在同樣的語境中
,我們便認(rèn)為這兩個單詞是有關(guān)聯(lián)的。我們給出3個不同的句子來幫助我們理解上述內(nèi)容:
??第一個句子中United和States通常都會一起出現(xiàn),所以我們會將這兩個單詞合并使用。在第二個以及第三個句子中,我們會發(fā)現(xiàn)joke和laugh是有關(guān)聯(lián)的單詞,因?yàn)樗麄兺鶗霈F(xiàn)在相似的語境中。在這里我們想要指出的是laughed和laugh有可能是不同的單詞,laughed是過去式而laugh是動詞原形。同樣的,jokes表示復(fù)數(shù)形式而joke是單數(shù)形式。這些都是同一單詞的不同形態(tài)。Word Embeddings可以通過語料學(xué)習(xí)到單詞的時態(tài)以及單復(fù)數(shù)的變換。在上例中,我們可以發(fā)現(xiàn)laughed和joke出現(xiàn)在了同一語境中,并且joke和laugh也出現(xiàn)在同一語境中,所以Word Embeddings會認(rèn)為laughed和laugh都和joke有關(guān),故而認(rèn)為他們是有關(guān)聯(lián)的。
??Word Embeddings其實(shí)就是將單詞轉(zhuǎn)變?yōu)橄蛄?#xff0c;比如你給定hamburger,模型會將其轉(zhuǎn)換為64維的向量,向量中的數(shù)值可以對該單詞進(jìn)行描述。比如我們給了hamburger和cheeseburger,Word Embeddings會用非常相近的向量來表述這兩個單詞。但當(dāng)我們輸入Ferrari,我們希望表述Ferrari的詞向量離hamburger以及cheeseburger很遠(yuǎn)。
??Word Embeddings中很經(jīng)典的一個例子就是man-woman+queen=king。所以我們不僅希望相似的單詞具有相一致的向量表述,還希望不同單詞的向量表述之間的差異也包含有用的信息。
如何實(shí)現(xiàn)呢
??第一種實(shí)現(xiàn)方法就是Word2vec,其工作過程如下:
??我們從語料中任選一個單詞,并將該單詞抽出,例如將yellow這個單詞取出來。然后將該單詞喂入word2vec神經(jīng)網(wǎng)絡(luò),并預(yù)測其它單詞與喂入單詞在同一句話中的概率。所以本例中的Word2vec模型是根據(jù)給定單詞預(yù)測上下文單詞。
??神經(jīng)網(wǎng)絡(luò)對不同的單詞有不同的輸入神經(jīng)元。所以我們可以將輸入的神經(jīng)元置1而將其它神經(jīng)元置0,這個過程類似于獨(dú)熱編碼。然后將輸入層與隱層相連,隱層具有較少的神經(jīng)元,例如64個神經(jīng)元。然后我們將隱層與輸出層相連,輸出層包含所有上下文有關(guān)的單詞。通過這種方式,不同的單詞若具有相似的上下文,那他們的隱層表示就會很相近。
??除了word2vec以外,我們也可以使用Co-occurrence Matrix表示單詞之間的聯(lián)系:
??矩陣中的數(shù)值表示兩個單詞出現(xiàn)在同一句話中的次數(shù)。通過Co-occurrence Matrix生成Word Embeddings的最簡單的方法之一是利用矩陣分解的方法:
??這里的矩陣分解可以采用SVD分解等方法。我們可以將圖右邊的又瘦又高的矩陣加以利用,該矩陣的每一行都表示一個單詞的Word Embedding。當(dāng)然我們也可以將瘦高矩陣的某一行與矮胖矩陣對應(yīng)的那一列相加后取平均值來表示一個單詞的Word Embedding。
??除了上述方法之外,還有一種被稱為GloVe的方法能夠生成Word Embeddings。
參考鏈接
[1] Word Embeddings
[2] Try the web app
[3] Word2vec paper
[4] GloVe paper
[5] GloVe webpage
[6] http://www.aclweb.org/anthology/Q15-1016
[7] https://en.wikipedia.org/wiki/Word_embedding
總結(jié)
以上是生活随笔為你收集整理的通俗易懂的Word Embeddings的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人人都能看懂的循环神经网络RNN
- 下一篇: 可视化神经机器翻译模型(基于注意力机制的