圖解 Word2Vec

2021-02-13 datazero

原題:The Illustrated Word2vec;

原文:HTML;

作者:Jay Alammar

我發現嵌入(embeddings)是機器學習中最引人入勝的想法之一。如果你曾經使用Siri,Google Assistant,Alexa,Google Translate,甚至是智慧型手機鍵盤的單詞預測功能,那麼你可能已經從自然語言處理模型中受益。在過去的幾十年中,在神經模型中使用嵌入有了很大的發展(最近的發展包括上下文化的詞嵌入,開發出了諸如BERT和GPT2之類的尖端模型)。

Word2vec是一種有效創建單詞嵌入的方法,自2013年以來一直存在。但是,除了其作為詞嵌入方法的效用之外,它的某些概念甚至在商業性非語言任務中也被證明可以有效地創建推薦引擎並理解序列數據。像Airbnb,阿里巴巴,Spotify和Anghami這樣的公司都受益於從NLP領域中這臺出色的機器,並將其用於生產中,從而為新型推薦引擎提供支持。

在本文中,我們將介紹嵌入的概念以及使用word2vec生成嵌入的機制。但是,讓我們從一個示例開始,以熟悉如何使用向量來表示事物。你是否知道五個數字(一個向量)可以代表你的個性?

Personality Embeddings: What are you like?

以0到100的比例,你的內向/外向程度如何(其中,0表示內向程度最高,100是外向程度最高)?你是否曾經參加過MBTI之類的性格測試,異或參加了 Big Five Personality Traits 測試?這些測試會詢問一系列問題,然後對人具有的不同特徵打分,其中內向/外向就是其中之一。Big Five Personality Trait 測試結果的示例。它可以真正告訴很多有關你自己的信息,並顯示出對學術,個人和專業成功的預測能力。這是查找結果的地方。

假如我的內向/外向得分為38/100。我們可以這樣繪製:將範圍切換為[-1,1]:

人很複雜,所以只由一個特徵來判斷人的信息是很有限的。因此,添加另一個維度,測試中另一個特徵的得分。我們可以將這兩個特徵表示為二維坐標上的一個點,或者更好地表示為從原點到該點的向量。

我已經隱藏了我們要繪製的特徵,以使你習慣於不知道每個維度代表什麼,但是仍然可以從一個人的個性的向量代表中獲得很多價值。

現在我們可以說這個向量部分地代表了我的個性。當打算將另外兩個人與我進行比較時,這種表示法很有用。假設我被公共汽車撞了,我需要被一個性格相似的人代替。下圖中的兩個人哪個人與我更相似?處理向量時,計算相似度得分的常用方法是 cosine_similarity:【補】1號人物的性格與我更相似。指向相同方向(長度也起作用)的向量具有較高的餘弦相似度得分。

再者,兩個維度還不足以捕獲有關不同人的足夠信息。幾十年來的心理學研究表明有五個主要特徵(以及許多次要特徵)。因此,我們在比較中使用所有五個維度:五個維度的問題在於,我們無法在二維中繪製小箭頭。這是機器學習中的一個常見挑戰,我們經常不得不在更高維度的空間中進行思考。好處是,cosine_similarity 仍然有效。它適用於任意數量的尺寸:cosine_similarity 適用於任意數量的維度。這些分數要好得多,因為它們是基於對所比較事物的更高解析度表示來計算的。

在本節的最後,我希望我們提出兩個中心思想:

我們可以將人(和事物)表示為數字的向量(這對機器非常有用!)。在這裡插入圖片描述Word Embeddings

有了這種理解,我們就可以著眼於訓練有素的詞向量(word-vector examples)示例,也稱為詞嵌入(word embeddings),並開始研究它們的一些有趣特性。

這是單詞「king」的詞嵌入(在Wikipedia上訓練的GloVe矢量):

[0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 ,
-0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , 
-0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 
0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , 
-0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 
0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , 
-0.64426 , -0.51042]

它是包含50個數的列表。查看這些值並不好理解,可以對其進行可視化,以便將其與其他單詞向量比較。將所有這些數字放在一行中:

根據它們的值對進行顏色編碼(如果接近2,則為紅色;如果接近0,則為白色;如果接近-2,則為藍色):我們將忽略數字,僅查看顏色以指示單元格的值。現在,將「king」與其他單詞進行對比:由上圖可以看出,「Man」和「Woman」比二者與「king」更相似。這說明這些向量捕獲了這些單詞的相當一部分信息/含義/關聯。

這是另一個示例列表(通過垂直掃描列以查找具有相似顏色的列進行比較):需要指出的幾點:

這些不同的詞都有一個直的紅色長條。表示它們在該維度上是相似的(但並不知道每個維度代表什麼)。可以看到「woman」和「girl」在很多地方是相似的。「man」和「boy」也是如此。「boy」和「girl」也有彼此相似的地方,但不同於「woman」和「man」。這些編碼可能為模糊的青年概念。除最後一個單詞外,所有單詞都是代表人的單詞。我添加了一個對象(水)以顯示類別之間的差異。例如,可以看到藍色的列一直向下,並在嵌入「水」之前停止。很明顯,「king」 和 「queen」彼此相似,但二者卻截然不同。這些難道會成為模糊的王權概念的編碼嗎?Analogies

對類別(離散變量)進行嵌入編碼是顯示嵌入令人難以置信的特性的著名示例。我們可以對詞嵌入進行加減運算,然後得出有趣的結果。最著名的例子是公式:「國王」-「男人」 +「女人」:使用python中的Gensim庫,我們可以對詞嵌入進行加減運算,它將找到與所得向量最相似的詞。該圖像顯示了最相似的單詞的列表,每個單詞都有其餘弦相似度。

我們可以像以前一樣可視化:現在,我們已經研究了訓練有素的詞嵌入,下面讓我們詳細了解其訓練過程。但是在介紹word2vec之前,我們需要看一下詞嵌入概念的來源:神經語言模型。

Language Modeling

如果要舉一個NLP應用程式的例子,最好的例子之一就是智慧型手機鍵盤的下一詞預測功能。這項功能每天都有數十億人使用。

下一個單詞預測是可以由語言模型解決的任務。語言模型可以獲取一個單詞列表(假設兩個單詞),並嘗試預測其後的單詞。

在上面的屏幕截圖中,我們可以認為該模型是一個採用了這兩個綠色單詞(thou shalt)並返回建議列表的模型(「not」是概率最高的那個):我們可以認為模型看起來像這個黑匣子:

但實際上,模型不會只輸出一個單詞。實際上,它會為它所知道的所有單詞輸出概率得分(該模型的詞彙數量從幾千到幾百萬個單詞不等)。然後,鍵盤應用程式將得分最高的單詞,並將其呈現給用戶。神經語言模型的輸出是該模型知道的所有單詞的概率得分。這裡我們將概率表示為百分比,但實際上在輸出向量中40%表示為0.4。

經過訓練後,早期的神經語言模型(Bengio 2003)將通過三個步驟來計算預測:

討論嵌入時,第一步對我們而言最相關。訓練過程的結果之一是矩陣,其中包含我們詞彙表中每個單詞的嵌入。在預測期間,我們只需查找輸入單詞的嵌入,然後使用它們來計算預測:現在,我們轉到訓練過程中,以了解有關如何開發此嵌入矩陣的更多信息。

Language Model Training

與大多數其他機器學習模型相比,語言模型具有巨大的優勢。這樣做的好處是,我們能夠對正在運行的文本進行訓練-我們擁有大量的文本。考慮一下我們所擁有的所有書籍,文章,Wikipedia內容和其他形式的文本數據。與許多其他需要手工製作的特徵和專門收集的數據的機器學習模型形成對比。

單詞是通過我們查看它們傾向於出現在旁邊的其他單詞來嵌入的。其機理是

我們獲得了大量文本數據(例如,所有Wikipedia文章)。然後我們有一個窗口(例如,三個單詞),可以在所有文本上滑動。

當此窗口相對於文本滑動時,我們(實際上)生成了用於訓練模型的數據集。為了確切地了解其完成方式,讓我們看看滑動窗口如何處理此短語:

當我們開始時,窗口位於句子的前三個單詞上:

我們將前兩個詞作為特徵,並將第三個詞作為標籤:

現在,我們已經在數據集中生成了第一個樣本,以後可以用來訓練語言模型。

然後,我們將窗口滑動到下一個位置,並創建另一個示例:現在生成第二個示例。

很快,我們有了一個更大的數據集,其中的單詞傾向於出現在不同的單詞對之後:

實際上,當我們滑動窗口時,往往會訓練模型。但是我發現從邏輯上將「數據集生成」階段與訓練階段邏輯上分開是很清楚的。除了基於神經網絡的語言建模方法外,一種稱為N-grams的技術通常用於訓練語言模型(請參閱:Chapter 3 of Speech and Language Processing)。要了解從N-grams轉換為神經模型並應用於現實產品,這是我最喜歡的Android鍵盤(Swiftkey在2015年的博客文章),介紹了他們的神經語言模型,並將其與以前的N-gram模型進行了比較。我喜歡這個示例,因為它展示了如何在營銷演講中描述嵌入的算法特性。

Look both ways

要知道從帖子的前面知道什麼,請填寫空白:我在這裡提供的上下文是空白單詞之前的五個單詞(以及前面提到的「bus」)。我敢肯定,大多數人都會猜到空白處的單詞為「bus」。但是,如果我改變提供的信息(如下圖),答案會改變嗎?這完全改變了空白處該填入的詞。現在,red 一詞最有可能成為空白。我們從中學到的是在特定單詞之前和之後的單詞都具有信息價值。事實證明,考慮到兩個方向(我們正在猜測的單詞的左側和右側的單詞),可以更好地嵌入單詞。讓我們看看我們如何調整訓練模型的方式來解決這個問題。

Skipgram

除了查看目標詞之前的兩個詞,我們還可以查看目標詞之後的兩個詞。

如果這樣做,我們實際上要構建和訓練模型的數據集將如下所示:

這被稱為單詞連續袋(Continuous Bag of Words)架構,並且在one of the word2vec papers [pdf]中進行了描述。另一種傾向於表現出出色結果的結構有所不同。

與其根據上下文來猜測一個單詞(之前和之後的單詞),不如嘗試使用當前單詞來猜測相鄰的單詞。可以認為它在訓練文本上滑動的窗口看起來像這樣:綠色插槽中的單詞是輸入單詞,每個粉紅色框是一個可能的輸出。

粉色框具有不同的陰影,因為此滑動窗口實際上在訓練數據集中創建了四個單獨的樣本該方法稱為跳過圖(skipgram)結構。可以通過執行以下操作來可視化滑動窗口:

這會將這四個樣本添加到我們的訓練數據集中:然後,我們將窗口滑動到下一個位置:生成下面的四個示例:多次滑動之後以後,可以得到許多樣本:

Revisiting the training process

現在,已經從現有的運行文本中提取了skipgram訓練數據集,讓我們看看如何使用它來訓練預測相鄰單詞的基本神經語言模型。

我們從數據集中的第一個樣本開始。我們抓取該特徵並將其饋送到未經訓練的模型,要求其預測合適的鄰近詞。

該模型執行這三個步驟,並輸出預測向量(將概率分配給詞彙中的每個詞)。由於模型未經訓練,因此在此階段的預測肯定是錯誤的,但是沒關係。我們知道它應該猜出什麼單詞——我們當前用於訓練模型的行中的標籤/輸出單元格:

「目標向量」是目標單詞的概率為1的單詞,所有其他單詞的概率為0的單詞。

模型距離多遠?我們減去兩個向量,得出誤差向量:現在,可以使用此誤差向量來更新模型,因此下次,當它輸入為 not 時,模型更有可能預測為 thou。

到此結束培訓的第一步。我們繼續對數據集中的下一個樣本進行同樣的處理,然後對下一個樣本進行同樣的處理,直到遍歷完數據集中的所有樣本,此時一個epoch結束。我們將重複訓練多個epoch,然後得到訓練好的模型,可以從中提取嵌入矩陣並將其用於其他任何應用程式。

儘管這擴展了我們對過程的理解,但仍然不是word2vec實際訓練的方式。我們缺少幾個關鍵思想。

Negative Sampling

回憶一下此神經語言模型如何計算其預測的三個步驟:

從計算的角度來看,第三步非常昂貴——要知道需要將對數據集中的每個訓練樣本執行一次(很容易就達到幾千萬次)。我們需要做一些改善性能的事情。

一種方法是將目標分為兩個步驟:

生成高質量的單詞嵌入(不用擔心下一個單詞的預測)。使用這些高質量的嵌入來訓練語言模型(進行下一個單詞的預測)。

在這篇文章中,我們將重點放在步驟1。為了使用高性能模型生成高質量的嵌入,我們可以將模型的任務切換為預測相鄰單詞:然後將其切換到採用輸入和輸出單詞的模型,並輸出一個分數,以表明它們是否為鄰居(0表示「非鄰居」,1表示「鄰居」)。

這個簡單的開關將我們需要的模型從神經網絡更改為邏輯回歸模型——因此它變得更簡單,計算更快。

此切換要求我們切換數據集的結構-標籤現在是值為0或1的新列。由於我們添加的所有單詞都是鄰居,因此它們均為1。

現在可以以驚人的速度進行計算——在幾分鐘內處理數百萬個示例。但是,我們需要解決一個漏洞。如果我們所有的示例都是正例(target:1),那smartass模型可能始終返回1——達到100%的準確率,但是這樣什麼也不學並且會產生性能非常差的嵌入。

為了解決這個問題,我們需要向數據集中引入負樣本——不是鄰居的單詞樣本。對於這些樣本,我們的模型需要返回0。現在這是模型必須努力解決的挑戰,但仍要以驚人的速度進行。

對於數據集中的每個樣本,我們添加負樣本。它們具有相同的輸入詞和0標籤。

這個想法是受Noise-contrastive estimation [pdf]啟發,將實際信號(相鄰單詞的正例)與噪聲(不是鄰居的隨機選擇單詞)進行對比。

Skipgram with Negative Sampling (SGNS)

現在,已經介紹了word2vec中的兩個中心思想:合起來,它們被稱為帶有負採樣的skipgram。

在這裡插入圖片描述Word2vec Training Process

現在,我們已經建立了skipgram和負採樣這兩個中心思想,我們可以繼續仔細研究實際的word2vec訓練過程。

在訓練開始之前,要對進行訓練的文本進行預處理。在此步驟中,我們確定詞彙量(將其稱為vocab_size,想像為10000),以及屬於哪個單詞。

在訓練階段的開始,我們創建兩個矩陣:嵌入矩陣(Embedding matrix)和上下文矩陣(Context matrix)。這兩個矩陣在我們的詞彙表中都有一個嵌入詞(因此vocab_size是它們的維度之一)。第二個維度是我們希望每個嵌入的持續時間(embedding_size=300是一個常見值,在本文中設置為50)。

在訓練開始時,使用隨機值初始化這些矩陣,然後開始訓練。在每個訓練步驟中,我們都採用一個正例及其相關的負例。讓我們來看第一組:現在我們有四個單詞:輸入單詞 not 和 輸出/上下文單詞:thou(實際的鄰居),aaron 和 taco(負例)。繼續查找它們的嵌入——對於輸入的單詞,在嵌入矩陣中查找。對於上下文單詞,查看上下文矩陣(即使兩個矩陣都對詞彙表中的每個單詞都有嵌入)。

然後,我們計算輸入嵌入與每個上下文嵌入的點積。在每種情況下,這都會產生一個數字,該數字表示輸入和上下文嵌入的相似性。

現在,我們需要一種方法來將這些分數轉換為看起來像概率的東西——它們都為正數且值在零到一之間,sigmoid logistic 函數很適合這個任務。現在,我們可以將 sigmoid 的輸出視為這些示例的模型輸出。可以看到,在 sigmoid 前後,taco 的得分均為最高,而 aaron 的得分均為最低。

現在,未經訓練的模型已經做出了預測,並且看起來好像有一個實際的目標標籤可以進行比較,讓我們計算模型的預測中有多少錯誤。為此,我們只需從目標標籤中減去 sigmoid 得分即可。這是機器學習的「學習」部分。現在,我們可以使用此錯誤分數來調整 not, thou, aaron, taco 的嵌入,以便下次進行此計算時,結果將更接近目標分數。

訓練到此結束。可以看出,模型稍好地嵌入了此步驟中涉及的單詞(not, thou, aaron, taco)。現在,我們繼續下一步(下一個正例及其相關的負例),並再次執行相同的過程。

當我們循環遍歷整個數據集多次時,嵌入將繼續得到改善。然後,可以停止訓練,丟棄Context矩陣,並將Embeddings矩陣用作下一個任務的預訓練嵌入。

Window Size and Number of Negative Samples

word2vec訓練過程中的兩個關鍵超參數是:窗口大小和負樣本數目。不同的窗口大小可以更好地完成不同的任務。一種啟發式方法是,較小的窗口大小(2-15)會導致這樣的嵌入:兩個嵌入之間的相似度很高,這表示單詞可以互換(注意,如果我們僅查看周圍的單詞,反義詞通常可以互換——例如好與壞經常出現在類似的背景下。較大的窗口大小(15-50,甚至更大)會導致這樣的嵌入:其相似性更能指示單詞的相關性。實際上,通常必須提供注釋,以指導嵌入過程,從而為你的任務提供有用的相似感。Gensim的默認窗口大小為5(除了輸入單詞本身之外,還包括輸入單詞之前的兩個單詞和輸入單詞之後的兩個單詞)。

負樣本的數量是訓練過程的另一個因素。原始論文規定5-20的負樣本數比較適合。它還指出,當數據集足夠大時,2-5似乎已經足夠。Gensim的默認值為5個負樣本。

Conclusion

我希望你現在對詞嵌入和word2vec算法有所了解。我還希望現在當閱讀提及 skip gram with negative sampling(SGNS)的論文(如頂部的推薦系統論文)時,對這些概念有更好的理解。一如既往,感謝所有反饋。@JayAlammar

References & Further ReadingsDistributed Representations of Words and Phrases and their Compositionality [pdf]Efficient Estimation of Word Representations in Vector Space [pdf]A Neural Probabilistic Language Model [pdf]Speech and Language Processing by Dan Jurafsky and James H. Martin is a leading resource for NLP. Word2vec is tackled in Chapter 6.Neural Network Methods in Natural Language Processing by Yoav Goldberg is a great read for neural NLP topics.Chris McCormick has written some great blog posts about Word2vec. He also just released The Inner Workings of word2vec, an E-book focused on the internals of word2vec.Want to read the code? Here are two options:Gensim’s python implementation of word2vecMikolov’s original implementation in C – better yet, this version with detailed comments from Chris McCormick.Evaluating distributional models of compositional semanticsOn word embeddings, part 2

相關焦點

  • 圖解word2vec
    word2vec一直是一種有效的詞嵌入的方法,本文把word2vec用圖解的方式進行,全篇沒有數學公式,非常通俗易懂,推薦初學者閱讀。原文連結:https://jalammar.github.io/illustrated-word2vec/這篇文章的代碼傳到了本站的github:https://github.com/fengdu78/machine_learning_beginner/tree/master/word2vec正文開始
  • Word2vec算法圖解(一)
    今天的主題是:Word2vec算法圖解(一)一、word2vec算法簡介Sikp-grams(SG)給定中心詞去預測上下文單詞。Continuous Bag of Words(CBOW)給定上下文單詞去預測中心詞。
  • 圖解Word2vec
    在這篇文章中,我們將討論嵌入的概念,以及使用word2vec生成嵌入的機制。讓我們從一個例子開始,熟悉使用向量來表示事物。你是否知道你的個性可以僅被五個數字的列表(向量)表示?個性嵌入:你是什麼樣的人?如何用0到100的範圍來表示你是多麼內向/外向(其中0是最內向的,100是最外向的)?你有沒有做過像MBTI那樣的人格測試,或者五大人格特質測試?
  • 【算法】word2vec與doc2vec模型
    2 word2vec與doc2vec有什麼差異?3 如何做word2vec和doc2vec?深度學習掀開了機器學習的新篇章,目前深度學習應用於圖像和語音已經產生了突破性的研究進展。  d)  Word2Vector 模型  最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想  什麼是word2vec?
  • 深入理解word2vec
    word2vec是一種基於神經網絡的語言模型,也是一種詞彙表徵方法。word2vec包括兩種結構:skip-gram(跳字模型)和CBOW(連續詞袋模型),但本質上都是一種詞彙降維的操作。  我們將NLP的語言模型看作是一個監督學習問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞。基於輸入和輸出之間的映射便是語言模型。
  • 自然語言處理——圖解Word2vec
    在這篇文章中,我們將討論嵌入的概念,以及使用word2vec生成嵌入的機制。讓我們從一個例子開始,熟悉使用向量來表示事物。你是否知道你的個性可以僅被五個數字的列表(向量)表示?個性嵌入:你是什麼樣的人?如何用0到100的範圍來表示你是多麼內向/外向(其中0是最內向的,100是最外向的)?你有沒有做過像MBTI那樣的人格測試,或者五大人格特質測試?
  • word2vec——高效word特徵求取
    繼上次分享了經典統計語言模型,最近公眾號中有很多做NLP朋友問到了關於word2vec的相關內容, 本文就在這裡整理一下做以分享。A neural probabilistic language model, JMLR 2003]中就有提出, 名為NNLM, 它是一個前向網絡, 同時學習詞語表徵和一個統計語言模型(後面具體講)。在Mikolov的碩士論文[1]和他在ICASSP 2009上發表的文章[2]中, 用一個單隱層網絡訓練詞語表徵, 然後將這個表徵作為NNLM的輸入進行訓練。
  • 白話Word2Vec
    t=http://superjom.duapp.com/neural-language-model/word2vec-implement.htmlword2vec 代碼實現(2) – CBOWhttps://link.jianshu.com/?
  • 圖解 Word2Vec,讀這一篇就夠了
    但在我們開始使用word2vec之前,我們需要看一下詞嵌入的父概念:神經語言模型。如果要舉自然語言處理最典型的例子,那應該就是智慧型手機輸入法中的下一單詞預測功能。這是個被數十億人每天使用上百次的功能。以上確實有助於我們理解整個流程,但這依然不是word2vec真正訓練的方法。我們錯過了一些關鍵的想法。回想一下這個神經語言模型計算預測值的三個步驟:
  • word2vec模型深度解析
    【前言】word2vec是一個被廣泛應用的word embedding方法,由於最近研究需要,將算法模型研究了一下由於word2vec內容很多,這裡儘量講解核心內容,有不足之處還請指出!word2vec是輕量級的神經網絡,其模型僅僅包括輸入層、隱藏層和輸出層,模型框架根據輸入輸出的不同,主要包括CBOW和skip-gram模型,CBOW模型是通過上下文的內容預測中間的目標詞,而skip-gram則相反,通過目標詞預測其上下文的詞,通過最大化詞出現的概率,我們訓練模型可得到各個層之間的權重矩陣,我們所說的得到的word embedding vector就是從這個權重矩陣裡面得來的。
  • 使用Python可視化Word2vec的結果
    在本文中,我們將:從廣義上討論word2vec理論;下載原始的預訓練向量;看看一些有趣的應用程式:比如對一些單詞進行算術運算,比如著名的king-man+woman=queen等式根據word2vec向量看看我們能多精確地來繪製歐洲的首都。word2vec的原始研究論文和預訓練模型來自2013年,考慮到NLP文獻的擴展速度,目前它是老技術。
  • 文本深度表示模型—word2vec&doc2vec詞向量模型
    Word2Vector 模型最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想什麼是word2vec?
  • 文本深度表示模型——word2vec&doc2vec詞向量模型
    d)  Word2Vector 模型  最近幾年剛剛火起來的算法,通過神經網絡機器學習算法來訓練N-gram 語言模型,並在訓練過程中求出word所對應的vector的方法。本文將詳細闡述此方法的原理。4.word2vec算法思想  什麼是word2vec?
  • 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。
  • 【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 方法好在什麼地方?
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    的技術細節,為了保證一些初學者的知識是自洽的,我還是想在此之前詳細介紹一下深度學習的基本操作Embedding以及從word2vec到item2vec的模型原理。使embedding空前流行的word2vec對word的vector表達的研究早已有之,但讓embedding方法空前流行,我們還是要歸功於google的word2vec。我們簡單講一下word2vec的原理,這對我們之後理解AirBnB對loss function的改進至關重要。
  • Word2vec如何得到詞向量
    前言word2vec是如何得到詞向量的?這個問題比較大。
  • [NLP] 秒懂詞向量Word2vec的本質
    Word2vec參考資料總結(以下都是我踩過的坑,建議先跳過本節,閱讀正文部分,讀完全文回頭再來看)先大概說下我深挖 word2vec 的過程:先是按照慣例,看了 Mikolov 關於 Word2vec 的兩篇原始論文,然而發現看完依然是一頭霧水,似懂非懂,主要原因是這兩篇文章省略了太多理論背景和推導細節;然後翻出 Bengio 03年那篇JMLR
  • 【NLP】從word2vec, ELMo到BERT
    每個人對於BERT的理解都不一樣,本文就試著從word2vec和ELMo的角度說說BERT。下面先簡單回顧一下word2vec和ELMo中的精華,已經理解很透徹的小夥伴可以快速下拉到BERT章節啦。word2vec說來也都是些俗套而樂此不疲一遍遍寫的句子,2013年Google的word2vec一出,讓NLP各個領域遍地開花,一時間好像不用上預訓練的詞向量都不好意思寫論文了。而word2vec是什麼呢?模型顯然就是一個「線性」語言模型。