寫在最前:本篇學習筆記是我在DUTIR情感計算組組會準備主講過程的一些記錄蓖康,通過閱讀了一些博客以及論文筐眷,整理的學習筆記黎烈。初出茅廬,如有錯誤還請多多指教匀谣。
一照棋、前言
為了完成自然語言處理的任務我們需要將詞進行向量化,即將文字數(shù)字化武翎。最簡單的詞表示方法是One hot Representation烈炭,其實質就是構造一個維度是詞表大小的向量,其中絕大多數(shù)元素為 0宝恶,只有一個維度的值為 1符隙,這個維度就代表了當前的詞。One hot的詞表示方法很容易理解卑惜,可以將文字數(shù)字化膏执,但是卻不能很好的表達詞語的含義,而且NLP任務的語料通常很大露久,one hot的表示方法就會形成一個特別長的向量更米,不利于計算。
Word embedding[1]就是融合了語言模型和NLP特征學習技術的一種低維分布式詞表示毫痕。區(qū)別于one hot的詞表示方法征峦,word embedding可以避免大量詞匯的數(shù)據(jù)稀疏性迟几,同時對數(shù)據(jù)進行降維,以及在句子級上的表示融入了詞與詞之間的相互關系±赴剩現(xiàn)有的最常用类腮、最流行的生成語言模型及詞向量的方法就是Word2Vec和Glove。下面就簡單介紹一下Word2Vec和Glove的原理蛉加,以及一篇用ELM方法生成詞向量的論文蚜枢。
二、Word2Vec
在介紹Word2Vec之前针饥,簡單介紹一下神經(jīng)概率語言模型厂抽。該模型是Bengio等人[2]在2003年提出的。圖1是神經(jīng)概率語言模型的架構圖丁眼。
從圖中可以看出筷凤,該模型主要包括輸入層,投影層苞七,隱藏層以及輸出層藐守。在隱藏層使用雙曲正切函數(shù)tanh作為激活函數(shù),在輸出層進行softmax歸一化運算蹂风。了解了神經(jīng)概率語言模型的基本架構卢厂,我們就可以將Word2Vec中使用的網(wǎng)絡結構與之進行對比了。Word2Vec包含兩種模型CBOW和Skip-gram硫眨,包含兩種架構Hierarchical Softmax和Negative Sampling足淆。
CBOW(Continuous Bag-of-Words Model)和Skip-gram(Continuous Skip-gram Model)都是三層的網(wǎng)絡結構[3],包括輸入層、投影層和輸出層族奢。CBOW的訓練目標是通過上下文預測目標詞姥闭,與之相反,Skip-gram的訓練目標則是輸入目標詞越走,輸出目標詞上下文的詞向量棚品。由圖2、3可以直觀地看出這兩個模型的結構廊敌。CBOW模型輸入的是context中2c個詞的詞向量铜跑,對于從輸入層到投影層的映射,沒有采取神經(jīng)網(wǎng)絡的線性變換加激活函數(shù)的方法骡澈,而是采用簡單的對所有輸入詞向量求和的方法锅纺,這也是與神經(jīng)概率語言模型不一樣的地方之一。對于Skip-gram模型肋殴,輸入層到投影層的過程則是一個恒等的映射囤锉。
2.1基于Hierarchical Softmax的CBOW和Skip-gram
首先我們要明確上述兩個模型基于Hierarchical Softmax的訓練目標坦弟,CBOW的目標函數(shù)與神經(jīng)概率語言模型的一致:
而Skip-gram的目標函數(shù)則是:
我們的主要工作就是求解出上述公式中的兩個概率值。
為了避免要計算所有詞的softmax概率官地,Word2Vec采用了哈夫曼樹來代替從投影層到輸出層的映射酿傍。Word2Vec有自己的構造哈夫曼樹的規(guī)則:1.這棵哈夫曼樹構造的基礎是在語料中每個詞的詞頻;2.與常規(guī)不同驱入,Word2Vec中規(guī)定赤炒,詞頻大的為左孩子,詞頻小的為右孩子亏较;3.哈夫曼編碼時將0看做正類可霎,1看做負類。例如一個語料中有“他”宴杀、“十分”癣朗、“喜歡”、“喝”旺罢、“雪碧”這5個詞旷余,他們在語料中對應的詞頻分別為“15”、“8”扁达、“6”正卧、“3”、“2”跪解。我們可以構造如圖4的哈夫曼樹炉旷。
我們現(xiàn)在想要輸出詞w =“雪碧”的情況,從根節(jié)點開始向下尋找這個詞叉讥,把每個分支看成一個二分類窘行,每次分類都會產生一個概率,我們將正類的概率記為p图仓,那么是負類的概率就是1-p罐盔,把各分支上的概率乘起來就是w =“雪碧”的概率值。也因為這種一層一層向下尋找的機制救崔,所以這種樹形的輸出被稱為層級式softmax惶看。具體的梯度計算過程本文就不在介紹了。
2.2基于 Negative Sampling 的CBOW和Skip-gram
如果遇到了一個生僻詞六孵,由于它在語料中的詞頻特別低纬黎,我們就需要在哈夫曼樹中走很久,為了解決這個問題劫窒,引入了Negative Sampling本今。其原理就是中心詞w和context(w),存在唯一正例,我們通過唯一正例和neg個負例诈泼,進行二元邏輯回歸懂拾,最終得到每個詞的詞向量。我們首先將語料中的每個詞按照詞頻映射到一條長度為1的線段上:
三铐达、Glove
Word2Vec主要利用了局部上下文的關系岖赋,GloVe模型就是既使用了語料庫的全局統(tǒng)計特征,也使用了局部的上下文特征瓮孙,以此引入了詞對的共現(xiàn)矩陣(記為X)唐断。詞對共現(xiàn)矩陣X中的元素Xij表示語料庫中詞j出現(xiàn)在詞i上下文中的次數(shù),那么Xi就表示語料庫中所有詞出現(xiàn)在詞i上下文中的總次數(shù)杭抠。由此我們可以得出詞j出現(xiàn)在詞i上下文的概率Pij:
Glove的作者以目標詞語ice和steam為例脸甘,討論他們的共現(xiàn)概率。
作者在這里引入了Ratio這個值偏灿,通過觀察發(fā)現(xiàn)了Ratio這個值的一些規(guī)律丹诀,Glove模型就是利用的Ratio值的規(guī)律:
GloVe模型的訓練目標就是得到每一個詞的向量表示。假設現(xiàn)在已知詞i,j,k的詞向量wi,wj,wk翁垂。作者認為铆遭,這三個向量通過某種函數(shù)的作用后所呈現(xiàn)出來的規(guī)律和Ratio=Pik/Pjk具有一致性,即相等沿猜,也就可以認為詞向量中包含了共現(xiàn)概率矩陣中的信息枚荣。所以這里的問題就是尋找一個函數(shù)F使得下式成立:
這個函數(shù)的構造過程可以看出作者的膽大心細。感興趣的可以自行閱讀GloVe模型 - Weirping - 博客園啼肩。
四橄妆、論文
《Generating Word Embeddings?from an Extreme Learning Machine for Sentiment Analysis and Sequence Labeling Tasks》是發(fā)表在Cognitive Computation2018上的論文。
4.1模型介紹
這篇論文使用了極限學習機(ELM)與自動編碼器結合來生成詞向量祈坠。對ELM感興趣的可以參閱極限學習機(ELM)的使用 - CSDN博客害碾。
ELM的工作原理十分簡單,已知輸入X和期望T的輸出颁虐,可以求得隱藏層的輸出H蛮原。由已知的H和T,就可以求解出隱藏層到輸出層的權重值β另绩。自動編碼器是一種神經(jīng)網(wǎng)絡,通過壓縮隱藏層中的輸入特征向量花嘶,然后將其解壓縮到輸出層笋籽,實現(xiàn)特征提取和降維。將ELM模型與自動編碼器相結合椭员,即讓期望輸出近似等于輸入车海,計算得到的權重β作為最終的詞向量。
在設置詞對共現(xiàn)矩陣權重的時候,作者參考了文獻[6]的思想侍芝,認為上下文單詞在單詞-上下文矩陣中越接近目標單詞研铆,單詞對就越重要,因此應該給出更高的權重州叠,然后隨著距離的線性下降棵红。用1/distance給每個詞對分配權重。
4.2實驗部分
實驗中用來訓練詞向量的語料如圖8所示咧栗。
實驗步驟如下:
1.統(tǒng)計預料中最短文本次數(shù)記為M逆甜,統(tǒng)計每個詞的詞頻F,通過F≥M構建詞表V致板。
2.設置窗口大小C交煞,給詞對分配權重
3.對單詞-上下文矩陣進行歸一化
4.計算隱藏層輸出H
5.得到結果
作者將訓練好的詞向量應用到了情感分類和序列標注的任務中。情感分類任務使用的是邏輯回歸斟或,序列標注任務使用的是RNN素征。
圖9、圖10顯示了論文中生成詞向量的算法較之Glove和Word2Vec在完成NLP任務中有細微提升萝挤。
4.3小結
ELM和Word2Vec都是三層網(wǎng)絡御毅,Word2Vec需要不斷迭代得到最終結果,而ELM只需要一次計算平斩,同時ELM借鑒了Glove的思想亚享,既考慮了局部上下文,又考慮了全局上下文绘面。論文通過完成NLP實驗和語義分析論證算法的有效性欺税。
參考文獻:
[1]Lauren P, Qu G, Yang J, et al. Generating Word Embeddings from an Extreme Learning Machine for Sentiment Analysis and Sequence Labeling Tasks[J]. Cognitive Computation, 2018(3):1-14.
[2]Journal of Machine Learning Research 3 (2003) 1137--1155 Submitted 4/02; Published 2/03 A Neural Probabilistic Language Model
[3]博客:word2vec 中的數(shù)學原理詳解https://blog.csdn.net/itplus/article/details/37969519
[4]Mikolov T, Le Q V, Sutskever I. Exploiting Similarities among Languages for Machine Translation[J]. Computer Science, 2013.
[5]博客:Glove模型https://www.cnblogs.com/Weirping/p/7999979.html
[6]Bullinaria J A, Levy J P. Extracting semantic representations from word co-occurrence statistics: a computational study[J]. Behavior Research Methods, 2007, 39(3):510-526.