1. 介紹
自然語言處理的一個(gè)重要方法是將自然語言處理問題轉(zhuǎn)化為機(jī)器學(xué)習(xí)問題糠亩。轉(zhuǎn)換為機(jī)器學(xué)習(xí)問題的第一個(gè)步驟,是將自然語言數(shù)值化, 簡單的說就是如何用數(shù)學(xué)的語言去表示一個(gè)詞,一個(gè)句子骂删,一篇文章。早期人們將詞匯表中的單詞按照索引編號四啰,再用one-hot編碼去表示句子宁玫。這樣做的好處是非常的簡單,而且經(jīng)過one-hot編碼之后的文章都是固定長度的柑晒,這也為后續(xù)的數(shù)據(jù)處理帶來了許多方便欧瘪。但是,one-hot編碼的劣勢也是非常明顯的匙赞,第一恋追,不能表示詞序,第二罚屋,不能展現(xiàn)單詞與單詞之間的關(guān)系, 第三嗅绸,當(dāng)詞匯表非常龐大的時(shí)候而文章又比較短的時(shí)候就會造成矩陣過分稀疏和維度災(zāi)難脾猛。 word2vec的引入在很大程度解決了one-hot編碼的劣勢。word2vec顧名思義就是完成了詞到向量的映射鱼鸠;把每一個(gè)詞映射到一個(gè)固定維度的低維向量中猛拴,且向量的表示不是隨機(jī)的羹铅,相同的詞性在向量表達(dá)上比較相似,也就有相近的向量距離(可以是歐式距離或者余弦距離等)愉昆。word2vec利用無監(jiān)督的深度學(xué)習(xí)方法职员,只需要投入文本,學(xué)習(xí)的過程無需人工干預(yù)跛溉。
2. 兩個(gè)模型(可選其一)
在語言模型上焊切,word2vec可以分為兩類,CBOW 和 Skip-Gram芳室。CBOW的思想是利用上下文去預(yù)測中間的詞专肪,skip-gram則是利用中間的詞去預(yù)測上下文
2.1 CBOW 模型
以CBOW 為例, 整個(gè)算法的目的就在于:
在細(xì)節(jié)之外記住我們的目標(biāo): 用內(nèi)容預(yù)測單詞堪侯。在構(gòu)建這個(gè)模型的過程中順帶會優(yōu)化詞向量嚎尤,但是這個(gè)順帶的副產(chǎn)品卻是我們真正需要的。我們需要時(shí)刻明確目標(biāo):優(yōu)化代價(jià)函數(shù)伍宦,這樣才不會被word2vec冗雜的細(xì)節(jié)問題迷惑芽死,意識到這一點(diǎn)非常重要。
2.2 Skip-gram Model
skip-gram 與CBOW 非常相似次洼,不同的是skip-gram 的目的是用中心詞預(yù)測周圍詞关贵,表現(xiàn)在代價(jià)函數(shù)就是把 | 左右調(diào)換順序。
3 兩套框架(可選其一)
4.Hierarchical Softmax & CBOW
https://arxiv.org/pdf/1411.2738.pdf
Hierarchical softmax是一種高效計(jì)算softmax 的方法滓玖,模型使用二叉樹表示所有的單詞坪哄,在這個(gè)模型中,所有的單詞被表示在二叉樹的葉子節(jié)點(diǎn)上势篡◆婕。可以證明的是,假如詞匯表的大小是||D||, 則二叉樹一共有||D|| 個(gè)葉子節(jié)點(diǎn)和||D|| - 1 個(gè)非葉子節(jié)點(diǎn)禁悠。從根節(jié)點(diǎn)到每一個(gè)葉子節(jié)點(diǎn)只有一個(gè)唯一的路徑念祭,這條路徑的長度用來刻畫單詞在語料庫中出現(xiàn)的概率,路徑越長碍侦,則詞頻越低(霍夫曼樹的思想)粱坤。
在HS 的輸出結(jié)果中,并沒有輸出單詞的向量表示形式瓷产。取而代之的是站玄,||D|| -
1 個(gè)內(nèi)部節(jié)點(diǎn)(innear node)具有自己的表示向量:
輸出單詞的概率被定義為:
現(xiàn)在讓我們用一個(gè)簡單的實(shí)例來理解這個(gè)算法,看到圖四濒旦,假設(shè)我們要計(jì)算w_t 作為輸出單詞的概率株旷,我們定義作為輸出單詞的概率是從根節(jié)點(diǎn)root處一直走到葉子節(jié)點(diǎn)的概率,我們定義,在內(nèi)部節(jié)點(diǎn)n走到左子樹的概率定義為:
相應(yīng)的晾剖, 在內(nèi)部節(jié)點(diǎn)n 處走到右子樹的概率就可以定義為:
那么锉矢,我們從圖四中的根節(jié)點(diǎn)一路走到w_2的概率就可以表示為:
我們不難確定:
現(xiàn)在,我們就可以用求導(dǎo)數(shù)的方法來優(yōu)化內(nèi)部節(jié)點(diǎn)的向量表示了齿尽,為了簡單起見沽损,我們先從一個(gè)單詞內(nèi)容的模型出發(fā),從one-word context model 拓展到CBOW 和 skip-gram 模型就是一件比較簡單的事情了循头。
為了后續(xù)表達(dá)的簡便绵估,我們定義:
在每一次的訓(xùn)練實(shí)例中,error function(代價(jià)函數(shù))可以被定義為:
在這個(gè)問題中贷岸,我們首先將v_j * h 視為變量壹士, 并對其進(jìn)行求導(dǎo),這樣偿警,我們有:
下一步躏救,我們對內(nèi)部節(jié)點(diǎn)的向量表示進(jìn)行求導(dǎo),于是有:
這樣,我們就可以得出新的內(nèi)部節(jié)點(diǎn)的向量表示了:
這樣螟蒸,我們就在一次訓(xùn)練過程中更新了全部內(nèi)部節(jié)點(diǎn)上的向量的表示盒使。
緊接著,我們知道h 作為隱層的輸出七嫌,直接與輸入的向量相關(guān)少办,我們對h 求偏導(dǎo)數(shù),就可以得到輸入向量的最佳表示:
使用EH的值诵原,我們就可以直接進(jìn)行優(yōu)化輸入向量的表示了英妓。
以HS & CBOW model 作為例子介紹word2vec的一般思想。 word2vec 迄今為止主要以 { Skip-gram , CBOW } {HS, Negative Sampling}的組合為主構(gòu)建架構(gòu)绍赛,在未來有需要的時(shí)候蔓纠,還是要拿出來繼續(xù)學(xué)習(xí)的。
PLACEHOULDER for Skip-Gram, NS etc...
非常棒的資源:
word2vec中的數(shù)學(xué)
http://mccormickml.com/assets/word2vec/Alex_Minnaar_Word2Vec_Tutorial_Part_II_The_Continuous_Bag-of-Words_Model.pdf
https://arxiv.org/pdf/1411.2738.pdf