词嵌入初探
文章目錄
- 目錄
- 1.詞嵌入產(chǎn)生的背景
- 1.1 NLP關(guān)鍵:語(yǔ)言的表示
- 1.2 NLP詞的表示方法類(lèi)型
- 1.2.1 獨(dú)熱表示one-hot
- 1.2.2 詞的分布式表示distributed representation
- 1.3 NLP中的語(yǔ)言模型
- 1.4 詞的分布表示
- 1.4.1 基于矩陣的分布表示
- 1.4.2 基于聚類(lèi)的分布表示
- 1.4.3 基于神經(jīng)網(wǎng)絡(luò)的分布表示,詞嵌入(word embedding)
- 2.什么是詞嵌入技術(shù)
- 2.1 概念
- 2.2 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型與word2vec
- 2.2.1 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
- 2.2.2 word2vec與CBOW、Skip-gram
- 2.2.3 word embedding理解
- 3.常用的詞嵌入技術(shù)有哪些
- 3.1 word2vec , GloVe
- 3.2 FastText, ELMo
目錄
1.詞嵌入產(chǎn)生的背景
1.1 NLP關(guān)鍵:語(yǔ)言的表示
我們知道,如果我們需要使用計(jì)算機(jī)去處理一些信息,則必須對(duì)這個(gè)問(wèn)題進(jìn)行數(shù)學(xué)建模。自然語(yǔ)言處理也是一樣,我們?nèi)绾螌?duì)我們的文本進(jìn)行數(shù)學(xué)建模呢?我們來(lái)看一下其他領(lǐng)域是如何處理的。
我們看看圖像和語(yǔ)音是怎么表示數(shù)據(jù)的
在語(yǔ)音中,用音頻頻譜序列向量所構(gòu)成的matrix作為前端輸入喂給NN進(jìn)行處理,good;在圖像中,用圖片的像素構(gòu)成的matrix展平成vector后組成的vector序列喂給NN進(jìn)行處理,good;那在自然語(yǔ)言處理中呢?噢你可能知道或者不知道,將每一個(gè)詞用一個(gè)向量表示出來(lái)!想法是挺簡(jiǎn)單的,對(duì),事實(shí)上就是這么簡(jiǎn)單,然而真有這么簡(jiǎn)單嗎?可能沒(méi)這么簡(jiǎn)單。
有人提到,圖像、語(yǔ)音屬于比較自然地低級(jí)數(shù)據(jù)表示形式,在圖像和語(yǔ)音領(lǐng)域,最基本的數(shù)據(jù)是信號(hào)數(shù)據(jù),我們可以通過(guò)一些距離度量,判斷信號(hào)是否相似,在判斷兩幅圖片是否相似時(shí),只需通過(guò)觀察圖片本身就能給出回答。而語(yǔ)言作為人類(lèi)在進(jìn)化了幾百萬(wàn)年所產(chǎn)生的一種高層的抽象的思維信息表達(dá)的工具,其具有高度抽象的特征,文本是符號(hào)數(shù)據(jù),兩個(gè)詞只要字面不同,就難以刻畫(huà)它們之間的聯(lián)系,即使是“麥克風(fēng)”和“話(huà)筒”這樣的同義詞,從字面上也難以看出這兩者意思相同(語(yǔ)義鴻溝現(xiàn)象),可能并不是簡(jiǎn)單地一加一那么簡(jiǎn)單就能表示出來(lái),而判斷兩個(gè)詞是否相似時(shí),還需要更多的背景知識(shí)才能做出回答。
那么據(jù)上是不是可以自信地下一個(gè)結(jié)論呢:如何有效地表示出語(yǔ)言句子是決定NN能發(fā)揮出強(qiáng)大擬合計(jì)算能力的關(guān)鍵前提!
1.2 NLP詞的表示方法類(lèi)型
按照現(xiàn)今目前的發(fā)展,詞的表示分為獨(dú)熱表示one-hot、分布式表示。
1.2.1 獨(dú)熱表示one-hot
獨(dú)熱編碼和我們平時(shí)處理結(jié)構(gòu)化數(shù)據(jù)中的類(lèi)別型的數(shù)據(jù)一樣。假設(shè)有一個(gè)大的詞典,詞的數(shù)目為N,則我們對(duì)每個(gè)詞表示成一個(gè)N為的向量,只有在該詞出現(xiàn)在詞典的位置處的值為1,其余位置處的值為0.
每個(gè)詞都是茫茫 0 海中的一個(gè) 1。這種 One-hot Representation 如果采用稀疏方式存儲(chǔ),會(huì)是非常的簡(jiǎn)潔:也就是給每個(gè)詞分配一個(gè)數(shù)字 ID。比如剛才的例子中,話(huà)筒記為 3,麥克記為 8(假設(shè)從 0 開(kāi)始記)。如果要編程實(shí)現(xiàn)的話(huà),用 Hash 表給每個(gè)詞分配一個(gè)編號(hào)就可以了。這么簡(jiǎn)潔的表示方法配合上最大熵、SVM、CRF 等等算法已經(jīng)很好地完成了 NLP 領(lǐng)域的各種主流任務(wù)。
現(xiàn)在我們分析他的不當(dāng)處。1、向量的維度會(huì)隨著句子的詞的數(shù)量類(lèi)型增大而增大;2、任意兩個(gè)詞之間都是孤立的,根本無(wú)法表示出在語(yǔ)義層面上詞語(yǔ)詞之間的相關(guān)信息,而這一點(diǎn)是致命的。
1.2.2 詞的分布式表示distributed representation
統(tǒng)的獨(dú)熱表示( one-hot representation)僅僅將詞符號(hào)化,不包含任何語(yǔ)義信息。如何將語(yǔ)義融入到詞表示中?Harris 在 1954 年提出的分布假說(shuō)( distributional hypothesis)為這一設(shè)想提供了理論基礎(chǔ):上下文相似的詞,其語(yǔ)義也相似。Firth 在 1957 年對(duì)分布假說(shuō)進(jìn)行了進(jìn)一步闡述和明確:詞的語(yǔ)義由其上下文決定( a word is characterized by thecompany it keeps)。
到目前為止,基于分布假說(shuō)的詞表示方法,根據(jù)建模的不同,主要可以分為三類(lèi):基于矩陣的分布表示、基于聚類(lèi)的分布表示和基于神經(jīng)網(wǎng)絡(luò)的分布表示。盡管這些不同的分布表示方法使用了不同的技術(shù)手段獲取詞表示,但由于這些方法均基于分布假說(shuō),它們的核心思想也都由兩部分組成:一、選擇一種方式描述上下文;二、選擇一種模型刻畫(huà)某個(gè)詞(下文稱(chēng)“目標(biāo)詞”)與其上下文之間的關(guān)系。
1.3 NLP中的語(yǔ)言模型
語(yǔ)言模型即對(duì)語(yǔ)言建模的模型。NLP中主要包括文法語(yǔ)言模型和統(tǒng)語(yǔ)言模型。其中文法語(yǔ)言模型因?yàn)檎Z(yǔ)法的復(fù)雜性,很難建模,用的比較少。目前NLP中用的比較多的是統(tǒng)計(jì)語(yǔ)言模型。
統(tǒng)計(jì)語(yǔ)言模型: 統(tǒng)計(jì)語(yǔ)言模型把語(yǔ)言(詞的序列)看作一個(gè)隨機(jī)事件,并賦予相應(yīng)的概率來(lái)描述其屬于某種語(yǔ)言集合的可能性。給定一個(gè)詞匯集合 V,對(duì)于一個(gè)由 V 中的詞構(gòu)成的序列S = ?w1, · · · , wT ? ∈ Vn,統(tǒng)計(jì)語(yǔ)言模型賦予這個(gè)序列一個(gè)概率P(S),來(lái)衡量S 符合自然語(yǔ)言的語(yǔ)法和語(yǔ)義規(guī)則的置信度。
用一句簡(jiǎn)單的話(huà)說(shuō),就語(yǔ)言模型就是計(jì)算一個(gè)句子的概率大小的這種模型。有什么意義呢?一個(gè)句子的打分概率越高,越說(shuō)明他是更合乎人說(shuō)出來(lái)的自然句子。
就是這么簡(jiǎn)單。常見(jiàn)的統(tǒng)計(jì)語(yǔ)言模型有N元文法模型(N-gram Model),最常見(jiàn)的是unigram model、bigram model、trigram model等等。形式化講,統(tǒng)計(jì)語(yǔ)言模型的作用是為一個(gè)長(zhǎng)度為 m 的字符串確定一個(gè)概率分布 P(w1; w2; :::; wm),表示其存在的可能性,其中 w1 到 wm 依次表示這段文本中的各個(gè)詞。一般在實(shí)際求解過(guò)程中,通常采用下式計(jì)算其概率值:
同時(shí)通過(guò)這些方法均也可以保留住一定的詞序信息,這樣就能把一個(gè)詞的上下文信息capture住。
1.4 詞的分布表示
假設(shè)語(yǔ)言滿(mǎn)足一個(gè)分布,是以一定的概率生成某些詞的。
1.4.1 基于矩陣的分布表示
基于矩陣的分布表示通常又稱(chēng)為分布語(yǔ)義模型,在這種表示下,矩陣中的一行,就成為了對(duì)應(yīng)詞的表示,這種表示描述了該詞的上下文的分布。由于分布假說(shuō)認(rèn)為上下文相似的詞,其語(yǔ)義也相似,因此在這種表示下,兩個(gè)詞的語(yǔ)義相似度可以直接轉(zhuǎn)化為兩個(gè)向量的空間距離。
常見(jiàn)到的Global Vector 模型( GloVe模型)是一種對(duì)“詞-詞”矩陣進(jìn)行分解從而得到詞表示的方法,屬于基于矩陣的分布表示。
1.4.2 基于聚類(lèi)的分布表示
該方法以根據(jù)兩個(gè)詞的公共類(lèi)別判斷這兩個(gè)詞的語(yǔ)義相似度。最經(jīng)典的方法是布朗聚類(lèi)(Brown clustering)
1.4.3 基于神經(jīng)網(wǎng)絡(luò)的分布表示,詞嵌入(word embedding)
基于神經(jīng)網(wǎng)絡(luò)的分布表示一般稱(chēng)為詞向量、詞嵌入(word embedding)或分布式表示(distributed representation)
神經(jīng)網(wǎng)絡(luò)詞向量表示技術(shù)通過(guò)神經(jīng)網(wǎng)絡(luò)技術(shù)對(duì)上下文,以及上下文與目標(biāo)詞之間的關(guān)系進(jìn)行建模。由于神經(jīng)網(wǎng)絡(luò)較為靈活,這類(lèi)方法的最大優(yōu)勢(shì)在于可以表示復(fù)雜的上下文。在前面基于矩陣的分布表示方法中,最常用的上下文是詞。如果使用包含詞序信息的 n-gram 作為上下文,當(dāng) n 增加時(shí), n-gram 的總數(shù)會(huì)呈指數(shù)級(jí)增長(zhǎng),此時(shí)會(huì)遇到維數(shù)災(zāi)難問(wèn)題。而神經(jīng)網(wǎng)絡(luò)在表示 n-gram 時(shí),可以通過(guò)一些組合方式對(duì) n 個(gè)詞進(jìn)行組合,參數(shù)個(gè)數(shù)僅以線性速度增長(zhǎng)。有了這一優(yōu)勢(shì),神經(jīng)網(wǎng)絡(luò)模型可以對(duì)更復(fù)雜的上下文進(jìn)行建模,在詞向量中包含更豐富的語(yǔ)義信息。
2.什么是詞嵌入技術(shù)
詞嵌入是一類(lèi)將詞映射為低維稠密向量的技術(shù)統(tǒng)稱(chēng)。最近比較火的是谷歌開(kāi)源的word2vec技術(shù)。
2.1 概念
基于神經(jīng)網(wǎng)絡(luò)的分布表示又稱(chēng)為詞向量、詞嵌入,神經(jīng)網(wǎng)絡(luò)詞向量模型與其它分布表示方法一樣,均基于分布假說(shuō),核心依然是上下文的表示以及上下文與目標(biāo)詞之間的關(guān)系的建模。
前面提到過(guò),為了選擇一種模型刻畫(huà)某個(gè)詞(下文稱(chēng)“目標(biāo)詞”)與其上下文之間的關(guān)系,我們需要在詞向量中capture到一個(gè)詞的上下文信息。同時(shí),上面我們恰巧提到了統(tǒng)計(jì)語(yǔ)言模型正好具有捕捉上下文信息的能力。那么構(gòu)建上下文與目標(biāo)詞之間的關(guān)系,最自然的一種思路就是使用語(yǔ)言模型。從歷史上看,早期的詞向量只是神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的副產(chǎn)品。
2001年, Bengio 等人正式提出神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型( Neural Network Language Model ,NNLM),該模型在學(xué)習(xí)語(yǔ)言模型的同時(shí),也得到了詞向量。所以請(qǐng)注意一點(diǎn):詞向量可以認(rèn)為是神經(jīng)網(wǎng)絡(luò)訓(xùn)練語(yǔ)言模型的副產(chǎn)品。
2.2 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型與word2vec
2.2.1 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
a) Neural Network Language Model ,NNLM
b) Log-Bilinear Language Model, LBL
c) Recurrent Neural Network based Language Model,RNNLM
d) Collobert 和 Weston 在2008 年提出的 C&W 模型
e) Mikolov 等人提出了 CBOW( Continuous Bagof-Words)和 Skip-gram 模型
2.2.2 word2vec與CBOW、Skip-gram
2.2.3 word embedding理解
現(xiàn)在,詞向量既能夠降低維度,又能夠capture到當(dāng)前詞在本句子中上下文的信息(表現(xiàn)為前后距離關(guān)系),那么我們對(duì)其用來(lái)表示語(yǔ)言句子詞語(yǔ)作為NN的輸入是非常自信與滿(mǎn)意的。
另外一點(diǎn)很實(shí)用的建議,在你做某一項(xiàng)具體的NLP任務(wù)時(shí)如你要用到詞向量,那么我建議你:要么1、選擇使用別人訓(xùn)練好的詞向量,注意,得使用相同語(yǔ)料內(nèi)容領(lǐng)域的詞向量;要么2、自己訓(xùn)練自己的詞向量。我建議是前者,因?yàn)椤犹嗔恕?/p>
3.常用的詞嵌入技術(shù)有哪些
3.1 word2vec , GloVe
在過(guò)去的五年里,已經(jīng)提出了大量可行的詞嵌入的方法。 最常用的模型是word2vec和GloVe,它們都是基于分布假設(shè)( distributional hypothesis)的無(wú)監(jiān)督方法(出現(xiàn)在相似語(yǔ)境中的詞往往具有相似的含義)。
Word2Vec:https://github.com/dav/word2vec/
GloVe:https://nlp.stanford.edu/projects/glove/
3.2 FastText, ELMo
雖然有些研究工作通過(guò)結(jié)合對(duì)語(yǔ)義或句法知識(shí)的監(jiān)督來(lái)增強(qiáng)這些無(wú)監(jiān)督的方法,但在2017-2018年,純粹的無(wú)監(jiān)督方法獲得了有趣的進(jìn)展,最著名的是:FastText(word2vec的擴(kuò)展)和ELMo(較先進(jìn)的上下文詞向量)。
FastText
FastText由Tomas Mikolov團(tuán)隊(duì)提出,word2vec框架也是他們?cè)?013年提出的,FastText促進(jìn)了對(duì)于通用詞嵌入研究的爆炸式增長(zhǎng)。
FastText對(duì)原始word2vec向量的主要改進(jìn)是包含基于字符的n-gram模型,它允許計(jì)算沒(méi)有出現(xiàn)在訓(xùn)練數(shù)據(jù)中的單詞表示(“詞外”字)。
FastText矢量訓(xùn)練速度超快,可在157種語(yǔ)言的Wikipedia和Crawl訓(xùn)練中使用。 他們是一個(gè)很好的基準(zhǔn)。
ELMo
最近,深層語(yǔ)境化詞表征(ELMo)在較好的詞嵌入技術(shù)基礎(chǔ)上有了顯著地提升。 它們由艾倫人工智能研究所開(kāi)發(fā),將于6月初在NAACL 2018展出。
ELMo知道很多關(guān)于文字的上下文
在ELMo中,每個(gè)單詞被賦予一個(gè)表征,這個(gè)表征是它們所屬的整個(gè)語(yǔ)料庫(kù)句子的函數(shù)。 嵌入是從雙層雙向語(yǔ)言模型(LM)的內(nèi)部狀態(tài)計(jì)算出來(lái)的,因此名為“ELMo”:Embeddings from Language Models,從語(yǔ)言模型嵌入。
ELMo的特點(diǎn):
ELMo的輸入是字符而不是單詞。 因此,可以利用子字詞單元來(lái)計(jì)算有意義的表征,即使對(duì)于詞典外的詞(如FastText)也是如此。
ELMo是由biLMs若干層激活的連接。 語(yǔ)言模型的不同層對(duì)單詞上的不同類(lèi)型信息進(jìn)行編碼(例如,詞語(yǔ)標(biāo)注由biLSTM的較低層完成預(yù)測(cè),而詞義消歧在較高層中更好地編碼)。 把所有層連接起來(lái),可以自由組合各種文字表征,以提高下游任務(wù)的性能表現(xiàn)。
總結(jié)
- 上一篇: 《事实:用数据思考,避免情绪化决策》笔记
- 下一篇: 《Python Cookbook 3rd