1.6Word2Vec是如何工作的?它和LDA有什麼區別與聯繫?

06 Word2Vec

場景描述

谷歌2013年提出的Word2Vec是目前最常用的詞嵌入模型之一。Word2Vec實際 是一種淺層的神經網絡模型,它有兩種網絡結構,分別是CBOW(Continues Bag of Words)和Skip-gram。

知識點

Word2Vec,隱狄利克雷模型(LDA),CBOW,Skip-gram

問題 Word2Vec是如何工作的?它和LDA有什麼區別與聯繫?

分析與解答

CBOW的目標是根據上下文出現的詞語來預測當前詞的生成概率,如圖 1.3(a)所示;而Skip-gram是根據當前詞來預測上下文中各詞的生成概率,如圖 1.3(b)所示。

在這裏插入圖片描述

其中w(t)是當前所關注的詞,w(t−2)、w(t−1)、w(t+1)、w(t+2)是上下文中出現 的詞。這裏前後滑動窗口大小均設爲2。

CBOW和Skip-gram都可以表示成由輸入層(Input)、映射層(Projection)和 輸出層(Output)組成的神經網絡。

輸入層中的每個詞由獨熱編碼方式表示,即所有詞均表示成一個N維向量,其 中N爲詞彙表中單詞的總數。在向量中,每個詞都將與之對應的維度置爲1,其餘 維度的值均設爲0。

在映射層(又稱隱含層)中,K個隱含單元(Hidden Units)的取值可以由N維 輸入向量以及連接輸入和隱含單元之間的N×K維權重矩陣計算得到。在CBOW 中,還需要將各個輸入詞所計算出的隱含單元求和。

同理,輸出層向量的值可以通過隱含層向量(K維),以及連接隱含層和輸出 層之間的K×N維權重矩陣計算得到。輸出層也是一個N維向量,每維與詞彙表中的 一個單詞相對應。最後,對輸出層向量應用Softmax激活函數,可以計算出每個單 詞的生成概率。Softmax激活函數的定義爲在這裏插入圖片描述

其中x代表N維的原始輸出向量,xn爲在原始輸出向量中,與單詞wn所對應維度的取值。

接下來的任務就是訓練神經網絡的權重,使得語料庫中所有單詞的整體生成 概率最大化。從輸入層到隱含層需要一個維度爲N×K的權重矩陣,從隱含層到輸 出層又需要一個維度爲K×N的權重矩陣,學習權重可以用反向傳播算法實現,每 次迭代時將權重沿梯度更優的方向進行一小步更新。但是由於Softmax激活函數中 存在歸一化項的緣故,推導出來的迭代公式需要對詞彙表中的所有單詞進行遍 歷,使得每次迭代過程非常緩慢,由此產生了Hierarchical Softmax和Negative Sampling兩種改進方法,有興趣的讀者可以參考Word2Vec的原論文[3]。訓練得到 維度爲N×K和K×N的兩個權重矩陣之後,可以選擇其中一個作爲N個詞的K維向量 表示。

談到Word2Vec與LDA的區別和聯繫,首先,LDA是利用文檔中單詞的共現關 系來對單詞按主題聚類,也可以理解爲對“文檔-單詞”矩陣進行分解,得到“文檔- 主題”和“主題-單詞”兩個概率分佈。而Word2Vec其實是對“上下文-單詞”矩陣進行 學習,其中上下文由周圍的幾個單詞組成,由此得到的詞向量表示更多地融入了上下文共現的特徵。也就是說,如果兩個單詞所對應的Word2Vec向量相似度較 高,那麼它們很可能經常在同樣的上下文中出現。需要說明的是,上述分析的是 LDA與Word2Vec的不同,不應該作爲主題模型和詞嵌入兩類方法的主要差異。主 題模型通過一定的結構調整可以基於“上下文-單詞”矩陣進行主題推理。同樣地, 詞嵌入方法也可以根據“文檔-單詞”矩陣學習出詞的隱含向量表示。主題模型和詞 嵌入兩類方法最大的不同其實在於模型本身,主題模型是一種基於概率圖模型的生成式模型,其似然函數可以寫成若干條件概率連乘的形式,其中包括需要推測 的隱含變量(即主題);而詞嵌入模型一般表達爲神經網絡的形式,似然函數定義在網絡的輸出之上,需要通過學習網絡的權重以得到單詞的稠密向量表示。

另外博主收藏這些年來看過或者聽過的一些不錯的常用的上千本書籍,沒準你想找的書就在這裏呢,包含了互聯網行業大多數書籍和麪試經驗題目等等。有人工智能系列(常用深度學習框架TensorFlow、pytorch、keras。NLP、機器學習,深度學習等等),大數據系列(Spark,Hadoop,Scala,kafka等),程序員必修系列(C、C++、java、數據結構、linux,設計模式、數據庫等等)以下是部分截圖

更多文章見本原創微信公衆號「五角錢的程序員」,我們一起成長,一起學習。一直純真着,善良着,溫情地熱愛生活。關注回覆【電子書】即可領取哦

在這裏插入圖片描述

在這裏插入圖片描述
給大家推薦一個Github,上面非常非常多的乾貨:https://github.com/XiangLinPro/IT_book

They always say time changes things, but you actually have to change them yourself.
人們常說某些事會隨時間改變,但事實上你必須自己改變它們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章