深入理解word2vec

2021-02-13 機器學習實驗室

Author:louwill

From:深度學習筆記

語言模型是自然語言處理的核心概念之一。word2vec是一種基於神經網絡的語言模型,也是一種詞彙表徵方法。word2vec包括兩種結構:skip-gram(跳字模型)和CBOW(連續詞袋模型),但本質上都是一種詞彙降維的操作。  我們將NLP的語言模型看作是一個監督學習問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞。基於輸入和輸出之間的映射便是語言模型。這樣的一個語言模型的目的便是檢查和放在一起是否符合自然語言法則,更通俗一點說就是和擱一起是不是人話。所以,基於監督學習的思想,本文的主角——word2vec便是一種基於神經網絡訓練的自然語言模型。word2vec是谷歌於2013年提出的一種NLP分析工具,其特點就是將詞彙進行向量化,這樣我們就可以定量的分析和挖掘詞彙之間的聯繫。因而word2vec也是我們上一講講到的詞嵌入表徵的一種,只不過這種向量化表徵需要經過神經網絡訓練得到。word2vec訓練神經網絡得到一個關於輸入和輸出之間的語言模型,我們的關注重點並不是說要把這個模型訓練的有多好,而是要獲取訓練好的神經網絡權重,這個權重就是我們要拿來對輸入詞彙的向量化表示。一旦我們拿到了訓練語料所有詞彙的詞向量,接下來開展 NLP 研究工作就相對容易一些了。word2vec包括兩種模型。一種是給定上下文詞,需要我們來預測中間目標詞,這種模型叫做連續詞袋模型(Continuous Bag-of-Words Model,以下簡稱CBOW),另一種是給定一個詞語,我們根據這個詞來預測它的上下文,這種模型叫做skip-gram模型,也有種翻譯稱之為「跳字」模型。CBOW模型的應用場景是要根據上下文預測中間詞,所以我們的輸入便是上下文詞,當然原始的單詞是無法作為輸入的,這裡的輸入仍然是每個詞彙的one-hot向量,輸出為給定詞彙表中每個詞作為目標詞的概率。CBOW模型的結構如圖1所示。Skip-gram模型的應用場景是要根據中間詞預測上下文詞,所以我們的輸入是任意單詞,輸出為給定詞彙表中每個詞作為上下文詞的概率。Skip-gram模型的結構如圖2所示。從CBOW和skip-gram模型的結構圖可以看到,二者除了在輸入輸出上有所不同外,基本上沒有太大區別。將CBOW的輸入層換成輸出層基本上就變成了 skip-gram 模型,二者可以理解為一種互為翻轉的關係。從監督學習的角度來說,word2vec本質上是一個基於神經網絡的多分類問題,當輸出詞語非常多時,我們則需要一些像Hierarchical Softmax(分層Softmax)和Negative Sampling(負採樣)之類的技巧來加速訓練。但從自然語言處理的角度來說,word2vec關注的並不是神經網絡模型本身,而是訓練之後得到的詞彙的向量化表徵。這種表徵使得最後的詞向量維度要遠遠小於詞彙表大小,所以word2vec從本質上來講是一種降維操作。我們把數以萬計的詞彙從高維空間中降維到低維空間中,對NLP的下遊任務大有裨益。 因為skip-gram和CBOW的相似性,本小節僅以CBOW模型為例說明word2vec是如何訓練得到詞向量的。圖3標出了CBOW模型要訓練的參數,很明顯我們要訓練得到輸入層到隱藏層的權重以及隱藏層到輸出層的權重。將上下文詞進行one-hot表徵作為模型的輸入,其中詞彙表的維度為,上下文單詞數量為;然後將所有上下文詞彙的one-hot向量分別乘以共享的輸入權重矩陣;將計算得到的向量做softmax激活處理得到維的概率分布,取概率最大的索引作為預測的目標詞。下面以具體例子來說明。假設語料為I learn NLP everyday, 以I learn everyday作為上下文詞,以NLP作為目標詞。將上下文詞和目標詞都進行one-hot表徵作為輸入,如圖4所示。然後將one-hot表徵分別乘以輸入層權重矩陣,這個矩陣也叫嵌入矩陣,可以隨機初始化生成。如圖5所示。圖5 CBOW訓練過程2:one-hot輸入乘以嵌入矩陣然後將得到的向量結果相加求平均作為隱藏層向量,如圖6所示。然後將隱藏層向量乘以輸出層權重矩陣,這個矩陣也是嵌入矩陣,可以初始化得到。得到輸出向量,如圖7所示。最後對輸出向量做Softmax激活處理得到實際輸出,並將其與真實標籤做比較,然後基於損失函數做梯度優化訓練。以上便是完整的CBOW模型計算過程,也是word2vec將詞彙訓練為詞向量的基本方法之一。無論是Skip-gram模型還是CBOW模型,word2vec一般而言都能提供較高質量的詞向量表達,圖9是以50000個單詞訓練得到的128維的skip-gram詞向量壓縮到2維空間中的可視化展示。可以看到,意思相近的詞基本上被聚到了一起,也證明了word2vec是一種可靠的詞向量表徵方式。

往期精彩:

  CNN圖像分類:從LeNet5到EfficientNet

【原創首發】機器學習公式推導與代碼實現30講.pdf

【原創首發】深度學習語義分割理論與實戰指南.pdf

喜歡您就點個在看!

相關焦點

  • 【算法】word2vec與doc2vec模型
    2 word2vec與doc2vec有什麼差異?3 如何做word2vec和doc2vec?深度學習掀開了機器學習的新篇章,目前深度學習應用於圖像和語音已經產生了突破性的研究進展。  d)  Word2Vector 模型  最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想  什麼是word2vec?
  • word2vec模型深度解析
    【前言】word2vec是一個被廣泛應用的word embedding方法,由於最近研究需要,將算法模型研究了一下由於word2vec內容很多,這裡儘量講解核心內容,有不足之處還請指出!word2vec hierarchical softmax結構和傳統的神經網絡輸出不同的是,word2vec的hierarchical softmax結構是把輸出層改成了一顆哈夫曼樹,其中圖中白色的葉子節點表示詞彙表中所有的|V|個詞,黑色節點表示非葉子節點
  • [NLP] 秒懂詞向量Word2vec的本質
    和 Ronan 11年那篇JMLR,看完對主題模型、用CNN處理NLP任務有所了解,但依然無法完全吃透 word2vec;這時候我開始大量閱讀中英文博客,其中 北漂浪子 的一篇閱讀量很多的博客吸引了我的注意,裡面非常系統地講解了 Word2vec 的前因後果,最難得的是深入剖析了代碼的實現細節,看完之後細節方面了解了很多,不過還是覺得有些迷霧;終於,我在 quora 上看到有人推薦 Xin Rong
  • 圖解 Word2Vec
    儘管這擴展了我們對過程的理解,但仍然不是word2vec實際訓練的方式。我們缺少幾個關鍵思想。Negative Sampling回憶一下此神經語言模型如何計算其預測的三個步驟:在這裡插入圖片描述Word2vec Training Process現在,我們已經建立了skipgram和負採樣這兩個中心思想,我們可以繼續仔細研究實際的word2vec訓練過程。
  • 圖解word2vec
    word2vec一直是一種有效的詞嵌入的方法,本文把word2vec用圖解的方式進行,全篇沒有數學公式,非常通俗易懂,推薦初學者閱讀。在過去的幾十年中,使用嵌入技術進行神經模型已有相當大的發展(最近的發展包括BERT和GPT2 等尖端模型的語境化嵌入)。自2013年以來,Word2vec一直是一種有效創建單詞嵌入的方法。除了詞嵌入字的方法之外,它的一些概念已經被證明可以在非語言任務中有效地創建推薦引擎和理解順序數據。
  • 使用Python可視化Word2vec的結果
    Word2vec絕對是我在自然語言處理研究中遇到的最有趣的概念。想像一下,有一種算法可以成功地模擬理解單詞的含義及其在語言中的功能,它可以在不同的主題內來衡量單詞之間的接近程度。我認為可視化地表示word2vec向量會很有趣:本質上,我們可以獲取國家或城市的向量,應用主成分分析來減少維度,並將它們放在二維圖表上。然後,我們可以觀察可視化的結果。
  • 文本深度表示模型—word2vec&doc2vec詞向量模型
    Word2Vector 模型最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想什麼是word2vec?
  • 文本深度表示模型——word2vec&doc2vec詞向量模型
    d)  Word2Vector 模型  最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想  什麼是word2vec?
  • 白話Word2Vec
    t=http://superjom.duapp.com/neural-language-model/word2vec-implement.htmlword2vec 代碼實現(2) – CBOWhttps://link.jianshu.com/?
  • Word2vec如何得到詞向量
    前言word2vec是如何得到詞向量的?這個問題比較大。
  • NLP中的詞向量對比:word2vec/glove/fastText/elmo/GPT/bert
    2、怎麼從語言模型理解詞向量?怎麼理解分布式假設?3、傳統的詞向量有什麼問題?怎麼解決?各種詞向量的特點是什麼?4、word2vec和NNLM對比有什麼區別?(word2vec vs NNLM)5、word2vec和fastText對比有什麼區別?(word2vec vs fastText)6、glove和word2vec、 LSA對比有什麼區別?
  • Word Embedding Papers | 經典再讀之Word2Vec
    2. word2vec(二):面試!考點!都在這裡:圍繞 Distributed Representations of Words and Phrases and their Compositionality。會談到:真正讓 word2vec 被廣泛應用的延伸與改進。
  • 大白話講解word2vec到底在做些什麼
    也叫word embeddings,中文名「詞向量」,作用就是將自然語言中的字詞轉為計算機可以理解的稠密向量(Dense Vector)。在word2vec出現之前,自然語言處理經常把字詞轉為離散的單獨的符號,也就是One-Hot Encoder。
  • word2vec——高效word特徵求取
    繼上次分享了經典統計語言模型,最近公眾號中有很多做NLP朋友問到了關於word2vec的相關內容, 本文就在這裡整理一下做以分享。A neural probabilistic language model, JMLR 2003]中就有提出, 名為NNLM, 它是一個前向網絡, 同時學習詞語表徵和一個統計語言模型(後面具體講)。在Mikolov的碩士論文[1]和他在ICASSP 2009上發表的文章[2]中, 用一個單隱層網絡訓練詞語表徵, 然後將這個表徵作為NNLM的輸入進行訓練。
  • 【NLP】從word2vec, ELMo到BERT
    每個人對於BERT的理解都不一樣,本文就試著從word2vec和ELMo的角度說說BERT。下面先簡單回顧一下word2vec和ELMo中的精華,已經理解很透徹的小夥伴可以快速下拉到BERT章節啦。word2vec說來也都是些俗套而樂此不疲一遍遍寫的句子,2013年Google的word2vec一出,讓NLP各個領域遍地開花,一時間好像不用上預訓練的詞向量都不好意思寫論文了。而word2vec是什麼呢?模型顯然就是一個「線性」語言模型。
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    的技術細節,為了保證一些初學者的知識是自洽的,我還是想在此之前詳細介紹一下深度學習的基本操作Embedding以及從word2vec到item2vec的模型原理。使embedding空前流行的word2vec對word的vector表達的研究早已有之,但讓embedding方法空前流行,我們還是要歸功於google的word2vec。我們簡單講一下word2vec的原理,這對我們之後理解AirBnB對loss function的改進至關重要。
  • 乾貨 | Word2Vec是如何得到詞向量的?
    來自 | 知乎    作者 | crystalajj編輯 | 機器學習算法與自然語言處理公眾號本文僅作學術分享,若侵權,請聯繫後臺刪文處理   前言word2vec得到你想要的processed corpus之後,將他們的one-hot向量作為word2vec的輸入,通過word2vec訓練低維詞向量(word embedding)就ok了。不得不說word2vec是個很棒的工具,目前有兩種訓練模型(CBOW和Skip-gram),兩種加速算法(Negative Sample與Hierarchical Softmax)。
  • Word2Vec 與 GloVe 技術淺析與對比
    semantic analysis)為代表的global matrix factorization methods,也稱為 count-based methods; 以及以word2vec為代表的 prediction-based methods。
  • 【Word2Vec】深入淺出Word2Vec原理解析
    Reference【1】Rong X. word2vec parameter learning explained[J]. arXiv preprint arXiv:1411.2738, 2014.Alammar,地址:https://jalammar.github.io/illustrated-word2vec/【5】圖解word2vec(原文翻譯),地址:https://mp.weixin.qq.com/s/Yq_-1eS9UuiUBhNNAIxC-Q【6】word2vec 相比之前的 Word Embedding 方法好在什麼地方?
  • 圖解Word2vec
    尤其是最近,其發展包括導致BERT和GPT2等尖端模型的語境化嵌入。BERT:https://jalammar.github.io/illustrated-bert/Word2vec是一種有效創建詞嵌入的方法,它自2013年以來就一直存在。但除了作為詞嵌入的方法之外,它的一些概念已經被證明可以有效地創建推薦引擎和理解時序數據。在商業的、非語言的任務中。