一文理解Word2Vec-part1

前言

首先推薦一個(gè)英文版的Word2Vec的教程们豌,從原理到實(shí)現(xiàn)都講得十分透徹和清晰弟头。它分為了幾個(gè)部分講,當(dāng)時(shí)我也是看的這個(gè)教程入門的踩验,建議英文比較好的同學(xué)可以參考一下鸥诽。本文創(chuàng)作的目的也是想寫一個(gè)類似這樣的教程,達(dá)到一文理解Word2Vec的目的箕憾。

為什么要表示詞(Why Embdding?)

在進(jìn)行自然語言處理方面的研究時(shí)牡借,特別時(shí)在使用深度學(xué)習(xí)方法的時(shí)候,我們幾乎不可能直接將每個(gè)詞輸入到模型中袭异,因?yàn)橛?jì)算機(jī)看不懂一個(gè)一個(gè)的字符串钠龙,因此需要將詞用數(shù)字表示(通常是向量),以讓機(jī)器能夠讀懂御铃,理解自然語言碴里。表征得是否易懂,信息是否足夠等都是Embedding需要考慮的因素上真。下面介紹兩種表示詞的方法以加深理解咬腋。

詞嵌入的兩種方式

我這里標(biāo)題使用了詞嵌入的說法,我認(rèn)為是指將每個(gè)詞背后的語義信息嵌入到了詞向量中睡互,所以叫嵌入根竿,還是很形象的 :)陵像。

One-Hot表示

估計(jì)是每個(gè)NLPer最先接觸到的表征方式了。
它是這么做的:

  1. 統(tǒng)計(jì)一下語料庫里一共有多少不重復(fù)的詞(假設(shè)為N個(gè)詞)寇壳。
  2. 初始化一個(gè)N維的0向量(每一維代表一個(gè)詞)醒颖。
  3. 哪一維為1,表示這個(gè)向量代表哪個(gè)詞壳炎。

十分簡(jiǎn)單泞歉,但問題也十分明顯。
1.維度太大匿辩,又很稀疏腰耙,一個(gè)幾萬維的向量只有一個(gè)1,感受一下撒汉。
2.沒有啥信息量沟优,只能簡(jiǎn)單區(qū)分出兩個(gè)單詞。

Word2Vec

Word2Vec在13年橫空出世睬辐,幾乎那以后的所有文章都以Word2Vec為基礎(chǔ)挠阁,這篇文章的引用在今天(18年11月)已經(jīng)有8318了:)。足以說明它有多強(qiáng)悍溯饵。
先看一眼Word2Vec訓(xùn)練出來的詞向量:

Word2Vec.png

稠不稠侵俗?密不密?除了解決了稠密性問題丰刊,而且這些向量的維度也一般控制在低維隘谣。(50-300維這樣)因此在輸入到后續(xù)模型時(shí)不需要太擔(dān)心性能問題。
此外這些詞還包含了豐富的語義信息啄巧,相似的詞的詞向量一般距離會(huì)比較近寻歧,還有就是那個(gè)經(jīng)典的例子:

Queen - Woman = King - Man

總之,Word2Vec學(xué)到了詞語的稠密低維表示秩仆,又蘊(yùn)含有較多的語義信息码泛。

Word2Vec原理

Word2Vec有兩種實(shí)現(xiàn)方式,Skip-gram 和 CBOW澄耍。本文以Skip-gram為例進(jìn)行講解噪珊,CBOW其實(shí)和Skip-gram的區(qū)別很小,理解了Skip-gram齐莲,CBOW也就理解了痢站。
很多文章都以一個(gè)三層的神經(jīng)網(wǎng)絡(luò)來介紹Word2Vec的原理,本文嘗試以另外一個(gè)視角進(jìn)行理解选酗,但其實(shí)質(zhì)都是一樣的阵难。

任務(wù)

首先明確一下Word2Vec的任務(wù)是什么。為了使得相似的詞有相似的詞向量星掰,而相似的詞往往有相似的語境多望,因此Skip-gram采用了預(yù)測(cè)背景詞作為任務(wù)嫩舟。
例如氢烘,當(dāng)輸入詞“York”怀偷,與“New”,“Slow”, "Flower"這些詞比較的時(shí)候播玖,我的模型需要告訴我“New”與"York"一起出現(xiàn)的可能性較大椎工,而與“Slow”和"Flower"同時(shí)出現(xiàn)的可能性較小。
Skip-gram使用了很簡(jiǎn)單的方式來完成這個(gè)任務(wù)蜀踏。

構(gòu)造數(shù)據(jù)集

以上面的句子為例维蒙,給出了"York"希望模型預(yù)測(cè)"New"的概率要大一些。"York"就是輸入果覆,"New"就是label颅痊,標(biāo)簽。我們首先需要在給定的語料中構(gòu)建這樣的數(shù)據(jù)集局待。
Skip-gram字面上就是跳過gram斑响,這里跳過的是模型的輸入,即中心詞钳榨,需要預(yù)測(cè)的是附近(window size內(nèi)的)的詞舰罚。


Skip-gram

上圖中的window size設(shè)為了2,表示將前2和后2的詞作為標(biāo)簽薛耻,中心詞作為輸入营罢,來構(gòu)建數(shù)據(jù)集。

訓(xùn)練

先提出一個(gè)假設(shè):

每個(gè)詞有兩個(gè)詞向量,一個(gè)稱為中心詞向量,一個(gè)稱為背景詞向量

如果有N個(gè)詞淋肾,為每個(gè)詞隨機(jī)初始化兩個(gè)詞向量跳昼,因此最終我們有2*N個(gè)詞向量需要訓(xùn)練。
再提出一個(gè)規(guī)則:

同一個(gè)詞胚鸯,作為輸入(中心詞)時(shí),使用中心詞向量,作為輸出(背景詞)時(shí)伙菊,使用背景詞向量。

現(xiàn)在我們來看輸入一個(gè)樣本(New, York)時(shí)的訓(xùn)練過程:

訓(xùn)練

訓(xùn)練時(shí)敌土,將New的中心詞向量镜硕,分別與所有詞的背景詞向量進(jìn)行點(diǎn)積。假設(shè)有N個(gè)詞返干,那么這一步操作將會(huì)產(chǎn)生N個(gè)值兴枯,然后再將這N個(gè)值進(jìn)行Softmax歸一化。最終將N個(gè)值轉(zhuǎn)換為輸入New矩欠,輸出每個(gè)詞的概率财剖。
例如:假設(shè)Dot("New", "Man")=42悠夯,歸一化后P("New", "Man")=0.001,意味著輸入“New”躺坟,輸出“Man”的概率是0.001沦补。
Softmax

但是別忘了,輸入的訓(xùn)練樣本是("New", "York")咪橙,因此我們希望提升P("New", "York")夕膀,打壓P("New", “其他所有詞”)。這樣美侦,這個(gè)樣本就訓(xùn)練完了产舞。需要強(qiáng)調(diào)的是,此時(shí)"New"用的是它的中心詞向量菠剩,而“其他所有詞”使用的是背景詞向量易猫。

后續(xù)

到目前為止,本文介紹了Word2Vec是什么具壮,能做什么准颓,以及它是怎么訓(xùn)練的。但是一些訓(xùn)練中的細(xì)節(jié)還未涉及到嘴办,而這些細(xì)節(jié)也是Word2Vec能夠work的關(guān)鍵瞬场,比如這么大的模型怎么才能train起來?10000個(gè)詞的200維詞向量就需要有200100002 = 4000000個(gè)參數(shù)涧郊。這些細(xì)節(jié)將在一文理解Word2Vec-part2會(huì)進(jìn)行介紹贯被。其實(shí)這樣的訓(xùn)練方式不止Google想到了,甚至可能有其他的研究人員在他們之前想到這樣的做法妆艘,但是只有Google把細(xì)節(jié)做到了極致彤灶,才有了今天的Word2Vec。

參考資料

部分圖片來自Word2Vec Tutorial - The Skip-Gram Model

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末批旺,一起剝皮案震驚了整個(gè)濱河市幌陕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汽煮,老刑警劉巖搏熄,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異暇赤,居然都是意外死亡心例,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門鞋囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來止后,“玉大人,你說我怎么就攤上這事∫胫辏” “怎么了瓜喇?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歉糜。 經(jīng)常有香客問我乘寒,道長,這世上最難降的妖魔是什么现恼? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任肃续,我火速辦了婚禮黍檩,結(jié)果婚禮上叉袍,老公的妹妹穿的比我還像新娘。我一直安慰自己刽酱,他們只是感情好喳逛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棵里,像睡著了一般润文。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殿怜,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天典蝌,我揣著相機(jī)與錄音,去河邊找鬼头谜。 笑死骏掀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的柱告。 我是一名探鬼主播截驮,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼际度!你這毒婦竟也來了葵袭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤乖菱,失蹤者是張志新(化名)和其女友劉穎坡锡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窒所,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹉勒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墩新。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸弥。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖海渊,靈堂內(nèi)的尸體忽然破棺而出绵疲,到底是詐尸還是另有隱情哲鸳,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布盔憨,位于F島的核電站徙菠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏郁岩。R本人自食惡果不足惜婿奔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望问慎。 院中可真熱鬧萍摊,春花似錦、人聲如沸如叼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笼恰。三九已至踊沸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間社证,已是汗流浹背逼龟。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留追葡,地道東北人腺律。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像辽俗,于是被迫代替她去往敵國和親疾渣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近新接觸文本分類問題崖飘,對(duì)于我來數(shù)第一個(gè)問題就是Word Embedding這個(gè)詞到底是什么意思榴捡,因此也就開始學(xué)習(xí)...
    小松qxs閱讀 24,856評(píng)論 2 27
  • NLP(Natural Language Processing),也就是人們常說的「自然語言處理」朱浴,就是研究如何讓...
    知識(shí)學(xué)者閱讀 1,299評(píng)論 0 1
  • 一吊圾、如何表示一個(gè)詞語的意思 在計(jì)算機(jī)中如何表示一個(gè)詞的意思 過去幾個(gè)世紀(jì)里一直用的是分類詞典。計(jì)算語言學(xué)中常見的方...
    DataArk閱讀 3,849評(píng)論 0 8
  • 1. 導(dǎo)入 ??這是語言表示系列的第1篇翰蠢,主要講述了分布式表示里的Word2vec方法项乒。該系列目前暫定有4篇語言的...
    brucep3閱讀 3,221評(píng)論 0 5
  • 1.NLP當(dāng)前熱點(diǎn)方向 詞法/句法分析 詞嵌入(word embedding) 命名實(shí)體識(shí)別(Name Entit...
    __Aragorn閱讀 6,023評(píng)論 1 9