DNN模型训练词向量原理
轉(zhuǎn)自:https://blog.csdn.net/fendouaini/article/details/79821852
1 詞向量
在NLP里,最細(xì)的粒度是詞語,由詞語再組成句子,段落,文章。所以處理NLP問題時(shí),怎么合理的表示詞語就成了NLP領(lǐng)域中最先需要解決的問題。
因?yàn)檎Z言模型的輸入詞語必須是數(shù)值化的,所以必須想到一種方式將字符串形式的輸入詞語轉(zhuǎn)變成數(shù)值型。由此,人們想到了用一個(gè)向量來表示詞組。在很久以前,人們常用one-hot對詞組進(jìn)行編碼,這種編碼的特點(diǎn)是,對于用來表示每個(gè)詞組的向量長度是一定的,這個(gè)長度就是對應(yīng)的整個(gè)詞匯表的大小,對應(yīng)每個(gè)具體的詞匯表中的詞,將該詞的對應(yīng)的位置置為1,向量其他位置置為0。舉個(gè)例子,假設(shè)我們現(xiàn)有5個(gè)詞組組成的詞匯表,詞’Queen’對應(yīng)的序號是2,那么它的詞向量就是(0,1,0,0,0)。其他的詞也都是一個(gè)長度為5的向量,對應(yīng)位置是1,其余位置為0。
?
?
One-hot code非常簡單,但是存在很大的問題,當(dāng)詞匯表很大,比如數(shù)百萬個(gè)詞組成了詞匯表時(shí),每個(gè)詞的向量都是數(shù)百萬維,會造成維度災(zāi)難。并且,one-hot 編碼的向量會過于稀疏,這樣的稀疏向量表達(dá)一個(gè)詞效率并不高。
而dristributed representation(通常叫做詞向量)可以很好的解決one-hot code的問題,它是通過訓(xùn)練,將每個(gè)詞都映射到一個(gè)較短的詞向量上(這樣就解決了每個(gè)詞向量的維度過大問題),所有的詞向量構(gòu)成了詞匯表的每個(gè)詞。并且更重要的是,dristributed representation表示的較短詞向量還具有衡量不同詞的相似性的作用。比如‘忐’,‘忑’兩個(gè)字如果作為兩個(gè)詞,那么在dristributed representation表示下,這兩個(gè)詞的向量應(yīng)該會非常相似。不僅如此,dristributed representation表示的詞向量還能表示不同詞組間組合的關(guān)系,比如假設(shè)現(xiàn)在由訓(xùn)練好的詞向量,現(xiàn)在拿出King,Queen,Man,Woman四個(gè)詞的詞向量,則:
?
?
?
?
2.DNN訓(xùn)練詞向量
詞向量怎么得到呢,這里得先說語言模型:
f(x)=y
在NLP中,我們把x看作是一個(gè)句子里的一個(gè)詞,y是這個(gè)詞的上下文。這里的f就是語言模型,通過它判斷(x,y)這個(gè)樣本,是否符合自然語言的邏輯法則。直白的說,語言模型判斷樣本(x,y)是不是人話。
而詞向量正是從這個(gè)訓(xùn)練好的語言模型中的副產(chǎn)物模型參數(shù)(也就是神經(jīng)網(wǎng)絡(luò)的權(quán)重)得來的。這些參數(shù)是作為輸入x的某種向量化表示,這個(gè)向量就叫做詞向量。
注意我們訓(xùn)練詞向量的邏輯,我們是為了得到一個(gè)語言模型的副產(chǎn)物-詞向量,去訓(xùn)練這個(gè)模型。所以我們的目的不是關(guān)注在怎么優(yōu)化該模型,而是為了獲取該模型的參數(shù)構(gòu)造詞向量。
在Word2vec出現(xiàn)之前,已經(jīng)有用神經(jīng)網(wǎng)絡(luò)DNN來訓(xùn)練出詞向量了。一般采用三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),分為輸入層,隱藏層,和輸出層(softmax層)。
?
?
該模型中V代表詞匯表的大小,N代表隱藏層神經(jīng)元個(gè)數(shù)(即想要的詞向量維度)。輸入是某個(gè)詞,一般用one-hot表示該詞(長度為詞匯表長度),隱藏層有N個(gè)神經(jīng)元,代表我們想要的詞向量的維度,輸入層與隱藏層全連接。輸出層的神經(jīng)元個(gè)數(shù)和輸入相同,隱藏層再到輸出層時(shí)最后需要計(jì)算每個(gè)位置的概率,使用softmax計(jì)算,每個(gè)位置代表不同的單詞。該模型中我們想要的就是經(jīng)過訓(xùn)練以后,輸入層到隱藏層的權(quán)重作為詞向量。
假設(shè)詞匯表有10000個(gè),詞向量維度設(shè)定為300。
輸入層:
為詞匯表中某一個(gè)詞,采用one-hot編碼 長度為1X10000
隱藏層:
從輸入層到隱藏層的權(quán)重矩陣W_v*n就是10000行300列的矩陣,其中每一行就代表一個(gè)詞向量。這樣詞匯表中所有的詞都會從10000維的one-hot code轉(zhuǎn)變成為300維的詞向量。
?
?
輸出層:
經(jīng)過神經(jīng)網(wǎng)絡(luò)隱層的計(jì)算,這個(gè)輸入的詞就會變?yōu)?X300的向量,再被輸入到輸出層。輸出層就是一個(gè)sotfmax回歸分類器。它的每個(gè)結(jié)點(diǎn)將會輸出一個(gè)0-1的概率,所有結(jié)點(diǎn)的值之和為1,我們就會取最大概率位置檢測是否為輸入樣本x對應(yīng)的y。
?
在此補(bǔ)充一下,有沒有考慮過一個(gè)問題,采用one-hot編碼時(shí),輸入維度是10000,如果我們將1X10000 向量與10000X300的矩陣相乘,它會消耗大量的計(jì)算資源。
?
?
我們發(fā)現(xiàn),one-hot編碼時(shí),由于只有一個(gè)位置是1,將該向量與隱藏層權(quán)重矩陣相乘會發(fā)現(xiàn),one-hot編碼向量中對應(yīng)1的index,詞向量中這個(gè)下標(biāo)對應(yīng)的一行詞向量正式輸出結(jié)果。所以,在真正的從輸入到隱藏層的計(jì)算中,并不會真正的進(jìn)行矩陣相乘計(jì)算,而是通過one-hot向量1的index取直接查找隱藏層的權(quán)重矩陣對應(yīng)的行,這樣極大的簡化了計(jì)算。
?
3.CBOW與Skip-gram模型:
該模型更一般情況是使用CBOW(Continuous Bag-of-Words)或Skip-gram兩種模型來定義數(shù)據(jù)的輸入和輸出。CBOW的訓(xùn)練輸入的是某一個(gè)特征詞的上下文相關(guān)的詞對應(yīng)的詞向量,輸出是這個(gè)特定詞的詞向量。而Skip-gram剛好相反,輸入一個(gè)特征詞,輸出是這個(gè)特征詞。上下文相關(guān)的詞。
?
?
這里我們以CBOW模型為例
假設(shè)我們有一句話,people make progress every day。輸入的是4個(gè)詞向量,’people’ , ‘make‘ , ‘every’ , ‘day’, 輸出是詞匯表中所有詞的softmax概率,我們的目標(biāo)是期望progress詞對應(yīng)的softmax概率最大。
?
?
開始時(shí)輸入層到隱藏層的權(quán)重矩陣和隱藏層到輸出層的權(quán)重矩陣隨機(jī)初始化,然后one-hot編碼四個(gè)輸入的詞向量’people’ ‘make’ ‘every’ ‘day’,并通過各自向量1的位置查詢輸入到隱藏層的權(quán)重矩陣行數(shù),找尋其對應(yīng)的詞向量。將4個(gè)詞向量與隱藏層到輸出層的權(quán)重相乘通過激活函數(shù)激活后再求平均,最后進(jìn)行softmax計(jì)算輸出的每個(gè)位置的概率。再通過DNN反向傳播算法,我們就可以更新DNN的隱藏層的權(quán)重參數(shù),也就得到了更新后詞向量。通過不斷的訓(xùn)練,我們得到的模型參數(shù)就會越來越準(zhǔn)確,詞向量也會變得越來越好。
?
通過這樣的訓(xùn)練,為什么詞向量會具有衡量不同詞語義相似性的功能呢?
以CBOW模型為例,這里我們可以看到,通過one-hot編碼的輸入樣本,每次只會在隱藏層中輸出與它對應(yīng)的權(quán)重矩陣的行。也就是說在本次訓(xùn)練中,隱藏層只會調(diào)用與輸入樣本相關(guān)的某一行的權(quán)重參數(shù),然后反向傳播后每次都是局部更新隱藏層的權(quán)重矩陣。
?
?
根據(jù)語言學(xué),同義詞的上下文很相似,這樣在訓(xùn)練模型中,相似輸入值都是對應(yīng)相似的輸出值,每次就會更偏向于局部更新對應(yīng)這些詞的詞向量的參數(shù),那么久而久之意思有關(guān)聯(lián)且相近的詞就會在詞向量上很接近。模型的輸出只是每個(gè)位置一一對應(yīng)了詞向量,本身沒有太大的意義。我的理解訓(xùn)練詞向量的模型就像在做聚類一樣,每次把上下文的詞與中心詞對應(yīng)的詞向量通過訓(xùn)練關(guān)聯(lián)在一起并彼此影響,這樣意思相近的詞對應(yīng)的詞向量也會越來越像近。
轉(zhuǎn)載于:https://www.cnblogs.com/coshaho/p/9571000.html
總結(jié)
以上是生活随笔為你收集整理的DNN模型训练词向量原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暴跌9成!部分芯片价格雪崩背后:库存剩余
- 下一篇: 气象学者示警 气候危机纪元已至!南方遭遇