Word2Vec原理(一)-Cbow與SkipGram

詞嵌入

  • 什么是Embedding
    Embedding在數(shù)學(xué)上表示一個(gè)maping, f: X -> Y几于, 也就是一個(gè)映射函數(shù)。通俗的翻譯可以認(rèn)為是向量嵌入坯辩,就是把X所屬空間的向量映射為到Y(jié)空間的多維向量相嵌,那么該多維向量相當(dāng)于嵌入到Y(jié)所屬空間中,一個(gè)蘿卜一個(gè)坑您炉。

  • 為什么詞嵌入
    在NLP任務(wù)中,我們所遇到的最原始的輸入,可能是語音片段(各種智障音箱),也可能是文字片段(智障小冰),要想通過算法完成分類等任務(wù),必須先將輸入轉(zhuǎn)換為算法模型可以處理的形式:向量.

  • 什么是詞嵌入
    詞嵌入(Word Embeding)是用向量來表述詞的方式,我個(gè)人的理解是,將高維度的原始詞向量進(jìn)行降維處理,同時(shí)加入語義信息與上下文信息.這里的詞,一般指對原始文本進(jìn)行分詞后得到的最小片段,最近兩年的很多工作已經(jīng)跳過了分詞的過程,直接做字符級的嵌入,我們的系統(tǒng)在迭代過程中也做了這樣的嘗試,并且取得了不錯(cuò)的效果.
    可以說,詞嵌入是NLP任務(wù)中的基礎(chǔ)工作,也是非常關(guān)鍵的一環(huán),詞嵌入的好壞直接影響算法模型的效果.

  • 近年主要工作
    最原始的詞嵌入方式是onehot,這種方式簡單粗暴,并且在某些任務(wù)上取得了不錯(cuò)的效果.但是卻有非常致命的缺點(diǎn):只有統(tǒng)計(jì)學(xué)的意義,無法表征語義,比如沙雕永遠(yuǎn)不可能被理解為傻吊;此外當(dāng)詞典變大時(shí),向量長度也隨之變大,并且詞嵌入的結(jié)果非常的稀疏,嚴(yán)重影響算法的準(zhǔn)度與訓(xùn)練速度.
    2001年, Bengio 等人正式提出神經(jīng)網(wǎng)絡(luò)語言模型( Neural Network Language Model 役电,NNLM)赚爵,該模型在學(xué)習(xí)語言模型的同時(shí),也得到了詞向量法瑟。
    詞嵌入研究興起的主力應(yīng)該就是谷歌于2013年開源的word2vec了, 后面又出現(xiàn)了fasttext, glove等,去年出了兩個(gè)影響力較大的與訓(xùn)練詞嵌入模型:ELMo與BERT, 暫時(shí)沒有非常有效的應(yīng)用.此外,針對中文的詞嵌入,還有騰訊AIlab與螞蟻金融提出的基于文字圖像的嵌入模型,實(shí)用性未知.

Word2Vec從提出至今冀膝,已經(jīng)成為了深度學(xué)習(xí)在自然語言處理中的基礎(chǔ)部件,大大小小瓢谢、形形色色的DL模型在表示詞畸写、短語、句子氓扛、段落等文本要素時(shí)都需要用word2vec來做word-level的embedding。Word2Vec的作者Tomas Mikolov是一位產(chǎn)出多篇高質(zhì)量paper的學(xué)者论笔,從RNNLM采郎、Word2Vec再到最近流行的FastText都與他息息相關(guān)。一個(gè)人對同一個(gè)問題的研究可能會(huì)持續(xù)很多年狂魔,而每一年的研究成果都可能會(huì)給同行帶來新的啟發(fā)蒜埋,本期的PaperWeekly將會(huì)分享其中三篇代表作,分別是:
1最楷、Efficient Estimation of Word Representation in Vector Space, 2013
2整份、Distributed Representations of Sentences and Documents, 2014
3、Enriching Word Vectors with Subword Information, 2016

word2vec原理

word2vec主要解決什么問題?
簡而言之,如何在一個(gè)大型數(shù)據(jù)集上通過無監(jiān)督學(xué)習(xí)快速籽孙、準(zhǔn)確地學(xué)習(xí)出詞表示.
word2vec是怎么做的烈评?
利用訓(xùn)練語料使用cbow或者skip-gram構(gòu)建一個(gè)單層的神經(jīng)網(wǎng)絡(luò)分類器,最終隱藏層的參數(shù)向量就是對應(yīng)詞的詞向量犯建。
這里從知乎上的一個(gè)回答里讲冠,得到兩張圖,可以比較好的解釋其訓(xùn)練過程适瓦。

word2vec訓(xùn)練過程

word2vec結(jié)構(gòu)

可以看出來竿开,訓(xùn)練過程中只構(gòu)建了最淺層的的神經(jīng)網(wǎng)絡(luò)谱仪,輸入為one-hot后的向量,輸出也為對應(yīng)的詞否彩,實(shí)際上作者針對One-hot的問題使用了Hoffman樹進(jìn)行優(yōu)化疯攒。

Cbow與skipgram

  1. cbow
    cbow(continuous bag-of-words)也就是連續(xù)詞袋模型。簡而言之就是用語料中,某個(gè)詞w左右的n個(gè)詞去預(yù)測w.
    所以使用模型描述就是P(w|context)
  2. skipgram
    skipgram與cbow的思路正好相反,使用每個(gè)詞去預(yù)測其上下文的概率.因此使用模型描述就是P(context|w)
    簡單的圖對比二者
    cbow與skipgram對比

    那么,如何模型的輸入與輸出分別是什么?
    輸入是根據(jù)詞典構(gòu)建的一個(gè)初始化詞向量, 輸出是預(yù)測得到的詞的詞向量.作者使用了霍夫曼編碼對softmax過程進(jìn)行了優(yōu)化,也就是后面即將提到的層次softmax.
    下面介紹霍夫曼編碼.

霍夫曼編碼

霍夫曼編碼實(shí)際上是信息論領(lǐng)域的一種無損壓縮的可變長編碼算法.這里有幾個(gè)關(guān)鍵詞: 無損壓縮, 可變長.不難發(fā)現(xiàn), 首先霍夫曼編碼本質(zhì)上是一種壓縮算法,能對信息進(jìn)行無損的壓縮;其次是可變長, 體現(xiàn)在霍夫曼編碼是以來源符號出現(xiàn)的頻率來進(jìn)行編碼的,并且出現(xiàn)頻率越高,編碼的比特越少,這樣使得最終對所有數(shù)據(jù)的編碼長度之和最小.

  • 霍夫曼編碼的構(gòu)建思路
    通過霍夫曼樹(最優(yōu)二叉樹)來逐步構(gòu)建霍夫曼編碼, 霍夫曼樹是一種帶權(quán)路徑長度最短的二叉樹,其中樹的路徑長度是從根到每一節(jié)點(diǎn)的路徑長度之和.
    二叉樹的帶權(quán)路徑長度記為:
    WPL=\sum_{n}^{k=1}w_k l_k
    其中,w_k為節(jié)點(diǎn)權(quán)值,l_k為節(jié)點(diǎn)路徑長度
  • 霍夫曼算法[1]
    根據(jù)霍夫曼樹的定義,要使wpl值越小, 必須使權(quán)值越大的節(jié)點(diǎn)越靠近根節(jié)點(diǎn),不難發(fā)現(xiàn),其實(shí)這是一種貪心的思想.由此得到霍夫曼算法的步驟如下:
    (1)根據(jù)給定的n個(gè)權(quán)值\{w_1,w_2...w_n\},構(gòu)造n棵只有根節(jié)點(diǎn)的二叉樹.
    (2)在森林中選取兩顆根節(jié)點(diǎn)權(quán)值最小的樹作為左右子樹,得到的新的樹的根節(jié)點(diǎn)權(quán)值為其左右子樹根節(jié)點(diǎn)權(quán)值之和.權(quán)值較小的樹放左側(cè).
    (3)在森林中刪除(2)中選擇的兩棵樹,同時(shí)加入新的樹.
    (4)重復(fù)(2)(3)直至只有一棵樹.
    示例:
    霍夫曼編碼示例

    在word2vec中,使用左側(cè)為1右側(cè)為0,示例中的a就對應(yīng)1,b對應(yīng)01,c對應(yīng)001,d對應(yīng)000

Hierarchical Softmax

  • 傳統(tǒng)的NNLM
    從傳統(tǒng)的nnml(神經(jīng)網(wǎng)絡(luò)語言模型)說起,通常是簡單只包含一個(gè)隱藏層的分類器,在計(jì)算過程中,由于需要計(jì)算每個(gè)詞的softmax概率,因此輸出層的計(jì)算量相當(dāng)大[2].如圖


    傳統(tǒng)的NNLM
  • word2vec的特點(diǎn)
    word2vec的本質(zhì)也是一種NNLM,但是作者在基本的NNLM之上,做了一些改進(jìn):[2]
    (1)輸入層到隱藏層的映射,沒有使用線性變換+激活函數(shù),而是采用簡單的對所有輸入詞向量求和并取平均.
    (2)從隱藏層到輸出的softmax層,為了避免計(jì)算每個(gè)詞的softmax概率,word2vec采用了霍夫曼樹來代替從隱藏層到輸出層的映射.
  • 一些分析
    如上圖,如果使用傳統(tǒng)的NNLM,softmax層的計(jì)算復(fù)雜度為O(V),而進(jìn)行編碼后需要預(yù)測的類別數(shù)的期望值為logV,因此計(jì)算復(fù)雜度至少降低為O(logV)

參考文獻(xiàn)

[1]簡單愛_wxg.霍夫曼樹[EB/OL].https://www.cnblogs.com/wxgblogs/p/5604853.html,2016-06-21.
[2]劉建平Pinard.word2vec原理(二) 基于Hierarchical Softmax的模型[EB/OL].https://www.cnblogs.com/pinard/p/7243513.html,2017-07-27.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末列荔,一起剝皮案震驚了整個(gè)濱河市敬尺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肌毅,老刑警劉巖筷转,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悬而,居然都是意外死亡呜舒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門笨奠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袭蝗,“玉大人,你說我怎么就攤上這事般婆〉叫龋” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵蔚袍,是天一觀的道長乡范。 經(jīng)常有香客問我,道長啤咽,這世上最難降的妖魔是什么晋辆? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮宇整,結(jié)果婚禮上瓶佳,老公的妹妹穿的比我還像新娘。我一直安慰自己鳞青,他們只是感情好霸饲,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臂拓,像睡著了一般厚脉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埃儿,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天器仗,我揣著相機(jī)與錄音,去河邊找鬼。 笑死精钮,一個(gè)胖子當(dāng)著我的面吹牛威鹿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轨香,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼忽你,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了臂容?” 一聲冷哼從身側(cè)響起科雳,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脓杉,沒想到半個(gè)月后糟秘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡球散,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年尿赚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕉堰。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凌净,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屋讶,到底是詐尸還是另有隱情冰寻,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布皿渗,位于F島的核電站斩芭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乐疆。R本人自食惡果不足惜秒旋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诀拭。 院中可真熱鬧,春花似錦煤蚌、人聲如沸耕挨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筒占。三九已至,卻和暖如春蜘犁,著一層夾襖步出監(jiān)牢的瞬間翰苫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奏窑,地道東北人导披。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像埃唯,于是被迫代替她去往敵國和親撩匕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

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

  • word2vec是google在2013年推出的一個(gè)NLP工具墨叛,它是將所有的詞向量化止毕,這樣詞與詞之間就可以定量的去...
    高永峰_GYF閱讀 3,740評論 0 5
  • 一、如何表示一個(gè)詞語的意思 在計(jì)算機(jī)中如何表示一個(gè)詞的意思 過去幾個(gè)世紀(jì)里一直用的是分類詞典漠趁。計(jì)算語言學(xué)中常見的方...
    DataArk閱讀 3,826評論 0 8
  • 最近新接觸文本分類問題扁凛,對于我來數(shù)第一個(gè)問題就是Word Embedding這個(gè)詞到底是什么意思,因此也就開始學(xué)習(xí)...
    小松qxs閱讀 24,829評論 2 27
  • 本文基于word2vec原理CBOW與Skip-Gram模型基礎(chǔ)CBOW與Skip-Gram的模型計(jì)算的推導(dǎo)待補(bǔ)充...
    浩_c66f閱讀 701評論 0 2
  • 那個(gè)女孩去哪兒了闯传?是換班了嗎谨朝? 少帥悚然一驚,他忽然意識到自己似乎忽略了一個(gè)很重要的人丸边。按理說叠必,以一個(gè)五星級大酒店...
    阿斯頓老馬閱讀 563評論 4 21