一坦康、概述
詞嵌入(Word Embedding)是將自然語(yǔ)言表示的單詞轉(zhuǎn)換為計(jì)算機(jī)能夠理解的向量或矩陣形式的技術(shù)丐黄。在Word Embedding之前,常用的方法有one-hot、n-gram斜棚、co-occurrence matrix糕篇,但是他們都有各自的缺點(diǎn)啄育。Word Embedding是一種無(wú)監(jiān)督的方法。
Word Embedding的主要任務(wù)是輸入收集到的詞匯拌消,然后獲得它的向量表示挑豌,其大概過(guò)程如下:
Word Embedding不能使用AutoEncoder來(lái)做是因?yàn)闊o(wú)法為AutoEncoder的輸入找到一個(gè)包含可以學(xué)習(xí)的信息的表示。比如使用獨(dú)熱編碼作為AutoEncoder的輸入墩崩,由于獨(dú)熱編碼的每一維度之間是相互獨(dú)立的氓英,且獨(dú)熱編碼包含的信息量極少,因此AutoEncoder學(xué)不到一些有用的信息鹦筹。
Word Embedding主要通過(guò)訓(xùn)練數(shù)據(jù)的上下文來(lái)學(xué)習(xí)文本的信息铝阐。Word Embedding假設(shè)不同的詞如果處在同樣的上下文位置的話(huà),這兩個(gè)詞就會(huì)具有一定的相似性铐拐。
二徘键、詞嵌入的方法
- Count based
Count based的方法的主要思想是認(rèn)為如果兩個(gè)詞與頻繁地同時(shí)出現(xiàn)练对,則其詞向量和會(huì)比較接近。
這種方法的典型模型是GloVe模型吹害,這里不做重點(diǎn)介紹螟凭。
- Prediction based
- 使用的網(wǎng)絡(luò)結(jié)構(gòu)
在多層神經(jīng)網(wǎng)絡(luò)中輸入當(dāng)前詞的獨(dú)熱編碼向量并輸出每個(gè)維度表示為每個(gè)詞的概率的向量,然后取第一個(gè)隱藏層的輸入作為詞的編碼向量它呀,其過(guò)程如下圖所示:
將獲得的詞的編碼向量進(jìn)行可視化以后可以看到類(lèi)似的詞會(huì)出現(xiàn)在比較接近的地方:
- 為什么第一個(gè)隱藏層的輸入可以作為詞的編碼
在下面的訓(xùn)練文本中輸入兩個(gè)人名網(wǎng)絡(luò)會(huì)預(yù)測(cè)到相同的輸出“宣誓就職”螺男,為了使得神經(jīng)網(wǎng)絡(luò)輸出去同樣的結(jié)果,神經(jīng)網(wǎng)絡(luò)就需要將兩個(gè)人名經(jīng)過(guò)權(quán)重的處理映射到接近的詞向量纵穿,然后將這個(gè)詞向量作為神經(jīng)網(wǎng)絡(luò)的輸入下隧。
- 共享參數(shù)——使用多個(gè)詞預(yù)測(cè)下一個(gè)詞
在實(shí)際應(yīng)用中使用一個(gè)詞來(lái)預(yù)測(cè)下一次個(gè)往往是比較困難的,一個(gè)詞后面可能出現(xiàn)的詞的可能結(jié)果有千千萬(wàn)萬(wàn)種政恍,因此通常將多個(gè)詞同時(shí)作為網(wǎng)絡(luò)的輸入汪拥,通常需要輸入至少10個(gè)詞才會(huì)訓(xùn)練出效果比較好的模型。
以輸入兩個(gè)詞為例篙耗,假設(shè)輸入的兩個(gè)詞向量為和迫筑,其長(zhǎng)度均為,第一個(gè)隱藏層的輸入為宗弯,的長(zhǎng)度為脯燃,則兩個(gè)權(quán)重矩陣的形狀為。
在實(shí)際過(guò)程中需要使得和相等蒙保,即辕棚,則,這就是共享參數(shù)邓厕。對(duì)于為什么需要共享參數(shù)有以下兩點(diǎn)解釋?zhuān)?br>
①參數(shù)共享可以保證同樣的詞出現(xiàn)在不同位置時(shí)不會(huì)使得編碼的結(jié)果不同逝嚎;
②表示詞的獨(dú)熱編碼往往維數(shù)很高,共享參數(shù)可以降低參數(shù)的數(shù)量详恼。
輸入多個(gè)詞的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示补君,其中相同顏色的權(quán)重表示共享的參數(shù):
在訓(xùn)練時(shí)為了保證參數(shù)共享,將采用下種方式進(jìn)行參數(shù)更新:
以下為一個(gè)舉例昧互,預(yù)測(cè)下一個(gè)詞時(shí)使用的是前兩個(gè)詞挽铁,然后將輸出與預(yù)測(cè)的詞的獨(dú)熱編碼的交叉熵作為損失函數(shù),通過(guò)最小化損失來(lái)訓(xùn)練模型:
- 其他變種
Continuous bag of word (CBOW) model
Skip-gram
- 可視化
從訓(xùn)練得到的模型中獲得詞的編碼向量以后進(jìn)行可視化可以看到一些規(guī)律敞掘,比如國(guó)家和首都之間有一定的聯(lián)系:
動(dòng)詞的三種時(shí)態(tài)之間有一定的規(guī)律:
一類(lèi)動(dòng)物的詞向量與某一特定品種的該類(lèi)動(dòng)物的詞向量的差叽掘,以及一類(lèi)職業(yè)的詞向量與某一特定的該類(lèi)職業(yè)的詞向量的差會(huì)落在各自的位置:
根據(jù)上述特性可以來(lái)回答類(lèi)比的問(wèn)題。比如我們知道玖雁,就可以回答以下問(wèn)題:
使更扁,然后尋找與最接近的詞向量對(duì)應(yīng)的詞,大概率會(huì)找到答案“Germany”。
三疯潭、一些其他應(yīng)用
- 多語(yǔ)種的Embedding
如果分別訓(xùn)練英文的材料和中文的材料赊堪,那么分別得到的結(jié)果就不會(huì)有任何聯(lián)系面殖,比如“apple”和“蘋(píng)果”的詞向量之間就不會(huì)有聯(lián)系竖哩。這是因?yàn)樵~嵌入的方法只根據(jù)詞的上下文來(lái)建立詞的編碼,如果不將中文和英文的資料放到一起訓(xùn)練就不會(huì)使相同意義的中英文詞匯的詞向量產(chǎn)生任何聯(lián)系脊僚。但是如果我們?cè)谥杏⑽姆謩e訓(xùn)練出的詞向量的基礎(chǔ)上繼續(xù)訓(xùn)練一個(gè)模型相叁,使得中英文相同意義的詞映射到同一個(gè)位置,就可以得到以下結(jié)果辽幌,這樣的模型可以用來(lái)進(jìn)行類(lèi)似翻譯這樣的工作:
- 對(duì)圖像的Embedding
首先可以對(duì)各種類(lèi)別的詞進(jìn)行詞嵌入獲得詞的編碼向量增淹,然后可以訓(xùn)練一個(gè)模型使得該模型的輸入是圖片,輸出一個(gè)和該圖片類(lèi)別的詞向量同樣維度的向量并且使得輸出散落在類(lèi)別的詞向量周?chē)谄蟆Mㄟ^(guò)這樣一種方式就可能實(shí)現(xiàn)當(dāng)這個(gè)模型輸入一張沒(méi)有訓(xùn)練過(guò)的類(lèi)別的圖片時(shí)可以將該圖片的編碼向量映射到正確的類(lèi)別的詞向量周?chē)侨螅瑥亩鉀Q傳統(tǒng)的分類(lèi)方法只能夠識(shí)別訓(xùn)練過(guò)的類(lèi)別的圖片的局限性。下圖是上述過(guò)程的一個(gè)舉例加酵,在這里訓(xùn)練了車(chē)輛拳喻、馬和狗的圖片,當(dāng)貓的圖片輸入到模型中時(shí)可以將其映射到“cat”的詞向量周?chē)?/p>
- 對(duì)詞序列的Embedding
詞序列可以指文檔或一段話(huà)猪腕,可以將不定長(zhǎng)的詞向量映射到定長(zhǎng)的編碼向量冗澈,這個(gè)編碼向量就代表了這個(gè)序列的語(yǔ)義,這種Embedding的方法可以解決Bag-of-word+AutuEncoder方法的局限性陋葡。Bag-of-word+AutuEncoder方法的過(guò)程如下圖所示:
Bag-of-word+AutuEncoder的局限性在于Bag-of-word忽略了詞序列中詞的順序所包含的信息亚亲。舉例來(lái)說(shuō)下面兩句話(huà)雖然包含同樣的詞卻是完全不同的意思,一句是positive的腐缤,另一句是negative的: