NLP—word2vec词向量简介
NLP處理的數(shù)據(jù)都是文字,而文字是無(wú)法直接被計(jì)算機(jī)計(jì)算的,于是人們想出了使用獨(dú)熱編碼的方式來(lái)表示單詞。
<span style="font-size:16px;">浙江 [0,0,0,0,0,0,0,1,0,......0,0,0,0,0,0,0]
江蘇 [0,0,0,0,1,0,0,0,0,......0,0,0,0,0,0,0]
安徽 [0,0,0,1,0,0,0,0,0,......0,0,0,0,0,0,0]
天津 [0,0,0,0,0,0,0,0,0,......1,0,0,0,0,0,0]</span>
在語(yǔ)料庫(kù)中采用這樣一種方式來(lái)表示單詞無(wú)疑會(huì)面臨一些問(wèn)題,例如忽略了單詞之間的相關(guān)性,當(dāng)語(yǔ)料庫(kù)很大的時(shí)候,維度太高且矩陣稀疏。隨后出現(xiàn)了word2vec詞向量這種方式,它可以將獨(dú)熱編碼轉(zhuǎn)化為低維度的連續(xù)值即稠密向量,并且其中意思相近的詞被映射到向量空間中相近的位置。如下圖所示經(jīng)過(guò)一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到一個(gè)權(quán)值矩陣,將獨(dú)熱編碼轉(zhuǎn)化為稠密低維度向量。
word2vec是從大量文本中以無(wú)監(jiān)督學(xué)習(xí)的方式學(xué)習(xí)語(yǔ)義知識(shí)的模型,其本質(zhì)就是通過(guò)學(xué)習(xí)文本來(lái)用詞向量的方式表征詞的語(yǔ)義信息,通過(guò)嵌入空間將語(yǔ)義上相似的單詞映射到距離相近的地方。即將單詞從原先所屬的空間映射到新的多維空間中。舉例來(lái)講,smart和intelligent意思相近,target和goal在意思上比較相近,但是target與apple離的較遠(yuǎn),映射到新的空間中后smart和intelligent、target和goal,它們的詞向量比較相近,而target與apple的詞向量相差較遠(yuǎn)。
常見(jiàn)的word2vec詞向量有兩種模式,CBOW(continuous bag of words)和skip-gram,CBOW是根據(jù)目標(biāo)單詞所在原始語(yǔ)句的上下文來(lái)推測(cè)目標(biāo)單詞本身,而skip-gram則是利用該目標(biāo)單詞推測(cè)原始語(yǔ)句信息即它的上下文。舉個(gè)例子:美國(guó)對(duì)中國(guó)進(jìn)口鋼鐵采取了反傾銷調(diào)查。那么CBOW的目標(biāo)可以是:{中國(guó),鋼鐵}—>進(jìn)口,{采取了,調(diào)查}—>反傾銷,{美國(guó),中國(guó)}—>對(duì);skip-gram的目標(biāo)可以是:{進(jìn)口}—>{中國(guó),鋼鐵},{了}—>{采取,反傾銷}。下面我們將以skip-gram為例做詳細(xì)介紹。
以The president walked into the White House這句話為例,首先選取句子中的一個(gè)詞作為輸入詞input word,比如我們把president作為輸入詞;有了輸入詞之后,再定義一個(gè)skip_window的參數(shù),當(dāng)skip_window=2時(shí)代表從當(dāng)前輸入詞input word的左右兩側(cè)各選取兩個(gè)單詞,即窗口中的詞就是【The,president,walked,into】。另一個(gè)重要的參數(shù)為num_skips,當(dāng)num_skips=2時(shí),代表我們從整個(gè)窗口中選取2個(gè)不同的詞作為我們的output word,即(president,The),(president,walked)。神經(jīng)網(wǎng)絡(luò)通過(guò)學(xué)習(xí)這樣的訓(xùn)練數(shù)據(jù)最終輸出一個(gè)概率分布,這個(gè)概率分布表征了詞匯表中每個(gè)單詞出現(xiàn)在president之后的概率大小。我們直觀的理解一下就會(huì)明白動(dòng)作詞、政治話題等出現(xiàn)在總統(tǒng)之后的概率將會(huì)更大,因?yàn)檫@些單詞將會(huì)有更大的可能性出現(xiàn)在president的窗口之中。
我們的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如下:
通過(guò)訓(xùn)練數(shù)據(jù)學(xué)習(xí)得到的模型,我們需要的是模型隱藏層的權(quán)重矩陣,這些權(quán)重實(shí)際上就是我們?cè)噲D去學(xué)習(xí)的“詞向量”。通過(guò){ president the }、{ president walked }這樣的樣本,模型就會(huì)知道經(jīng)常出現(xiàn)在“總統(tǒng)”附近的單詞有哪些,在這個(gè)過(guò)程中我們需要的是訓(xùn)練模型的副產(chǎn)物即隱藏層權(quán)重矩陣,通過(guò)這個(gè)權(quán)重矩陣就可以將獨(dú)熱編碼的單詞轉(zhuǎn)換為低維的稠密詞向量,而這樣的詞向量恰恰是作為特征向量輸入到神經(jīng)網(wǎng)絡(luò)的輸出層softmax層的。我們發(fā)現(xiàn),如果語(yǔ)料庫(kù)比較巨大,例如有10萬(wàn)單詞,隱藏層結(jié)點(diǎn)200個(gè),即每個(gè)單詞使用200維度特征表示,那么權(quán)重矩陣就是[100000,200],此時(shí)采用隨機(jī)梯度下降等方法來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)將是十分緩慢的,所以提出了Hierarchical Softmax、Negative Sampling等方法來(lái)加速訓(xùn)練。
1、詞表當(dāng)中,有些單詞組合或者詞組在一起的時(shí)候有特定的含義,例如“machine learning”在一起代表一個(gè)學(xué)科領(lǐng)域,而拆開則表示了不同的意義,對(duì)于這樣的單詞應(yīng)該并在一起進(jìn)行模型訓(xùn)練。
2、高頻詞抽樣,有些單詞“and”、“but”、“a”等等詞匯出現(xiàn)的頻率要遠(yuǎn)遠(yuǎn)高于其他一些詞匯,數(shù)量遠(yuǎn)遠(yuǎn)超過(guò)了訓(xùn)練這些詞向量所需的樣本數(shù)。定義一個(gè)單詞被保留的概率P,單詞出現(xiàn)的頻次越高,則單詞不被抽樣刪除的可能性越低。
3、Negative Sampling負(fù)采樣:以目標(biāo)單詞與窗口內(nèi)單詞組成的真實(shí)單詞對(duì)“得分”和目標(biāo)單詞與詞表中其他單詞隨機(jī)組成的單詞對(duì)“得分”為代價(jià)函數(shù)。不同于原本每個(gè)訓(xùn)練樣本更新所有的權(quán)重,負(fù)采樣每次讓一個(gè)訓(xùn)練樣本僅僅更新一小部分的權(quán)重,這樣就會(huì)降低梯度下降過(guò)程中的計(jì)算量。
?
總結(jié)
以上是生活随笔為你收集整理的NLP—word2vec词向量简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图神经网络学习一(浅谈embedding
- 下一篇: word2vec如何得到词向量