深入淺出Word2Vec原理解析

2021-02-13 Microstrong

本文概覽:

1. 背景知識

Word2Vec是語言模型中的一種,它是從大量文本預料中以無監督方式學習語義知識的模型,被廣泛地應用於自然語言處理中。

Word2Vec是用來生成詞向量的工具,而詞向量與語言模型有著密切的關係。因此,我們先來了解一些語言模型方面的知識。

1.1 統計語言模型

統計語言模型是用來計算一個句子的概率的概率模型,它通常基於一個語料庫來構建。那什麼叫做一個句子的概率呢?假設 

其中的條件概率 

看起來好像很簡單,是吧?但是,具體實現起來還是有點麻煩。例如,先來看看模型參數的個數。剛才是考慮一個給定的長度為T的句子,就需要計算T個參數。不防假設語料庫對應詞典

此外,這些參數如何計算呢?常見的方法有n-gram模型、決策樹、最大熵模型、最大熵馬爾可夫模型、條件隨機場、神經網絡等方法。本文只討論n-gram模型和神經網絡兩種方法。

1.2 N-gram模型

考慮 

根據大數定理,當語料庫足夠大時, 

其中, 

從公式(1)可以看出:一個詞出現的概率與它前面的所有詞都相關。如果假定一個詞出現的概率只與它前面固定數目的詞相關呢?這就是n-gram模型的基本思想,它做了一個

於是,公式(2)就變成了

這樣簡化,不僅使得單個參數的統計變得更容易(統計時需要匹配的詞串更短),也使得參數的總數變少了。

那麼,n-gram中的參數

表1:模型參數數量與n的關係

在計算複雜度方面,表1給出了n-gram模型中模型參數數量隨著

在模型效果方面,理論上是

另外,n-gram模型中還有一個叫做平滑化的重要環節。回到公式(3),考慮兩個問題:

顯然不能,但這是一個無法迴避的問題,哪怕你的預料庫有多麼大。平滑化技術就是用來處理這個問題的,這裡不展開討論。

總結起來,n-gram模型是這樣一種模型,其主要工作是在語料中統計各種詞串出現的次數以及平滑化處理。概率值計算好之後就存儲起來,下次需要計算一個句子的概率時,只需找到相關的概率參數,將它們連乘起來就好了。

然而,在機器學習領域有一種通用的解決問題的方法:對所考慮的問題建模後先為其構造一個目標函數,然後對這個目標函數進行優化,從而求得一組最優的參數,最後利用這組最優參數對應的模型來進行預測。

對於統計語言模型而言,利用最大似然,可把目標函數設為:

其中,

當然,實際應用中常採用最大對數似然,即把目標函數設為

然後對這個函數進行最大化。

從公式(4)可見,概率 

其中 

很顯然,對於這樣一種方法,最關鍵的地方就在於函數

1.3 神經概率語言模型

本小節介紹 Bengio 等人於2003年在論文《A Neural Probabilistic Language Model》中提出的一種神經概率語言模型。該論文首次提出用神經網絡來解決語言模型的問題,雖然在當時並沒有得到太多的重視,卻為後來深度學習在解決語言模型問題甚至很多別的nlp問題時奠定了堅實的基礎,後人站在Yoshua Bengio的肩膀上,做出了更多的成就。包括Word2Vec的作者Tomas Mikolov在NNLM的基礎上提出了RNNLM和後來的Word2Vec。文中也較早地提出將word表示一個低秩的向量,而不是One-Hot。word embedding作為一個language model的副產品,在後面的研究中起到了關鍵作用,為研究者提供了更加寬廣的思路。值得注意的是Word2Vec的概念也是在該論文中提出的。

什麼是詞向量呢?簡單來說就是,對詞典

既然是神經概率語言模型,其中當然要用到神經網絡了。 下圖給出了神經網絡的結構示意圖。模型一共三層,第一層是映射層,將

經過上面步驟的計算得到的 

其中 

這裡,需要注意的是需要提前初始化一個word embedding矩陣,每一行表示一個單詞的向量。詞向量也是訓練參數,在每次訓練中進行更新。這裡可以看出詞向量是語言模型的一個副產物,因為語言模型本身的工作是為了估計給定的一句話有多像人類的話,但從後來的研究發現,語言模型成了一個非常好的工具。

Softmax是一個非常低效的處理方式,需要先計算每個單詞的概率,並且還要計算指數,指數在計算機中都是用級數來近似的,計算複雜度很高,最後再做歸一化處理。此後很多研究都針對這個問題進行了優化,比如層級softmax、softmax tree。

當然NNLM的效果在現在看來並不算什麼,但對於後面的相關研究具有非常重要的意義。論文中的Future Work提到了用RNN來代替MLP作為模型可能會取得更好的效果,在後面Tomas Mikolov的博士論文中得到了驗證,也就是後來的RNNLM。

與n-gram模型相比,神經概率語言模型有什麼優勢呢?主要有以下兩點:

舉例來說,如果某個(英語)語料中 

A dog is running in the room
A cat is running in the room
The cat is running in a room
A dog is walking in a bedroom
The dog was walking in the room

基於詞向量的模型自帶平滑化功能(由公式(5)可知, 

最後,我們回過頭來想想,詞向量在整個神經概率語言模型中扮演了什麼角色呢?訓練時,它是用來幫助構造目標函數的輔助參數,訓練完成後,它也好像只是語言模型的一個副產品。但這個副產品可不能小覷,下一節將對其作進一步闡述。

2. 詞向量

自然語言處理相關任務中要將自然語言交給機器學習中的算法來處理,通常需要將語言數學化,因為機器不是人,機器只認數學符號。向量是人把自然界的東西抽象出來交給機器處理的東西,基本上可以說向量是人對機器輸入的主要方式了。

詞向量就是用來將語言中的詞進行數學化的一種方式,顧名思義,詞向量就是把一個詞表示成一個向量。 我們都知道詞在送到神經網絡訓練之前需要將其編碼成數值變量,常見的編碼方式有兩種:One-Hot Representation 和 Distributed Representation。

2.1 One-Hot Representation

一種最簡單的詞向量方式是One-Hot編碼 ,就是用一個很長的向量來表示一個詞,向量的長度為詞典的大小,向量中只有一個 

舉個例子:I like writing code,那麼轉換成獨熱編碼就是:

詞One-Hot 編碼I1 0 0 0like0 1 0 0writing0 0 1 0code0 0 0 1

這種One Hot編碼如果採用稀疏方式存儲,會是非常的簡潔:也就是給每個 詞分配一個數字 ID 。比如上面的例子中,code記為 

但這種詞表示有三個缺點:

(1)容易受維數災難的困擾,尤其是將其用於 Deep Learning的一些算法時;

當你的詞彙量達到千萬甚至上億級別的時候,你會遇到一個更加嚴重的問題,維度爆炸了.這裡舉例使用的是

( 2 )詞彙鴻溝,不能很好地刻畫詞與詞之間的相似性;

任意兩個詞之間都是孤立的,從這兩個向量中看不出兩個詞是否有關係。比如說,I、like之間的關係和like、writing之間的關係,通過

(3)強稀疏性;

當維度過度增長的時候,你會發現0特別多,這樣造成的後果就是整個向量中有用的信息特別少,幾乎就沒法做計算。

由於One-hot編碼存在以上種種問題,所以研究者就會尋求發展,用另外的方式表示,就是Distributed Representation。

2.2 Distributed Representation

Distributed Representation最早是Hinton於1986年提出的,可以克服One-Hot Representation的上述缺點。其基本想法是:通過訓練將某種語言中的每一個詞 映射成一個固定長度的短向量(當然這裡的「短」是相對於One-Hot Representation的「長」而言的),所有這些向量構成一個詞向量空間,而每一個向量則可視為 該空間中的一個點,在這個空間上引入「距離」,就可以根據詞之間的距離來判斷它們之間的語法、語義上的相似性了。Word2Vec中採用的就是這種Distributed Representation 的詞向量。

為什麼叫做 Distributed Representation?很多人問到這個問題。一個簡單的解釋是這樣的:對於One-Hot Representation,向量中只有一個非零分量,非常 集中(有點孤注一擲的感覺);而對於Distributed Representation,向量中有大量非零分量,相對分散(有點風險平攤的感覺),把詞的信息分布到各個分量 中去了。這一點,跟並行計算裡的分布式並行很像。

如何獲取詞向量呢?有很多不同模型可以用來估計詞向量,包括有名的LSA(Latent Semantic Analysis)和LDA(Latent Dirichlet Allocation)。此外,利用神經 網絡算法也是一種常用的方法,上一節介紹的神經概率語言模型就是一個很好的實例。當然,在那個模型中,目標是生成語言模型,詞向量只是一個副產品。事實上, 大部分情況下,詞向量和語言模型都是捆綁在一起的,訓練完成後兩者同時得到。在用神經網絡訓練語言模型方面,最經典的論文就是Bengio於2003年發表的《A Neural Probabilistic Language Model》 ,其後有一系列相關的研究工作,其中也包括谷歌Tomas Mikolov團隊的Word2Vec。

3. Word2Vec的網絡結構

Word2Vec是輕量級的神經網絡,其模型僅僅包括輸入層、隱藏層和輸出層,模型框架根據輸入輸出的不同,主要包括CBOW和Skip-gram模型。 CBOW的方式是在知道詞

3.1 CBOW3.1.1 Simple CBOW Model

為了更好的了解模型深處的原理,我們先從Simple CBOW model(僅輸入一個詞,輸出一個詞)框架說起。

如上圖所示:

input layer輸入的X是單詞的one-hot representation(考慮一個詞表

了解了Simple CBOW model的模型框架之後,我們來學習一下其目標函數。

輸出層通過softmax歸一化,

3.1.2 CBOW Multi-Word Context Model

了解了Simple CBOW model之後,擴展到CBOW就很容易了,只是把單個輸入換成多個輸入罷了(劃紅線部分)。

對比可以發現,和simple CBOW不同之處在於,輸入由

3.2 Skip-gram Model

有了CBOW的介紹,對於Skip-gram model 的理解應該會更快一些。

如上圖所示,Skip-gram model是通過輸入一個詞去預測多個詞的概率。輸入層到隱藏層的原理和simple CBOW一樣,不同的是隱藏層到輸出層,損失函數變成了

一般神經網絡語言模型在預測的時候,輸出的是預測目標詞的概率,也就是說我每一次預測都要基於全部的數據集進行計算,這無疑會帶來很大的時間開銷。不同於其他神經網絡,Word2Vec提出兩種加快訓練速度的方式,一種是Hierarchical softmax,另一種是Negative Sampling。

4. 基於Hierarchical Softmax的模型

基於層次Softmax的模型主要包括輸入層、投影層(隱藏層)和輸出層,非常的類似神經網絡結構。對於Word2Vec中基於層次Softmax的CBOW模型,我們需要最終優化的目標函數是 :

其中 

4.1 基於Hierarchical Softmax的CBOW4.1.1 CBOW模型網絡結構

下圖給出了基於層次Softmax的CBOW的整體結構,首先它包括輸入層、投影層和輸出層:

投影層:指的是直接對 

為了便於下面的介紹和公式的推導,這裡需要預先定義一些變量:

既然已經引入了那麼多符號,我們通過一個簡單的例子把它們落到實處吧,我們考慮單詞w="足球"的情形。下圖中紅色線路就是我們的單詞走過的路徑,整個路徑上的

下面我們需要開始考慮如何構建條件概率函數 

既然是二分類,那麼我們可以定義一個為正類,一個為負類。我們的"足球"的哈夫曼編碼為

簡而言之就是,將一個結點進行分類時,分到左邊就是負類,分到右邊就是正類。

在進行二分類的時候,這裡選擇了Sigmoid函數。那麼,一個結點被分為正類的概率就是:

被分為負類的概率就是  

對於從根節點出發到達「足球」這個葉子節點所經歷的4次二分類,將每次分類的概率寫出來就是:

但是,我們要求的是 

至此,通過w="足球"的小例子,Hierarchical Softmax的基本思想就已經介紹完了。小結一下:對於詞典中的任意一個單詞 

條件概率 

其中:

或者寫成整體表達式:

將公式(8)帶入公式(6)中,得到:

為了梯度推導方便起見,將上式中雙重求和符號下的內容簡記為 

至此,已經推導出了CBOW模型的目標函數公式(9),接下來就是討論如何優化它,即如何將這個函數最大化。Word2Vec裡面採用的是隨機梯度上升法。而梯度類算法的關鍵是給出相應的梯度計算公式,進行反向傳播。

4.1.3 參數更新

首先考慮

於是,  

接下來考慮

到了這裡,我們已經求出來了 

4.2 基於Hierarchical Softmax的Skip-gram

本小節介紹Word2Vec中的另一個模型-Skip-gram模型,由於推導過程與CBOW大同小異,因此會沿用上小節引入的記號。

4.2.1 Skip-gram模型網絡結構

下圖給出了Skip-gram模型的網絡結構,同CBOW模型的網絡結構一樣,它也包括三層:輸入層、投影層和輸出層。下面以樣本 

投影層:這是個恆等投影,把 

對於Skip-gram模型,已知的是當前詞 

上式中 

其中:

將公式(10)依次代回,可得對數似然函數公式(7)的具體表達式:

同樣,為了梯度推導方便,將三重求和符號裡的內容簡記為

至此,已經推導出了Skip-gram模型的目標函數(公式11),接下來同樣利用隨機梯度上升法對其進行優化。而梯度類算法的關鍵是給出相應的梯度計算公式,進行反向傳播。

4.2.3 參數更新

首先考慮

於是,  

同理,根據對稱性,可以很容易得到 

我們也可以得到關於

5. 基於Negative Sampling的模型

本節將介紹基於Negative Sampling的CBOW和Skip-gram模型。Negative Sampling(簡稱為NEG)是Tomas Mikolov等人在論文《Distributed Representations of Words and Phrases and their Compositionality》中提出的,它是NCE(Noise Contrastive Estimation)的一個簡化版,目的是用來提高訓練速度並改善所得詞向量的質量。與Hierarchical Softmax相比,NEG不再使用複雜的Huffman樹,而是利用相對簡單的隨機負採樣,能大幅度提高性能,因而可作為Hierarchical Softmax的一種替代。

NCE 的細節有點複雜,其本質是利用已知的概率密度函數來估計未知的概率密度函數。簡單來說,假設未知的概率密度函數為X,已知的概率密度為Y,如果得到了X和Y的關係,那麼X也就可以求出來了。具體可以參考論文《 Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics》。

5.1 負採樣算法簡單介紹

顧名思義,在基於Negative Sampling的CBOW和Skip-gram模型中,負採樣是個很重要的環節,對於一個給定的詞

詞典

下面,先用一段通俗的描述來幫助讀者理解帶權採樣的機理。設詞典

這裡 

接下來再談談Word2Vec中的具體做法。記 

圖:

將內部剖分結點 

有了這個映射,採樣就簡單了:每次生成一個 

值得一提的是,Word2Vec源碼中為詞典

此外,代碼中取 

5.2 基於Negative Sampling的CBOW

上面已經介紹完了負採樣算法,下面開始推導出基於Negative Sampling的CBOW的目標函數。首先我們先選好一個關於 

上式表示詞 

對於一個給定的正樣本 

其中:

這裡 

為什麼要最大化 

其中, 

可以作為最終的整體優化目標。當然,這裡為了求導方便,對

同樣,為了求導方便,我們還是取 

接下來,利用隨機梯度上升法求梯度。首先考慮

那麼 

同時根據對稱性,可以得到 

那麼 

5.3 基於Ngative Sampling的Skip-gram

本小節介紹基於Negative Sampling的Skip-gram模型。它和上一小節介紹的CBOW模型所用的思想是一樣的,因此,這裡我們直接從目標函數出發,且沿用之前的記號。

對於一個給定的樣本 

其中:

或者寫成整體表達式:

這裡 

就可以作為整體優化的目標。同樣,我們取

為了梯度推導的方便,我們依舊將三重求和符號下的內容提取出來,記為 

接下來,利用隨機梯度上升法求梯度。首先考慮 

然後得到 

同理根據對稱性,得到:

然後得到 

6. 關於Word2Vec若干問題的思考

(1)Word2Vec兩個算法模型的原理是什麼,網絡結構怎麼畫?

(2)網絡輸入輸出是什麼?隱藏層的激活函數是什麼?輸出層的激活函數是什麼?

(3)目標函數/損失函數是什麼?

(4)Word2Vec如何獲取詞向量?

(5)推導一下Word2Vec參數如何更新?

(6)Word2Vec的兩個模型哪個效果好哪個速度快?為什麼?

(7)Word2Vec加速訓練的方法有哪些?

(8)介紹下Negative Sampling,對詞頻低的和詞頻高的單詞有什麼影響?為什麼?

(9)Word2Vec和隱狄利克雷模型(LDA)有什麼區別與聯繫?

以上問題可以通過本文和參考文章找到答案,這裡不再詳細解答。

(10)介紹下Hierarchical Softmax的計算過程,怎麼把 Huffman 放到網絡中的?參數是如何更新的?對詞頻低的和詞頻高的單詞有什麼影響?為什麼?

Hierarchical Softmax利用了Huffman樹依據詞頻建樹,詞頻大的節點離根節點較近,詞頻低的節點離根節點較遠,距離遠參數數量就多,在訓練的過程中,低頻詞的路徑上的參數能夠得到更多的訓練,所以效果會更好。

(11)Word2Vec有哪些參數,有沒有什麼調參的建議?

Skip-Gram 的速度比CBOW慢一點,小數據集中對低頻次的效果更好;Sub-Sampling Frequent Words可以同時提高算法的速度和精度,Sample 建議取值為 

(12)Word2Vec有哪些局限性?

Word2Vec作為一個簡單易用的算法,其也包含了很多局限性:

Word2Vec只考慮到上下文信息,而忽略的全局信息;Word2Vec只考慮了上下文的共現性,而忽略的了彼此之間的順序性;7. Word2Vec在工業界的應用

Word2Vec主要原理是根據上下文來預測單詞,一個詞的意義往往可以從其前後的句子中抽取出來。

而用戶的行為也是一種相似的時間序列,可以通過上下文進行推斷。當用戶瀏覽並與內容進行交互時,我們可以從用戶前後的交互過程中判斷行為的抽象特徵,這就使得我們可以把詞向量模型應用到推薦、廣告領域當中。

7.1 NLP領域Word2Vec學習到的詞向量代表了詞的語義,可以用來做分類、聚類、也可以做詞的相似度計算。把Word2Vec生成的向量直接作為深度神經網絡的輸入,可以做sentiment analysis等工作。7.2 圖嵌入

基於Word2Vec這一類的Graph Embedding方法有很多,具體可以參考論文:DeepWalk(是引入Word2Vec思想比較經典的圖嵌入算法),node2vec,struc2vec 等等。

7.3 推薦領域

Airbnb在論文《Real-time Personalization using Embeddings for Search Ranking at Airbnb》中提出將用戶的瀏覽行為組成List,通過Word2Vec方法學習item的向量,其點擊率提升了21%,且帶動了99%的預定轉化率。該論文主要是在Skip-gram 模型的基礎上做了改進。

Yahoo在論文《E-commerce in Your Inbox: Product Recommendations at Scale》中提出Yahoo郵箱從發送到用戶的購物憑證中抽取商品並組成List,通過Word2Vec學習並為用戶推薦潛在的商品;

7.4 廣告領域

Yahoo在論文《Scalable Semantic Matching of Queries to Ads in Sponsored Search Advertising》中提出將用戶的搜索查詢和廣告組成List,並為其學習特徵向量,以便對於給定的搜索查詢可以匹配適合的廣告。

8. Reference

【1】Rong X. word2vec parameter learning explained[J]. arXiv preprint arXiv:1411.2738, 2014.
【2】【Paper】Word2Vec:詞嵌入的一枚銀彈,地址:https://mp.weixin.qq.com/s/7dsjfcOfm9uPheJrmB0Ghw
【3】Word2Vec詳解-公式推導以及代碼 - link-web的文章 - 知乎 https://zhuanlan.zhihu.com/p/86445394
【4】The Illustrated Word2vec,Jay Alammar,地址:https://jalammar.github.io/illustrated-word2vec/
【5】圖解word2vec(原文翻譯),地址:https://mp.weixin.qq.com/s/Yq_-1eS9UuiUBhNNAIxC-Q
【6】word2vec 相比之前的 Word Embedding 方法好在什麼地方? - 知乎 https://www.zhihu.com/question/53011711
【7】[NLP] 秒懂詞向量Word2vec的本質 - 穆文的文章 - 知乎 https://zhuanlan.zhihu.com/p/26306795
【8】http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
【9】word2vec模型深度解析 - TianMin的文章 - 知乎 https://zhuanlan.zhihu.com/p/85998950
【10】 A Neural Probabilistic Language Model - 張俊的文章 - 知乎 https://zhuanlan.zhihu.com/p/21240807
【11】word2vec有什麼應用? - 知乎 https://www.zhihu.com/question/25269336

最後除引用文獻外也推薦一些看過的資料:
【1】《深度學習word2vec學習筆記》,北流浪子。
【2】《Word2Vec中的數學》,peghoty。
【3】《Deep Learning實戰之Word2Vec》,網易有道。

本文主要參考了peghoty的《Word2Vec中的數學》,寫的非常棒, 強烈推薦大家學習。此外,我把自己學習Word2Vec時,收集到的優質資料已經整理好了,公眾號後臺回復【Word2Vec】領取。

相關焦點

  • 【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模型深度解析
    【前言】word2vec是一個被廣泛應用的word embedding方法,由於最近研究需要,將算法模型研究了一下由於word2vec內容很多,這裡儘量講解核心內容,有不足之處還請指出!word2vec hierarchical softmax結構和傳統的神經網絡輸出不同的是,word2vec的hierarchical softmax結構是把輸出層改成了一顆哈夫曼樹,其中圖中白色的葉子節點表示詞彙表中所有的|V|個詞,黑色節點表示非葉子節點
  • Doc2vec原理解析及代碼實踐
    2. Doc2vec原理Doc2vec方法是一種無監督算法,能從變長的文本(例如:句子、段落或文檔)中學習得到固定長度的特徵表示。Doc2vec模型是受到了Word2Vec模型的啟發。Word2Vec預測詞向量時,預測出來的詞是含有詞義的,Doc2vec中也是構建了相同的結構,所以Doc2vec克服了詞袋模型中沒有語義的缺點。
  • 【算法】word2vec與doc2vec模型
    小編邀請您,先思考:1 word2vec算法原理是什麼?
  • 【NLP】doc2vec原理及實踐
    https://blog.csdn.net/John_xyz/article/details/79208564word2vec提供了高質量的詞向量,並在一些任務中表現良好。 https://arxiv.org/pdf/1310.4546.pdfhttps://arxiv.org/pdf/1301.3781.pdf關於如何使用第三方庫gensim訓練word2vec可以參考這篇博客:http://blog.csdn.net/john_xyz/article/details/54706807儘管word2vec提供了高質量的詞彙向量,仍然沒有有效的方法將它們結合成一個高質量的文檔向量
  • 白話Word2Vec
    關於Hierarchical Softmax和Negative Sampling的原理細節(包含太多數學公式,白話不出來了,誰要能幫我把這部分講清楚,我請吃飯_)可參看以下文章:word2vec 代碼實現(1) – Skip gramhttps://link.jianshu.com/?
  • 文本深度表示模型—word2vec&doc2vec詞向量模型
    Word2Vector 模型最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想什麼是word2vec?
  • 文本深度表示模型——word2vec&doc2vec詞向量模型
    d)  Word2Vector 模型  最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想  什麼是word2vec?
  • 深入理解word2vec
    word2vec是一種基於神經網絡的語言模型,也是一種詞彙表徵方法。word2vec包括兩種結構:skip-gram(跳字模型)和CBOW(連續詞袋模型),但本質上都是一種詞彙降維的操作。  我們將NLP的語言模型看作是一個監督學習問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞。基於輸入和輸出之間的映射便是語言模型。
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    的技術細節,為了保證一些初學者的知識是自洽的,我還是想在此之前詳細介紹一下深度學習的基本操作Embedding以及從word2vec到item2vec的模型原理。使embedding空前流行的word2vec對word的vector表達的研究早已有之,但讓embedding方法空前流行,我們還是要歸功於google的word2vec。我們簡單講一下word2vec的原理,這對我們之後理解AirBnB對loss function的改進至關重要。
  • 圖解word2vec
    word2vec一直是一種有效的詞嵌入的方法,本文把word2vec用圖解的方式進行,全篇沒有數學公式,非常通俗易懂,推薦初學者閱讀。原文連結:https://jalammar.github.io/illustrated-word2vec/這篇文章的代碼傳到了本站的github:https://github.com/fengdu78/machine_learning_beginner/tree/master/word2vec正文開始
  • word2vec——高效word特徵求取
    繼上次分享了經典統計語言模型,最近公眾號中有很多做NLP朋友問到了關於word2vec的相關內容, 本文就在這裡整理一下做以分享。A neural probabilistic language model, JMLR 2003]中就有提出, 名為NNLM, 它是一個前向網絡, 同時學習詞語表徵和一個統計語言模型(後面具體講)。在Mikolov的碩士論文[1]和他在ICASSP 2009上發表的文章[2]中, 用一個單隱層網絡訓練詞語表徵, 然後將這個表徵作為NNLM的輸入進行訓練。
  • 詞向量詳解:從word2vec、glove、ELMo到BERT
    學習各種詞向量訓練原理可以很好地掌握NLP各種方法。生成詞向量的方法有很多種,本文重點介紹word2vec,glove和bert。這裡總結一下比較經典的語言模型:word2vec、glove、ELMo、BERT。
  • 大白話講解word2vec到底在做些什麼
    在word2vec出現之前,自然語言處理經常把字詞轉為離散的單獨的符號,也就是One-Hot Encoder。模型拆解word2vec模型其實就是簡單化的神經網絡。基於word2vec的文檔語義分析處理金庸小說文檔主要分析使用word2vec進行文檔(此處指由字符串表示的文檔)的與語義分析。使用gensim包的word2vec模型對文庫進行訓練,得到目標模型後,我們可進一步作如下研究:1)判斷任意兩個詞彙的相似度。
  • 圖解 Word2Vec
    在本文中,我們將介紹嵌入的概念以及使用word2vec生成嵌入的機制。但是,讓我們從一個示例開始,以熟悉如何使用向量來表示事物。你是否知道五個數字(一個向量)可以代表你的個性?Personality Embeddings: What are you like?
  • 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對比有什麼區別?
  • 使用Python可視化Word2vec的結果
    在本文中,我們將:從廣義上討論word2vec理論;下載原始的預訓練向量;看看一些有趣的應用程式:比如對一些單詞進行算術運算,比如著名的king-man+woman=queen等式根據word2vec向量看看我們能多精確地來繪製歐洲的首都。word2vec的原始研究論文和預訓練模型來自2013年,考慮到NLP文獻的擴展速度,目前它是老技術。
  • 用word2vec解讀延禧攻略人物關係
    2構建思路需要的數據:延禧攻略小說延禧攻略劇本延禧攻略人物名稱算法:word2vec前端:主要使用gensim進行word2vec的訓練。gensim是一個Python NLP的包,封裝了google的C語言版的word2vec。安裝gensim是很容易的,使用"pip install gensim"即可。
  • Word Embedding Papers | 經典再讀之Word2Vec
    都已經 2020 年了,還在介紹 word2vec?對。詞嵌入(word embeddings)向前可以追溯到上世紀 50 年代(雖然那時還不叫這個名字,但語義如何被表徵的假說已經提出了),向後更是隨著一個個芝麻街成員的強勢加入,恨不得天天都是該領域的新 SOTA。所以不如找個中間的裡程碑 word2vec 先挖一坑,畢竟想那麼多,都沒做來得實際。
  • Word2Vec 與 GloVe 技術淺析與對比
    semantic analysis)為代表的global matrix factorization methods,也稱為 count-based methods; 以及以word2vec為代表的 prediction-based methods。