摘? 要:詞向量作為自然語言處理的基礎(chǔ)技術(shù),隨著大數(shù)據(jù)和深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,其算法也隨之得到了更好的發(fā)展,尤其是近些年來各類新式算法和思想層出不窮,使得自然語言處理的準確度得到極大的提升。在闡述各個詞向量算法的同時,穿插例子和圖表,使大眾更加清晰透徹理解算法的過程和優(yōu)缺點。通過對詞向量算法的發(fā)展進行整體的回顧,加深對詞向量的理解,在解決問題的前提下為正確選用哪種詞向量而做出更好的判斷。
關(guān)鍵詞:詞向量;獨熱編碼;向量空間模型;靜態(tài)詞向量;動態(tài)詞向量
中圖分類號:TP391? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)05-0036-04
Research on the Development Stages of Word Embedding Algorithm
LI Mengning
(School of Statistics,University of International Business and Economics,Beijing? 100029,China)
Abstract:As a fundamental technology of natural language processing(NLP),word embeddings algorithm has gained better development with the development of big data and deep neural networks. Especially in recent years,all kinds of new algorithms and ideas emerge in an endless stream,which makes the accuracy of NLP get a huge improvement. It introduces samples and charts while elaborating each word embedding algorithm,and makes the public understand the process and advantages and disadvantages of the algorithm more clearly. Through the overall review of the development of word embedding algorithm,we can deepen the understanding of word embedding,and make a better judgment for selecting which word embedding correctly under the premise of solving problems.
Keywords:word embedding;one-hot encoding;vector space model;static word embedding;dynamic word embedding
0? 引? 言
詞向量(Word embedding),又稱詞嵌入,通俗的來講就是將一個詞語(Word)轉(zhuǎn)換成向量(Vector),用特定向量來代表特定詞語。這么做的目的就是將自然語言中的詞匯進行量化,把自然語言處理(NLP)中的問題抽象轉(zhuǎn)換成數(shù)學(xué)問題,以便于后續(xù)的機器學(xué)習使用。所以詞向量算法的好壞直接影響后續(xù)自然語言處理結(jié)果的精確度。
詞向量的發(fā)展是一個從簡單到復(fù)雜的過程。算法從數(shù)理計算到機器學(xué)習,語義表示也越來越精確合理。從獨熱編碼到VSM解決了維度災(zāi)難的問題,從VSM到Word2Vec解決了語義問題,從Word2Vec到Bert解決了一詞多義的問題。歷經(jīng)這一系列的發(fā)展,詞向量在語義理解、翻譯、情感分析、關(guān)鍵詞提取、生成摘要等各個方面都發(fā)揮顯著的作用。
1? One-Hot編碼
One-Hot編碼,又稱獨熱編碼。學(xué)術(shù)上的解釋是用N位狀態(tài)寄存器編碼N個狀態(tài),每個狀態(tài)都有獨立的寄存器位,且只有一位寄存器的狀態(tài)是有效的。通俗的來講,在對詞匯進行編碼的時候,有N個詞就使用N位數(shù)字,每一個詞匯對應(yīng)其中的一位,該位填充1,其他位都填充于0。下文舉例說明:
假設(shè)我們語料庫里有4句話:
今天天氣晴
明天天氣陰
今天天氣陰
明天天氣晴
首先將上述4句話拆分成詞匯,分別為:
今天、天氣、晴
明天、天氣、陰
今天、天氣、陰
明天、天氣、晴
將上述拆分后的詞匯都統(tǒng)計出來,得到:今天、明天、天氣、晴、陰,共5個詞,就需要用5位數(shù)字表示,其實本質(zhì)上就是長度為5的一維數(shù)組,如表1所示。
得到詞匯對應(yīng)的One-Hot編碼后,我們可以將上述4句話進行編碼。詞匯用一維數(shù)組表示,句子則需要用二維數(shù)組來表示,如表2所示。
One-Hot編碼是為了處理離散變量問題誕生的,比如枚舉型變量中有性別的男或女,季節(jié)的春、夏、秋、冬,等,對于這些相對獨立的語義用One-Hot編碼來表示,其優(yōu)點就是相對于序列(1,2,3,4)這種編碼,在歐式空間上變量間兩兩距離是相等的,符合離散變量的語義。但在用于詞向量表示的同時也暴露出兩個缺點:(1)維度災(zāi)難:上述例子中僅有簡單的4句話和5個詞,卻需要一個大小是4×3×5的三維數(shù)組來表示整個語料庫。如果擴展到實際的語料庫中,會包含上千個詞匯,僅僅對于一個詞匯的向量就需要上千位來表示,并且這上千位的數(shù)字中,僅有一位是1,其他全是0。出現(xiàn)了維度災(zāi)難,導(dǎo)致的結(jié)果是信息密度太小并且大大增加計算量。(2)語義鴻溝:表示離散變量時歐式距離相等的優(yōu)點,在表示詞匯存在關(guān)系的語料庫時,就變成了缺點?!敖裉臁焙汀懊魈臁钡恼Z義比較相似,“晴”和“陰”的語義比較相似。但是這4個詞匯的歐式距離卻都相等,語義無法在編碼中表示出來,出現(xiàn)了語義鴻溝。
2? VSM
VSM全稱Vectorspacemodel,即空間向量模型,由Salton等人于20世紀70年代提出,并成功地應(yīng)用于著名的SMART文本檢索系統(tǒng)。VSM是用空間向量來表示文本,并且通過計算向量之間的相似度來判斷文本的相似程度。
VSM可以使用TF-IDF算法將文章轉(zhuǎn)化為空間向量。TF-IDF算法是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度,TF-IDF的算法為:
TF=某個詞在文章中出現(xiàn)的次數(shù)/文章的總詞數(shù)
IDF=log(語料庫的文檔總數(shù)/包含該詞的文檔數(shù)+1)
TF-IDF=TF×IFD
從上述公式可以看出,詞的重要性隨著它在文章中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫的出現(xiàn)頻率反比下降。
我們?nèi)匀灰岳?中的4句話為例,使用TF-IDF算法計算這4句話的空間向量值,如表3所示。
根據(jù)余弦相似度公式:
計算空間向量的余弦相似度來判斷4個句子相互之間的相似程度,余弦相似度結(jié)果如表4所示。
從表4中結(jié)果可以看出,與我們主觀上得到的相似性結(jié)果是一致的。
VSM相比于One-Hot模型有以下提高:(1)維度災(zāi)難的問題:同樣的語料庫,從4×3×5大小的三維數(shù)組壓縮到4×5大小的二維數(shù)組,極大地減少了后續(xù)的計算量。(2)解決一部分語義的問題:VSM的向量可以計算兩段文本的相似程度。
VSM多用于文章關(guān)鍵詞提取、文章的分類等任務(wù)。但同時存在以下缺點:(1)詞向量只能代表全文,不能代表單個詞匯。(2)詞向量是通過統(tǒng)計方法計算得到的,其本身是數(shù)量關(guān)系,只能計算相似度,并不能完全代表其語義。
3? Word2Vec
Word2Vec算法由Mikolov于2013年提出,該算法通過上下文來學(xué)習語義,從而解決詞向量語義表示的問題。Word2Vec由兩個經(jīng)典模型組成:CBOW(Continuous Bag-of-Words)和Skip-gram,其中CBOW的作用是通過上下文的詞向量推理中間詞,Skip-gram的作用是通過中心詞推理上下文。
假設(shè)有一個句子“今天天氣晴”,兩個模型的算法思路為:
CBOW:從句子中選擇一個詞作為中心詞,其他詞作為上下文。比如“天氣”作為中間詞,“今天”和“晴”作為上下文。使用機器學(xué)習的手段,以“今天”和“晴”作為已知條件推測出“天氣”。這樣中心詞“天氣”的語義就會傳播到上下文“今天”和“晴”里;
Skip-gram:同理選擇“天氣”作為中心詞, “今天”和“晴”作為上下文。同樣使用機器學(xué)習的手段,這次中心詞“天氣”作為已知條件,去推測出“今天”和“晴”。這樣上下文“今天”和“晴”的語義就會傳播到中心詞“天氣”里。
根據(jù)上述原理,Word2Vec的兩種模型的具體算法實現(xiàn)如圖1所示。
兩個模型的算法除了輸入輸出略有區(qū)別,其他結(jié)構(gòu)基本一致,以CBOW模型的算法為例詳細說明,公式為:
首先將輸入的上下文詞匯以one-hot的方式編碼,每個詞匯轉(zhuǎn)換成一個1×V大小的張量,V指語料庫的大小,當前語料庫的大小為5,所以這里就是一個1×5大小的張量。
設(shè)定一個期望的詞向量大小N,這里為了簡化圖示,設(shè)定N為3(實際中N的大小通常為100~200之間),設(shè)定一個V×N大小的參數(shù)張量W,例中的張量W大小便是5×3。輸入X與W相乘后并求和,得到大小1×N的隱藏層張量;
再將大小為1×N隱藏層張量乘以張量W',得到1×V的輸出層,張量W'可由隱藏層和輸出層大小推測出其大小為N×V;
將輸入層1×V的張量做softmax歸一化處理,得到相對于每個語料庫的詞匯的概率;
最后將實際結(jié)果的詞匯進行one-hot編碼,計算輸出結(jié)果概率的損失函數(shù),再反向傳播訓(xùn)練參數(shù)W和參數(shù)W';
最終訓(xùn)練完成后的大小為V×N的參數(shù)張量W就是全部語料庫的詞向量,如果想要得到某一個詞的詞向量,比如第3個詞,取W[2]即可。
由于語料庫本身會很龐大,V的值會變得很大,導(dǎo)致上述的算法存在性能問題,所以該算法只能作為理想中的算法。為了解決性能問題,這里采用了“負采樣”方式來簡化加速訓(xùn)練。
負采樣是指從語料庫中選取幾個錯誤的樣本,用于代替正確的樣本,連同其他正確的輸入輸出詞匯一并作為輸入進行訓(xùn)練,訓(xùn)練的結(jié)果為1或0,代表所有輸入樣本是否是正確的。這樣就將一個V維的分類問題轉(zhuǎn)換為2維分類問題,極大地簡化了計算量。公式為:
詳細算法如圖2所示。
根據(jù)上述算法逐步描述實現(xiàn)過程:(1)構(gòu)建訓(xùn)練樣本。以“今天天氣晴”為例,構(gòu)建訓(xùn)練樣本如表5所示。(2)將張量X1和X2分別乘以大小為V×N的參數(shù)張量W和W',得到2個大小為1×N隱藏層。兩個隱藏層做點積得到1個大小為1×N的隱藏層。(3)求和并使用sigmod激活函數(shù)將數(shù)值轉(zhuǎn)換成1/0的二分結(jié)果。(4)根據(jù)實際結(jié)果Y計算損失函數(shù),再反向傳播訓(xùn)練參數(shù)W和W'。(5)最終W作為語料庫的詞向量。
從上述算法可得,Word2Vec有別于傳統(tǒng)的算法,采取的是機器學(xué)習算法來計算詞向量,由于僅以文中舉例的4句話作實例,語料數(shù)量太少,不能作為實際的語料庫以得到很好的訓(xùn)練效果。因此不再具體展示具體計算結(jié)果,直接給出結(jié)論,Word2Vec的優(yōu)缺點有:(1)Word2Vec解決了語義表示的問題,而且通過研究發(fā)現(xiàn),語義代表的向量之間還有計算關(guān)系,以向量表示的“媽媽”“爸爸”“男人”和“女人”之間,存在“媽媽”-“女人”+“男人”=“爸爸”這樣的數(shù)學(xué)關(guān)系。(2)Word2Vec屬于靜態(tài)詞向量,對于多義詞的表示不夠靈活。例如“蘋果”這一詞,既是一種水果,又是一個科技公司品牌。一個向量無法表示兩個語義。
4? Bert
BERT(Bidirectional Encoder Representations from Transformers)模型于2018年由Google提出,模型采用表義能力更強的雙向Transformer網(wǎng)絡(luò)結(jié)構(gòu)來對語言模型進行訓(xùn)練,是一種通過大量語料訓(xùn)練得來的一個通用的“語言理解”模型,是第一個用在預(yù)訓(xùn)練NLP上的無監(jiān)督的、深度雙向系統(tǒng)。
Bert作為動態(tài)詞向量,很好地解決了一詞多義的問題。解決思路是通過預(yù)訓(xùn)練得到語料庫的詞向量。在詞匯具體使用場景里,使用詞匯的上下文根據(jù)預(yù)訓(xùn)練的詞向量動態(tài)的計算出該詞匯的詞向量。
5? 結(jié)? 論
通過以舉例的方式來描述算法是為了便于讀者更好的理解算法,所舉的例子比較簡單,也許不太貼切和符合實際,所得結(jié)果僅作示例,不代表實際結(jié)果。讀者如果對于算法感興趣可以參考更多的文章對其有更深入具體的理解。
從上述對各個算法的概述,可以了解詞向量從無到有,逐步完善的發(fā)展歷程:獨熱編碼解決了從無到有的問題,與此同時帶來了維度災(zāi)難的問題;VSM解決維度災(zāi)難的問題,卻沒有辦法表示具體詞匯語義的問題;Word2Vec解決具體詞匯語義的表示問題,又遇到了一詞多義的問題;Bert解決了一詞多義的問題。而Bert作為一個比較新的算法,后續(xù)的應(yīng)用過程中必然會發(fā)現(xiàn)其存在的缺點,也必定會有新的算法來解決遇到的問題。期待詞向量算法能夠在應(yīng)用中不斷推陳出新,愈加完善,也有助于自然語言處理更好的處理現(xiàn)實問題。
參考文獻:
[1] MIKOLOV T,YIH W T,ZWEIG G. Linguistic Regularities in Continuous Space Word Representations [C]//Proceedings of the 2013 Conference of the North American Chapter of the Association for Computational Linguistics:Human Language Technologies (NAACL-HLT-2013).Association for Computational Linguistics,2013:746-751.
[2] DEVLIN J,CHANG M W,LEE K,et al. BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding [J/OL].arXiv:1810.04805v1 [cs.CL].(2018-10-11).https://arxiv.org/abs/1810.04805v1.
[3] RONG X. word2vec Parameter Learning Explained [J/OL].arXiv:1411.2738v4 [cs.CL].(2014-11-11).https://arxiv.org/abs/1411.2738.
[4] LEVY O,GOLDBERG Y. Neural word embedding as implicit matrix factorization [C]//NIPS14:Proceedings of the 27th International Conference on Neural Information Processing Systems. Cambridge:MIT Press,2014:2177-2185.
[5] 嚴紅.詞向量發(fā)展綜述 [J].現(xiàn)代計算機(專業(yè)版),2019(8):50-52.
[6] 劉勝杰,許亮.基于詞嵌入技術(shù)的文本表示研究現(xiàn)狀綜述 [J].現(xiàn)代計算機,2020(1):40-43.
作者簡介:李孟寧(1991.11—),男,漢族,河北石家莊人,研究生在讀,研究方向:自然語言處理。