當前位置:
首頁 > 最新 > Word2v的ec 原理解析!

Word2v的ec 原理解析!

1. 前言

近年來,以深度學習為代表的人工智慧技術發展如火如荼,其應用領域也從最開始的計算機視覺擴展到了包括自然語言處理、推薦、語音識別等在內的眾多研究方向,並且在大多數領域取得了令人驚艷的效果,以筆者熟悉的自然語言處理(NLP)方向為例,縱觀近幾年在ACL、EMNLP、CLONG等頂級學術會議上發表的學術論文,隨處可見Deep Learning、Neural Network/NN、RNN、Conolutional Neural Networks/CNN、LSTM、Autoencoder、Embedding等字樣,傳統的自然語言處理的任務比如文本分類、情感分析、命名實體識別、分詞、關係抽取、機器翻譯等任務,目前取得State of Art 的方案也基本被基於深度學習的演算法佔FF據。文本表示是NLP中的基礎,Word2ec作為一種基於神經網路思想的文本表示學習方法,對在深度學習盛行的今天想要學習NLP的人來說是必要的入門知識。

word2ec是谷歌開源的一款用於詞向量計算的工具,同時也是一套生成詞向量的演算法方案,其他生成詞向量的方案有LSA、PLSA、LDA等等。Word2ec演算法的背後是一個淺層神經網路,其網路深度僅為3層,所以嚴格說Word2ec並非深度學習範疇,但其生成的詞向量在很多任務中都可以作為深度學習演算法的輸入,因此在一定程度上可以說Word2ec技術是深度學習在NLP領域能夠更好應用的基礎。

本文主要涉及一下知識點:

1) 相關背景知識

2) Word2ec中兩種詞向量模型CBOW和Skip-gram

3) Word2ec中兩種學習框架Hierarchical Softmax和Negatie Samping的原理分析

4) Word2ec相關拓展與應用

2. 相關背景知識

2.1 詞向量

計算機不能直接處理文本、圖像、聲音等內容,需要將其轉化為數字特徵後才能處理,詞向量就是文本中的單詞轉後的計算機能夠處理的數字化特徵。詞向量的表示方式主要有兩種,一種是one-hot representation,就是利用一個高維稀疏(所謂稀疏是指向量中為0的維度特別多)的向量表示一個單詞,向量的維度為詞典中詞的個數,向量中只有一個維度的值為1,其餘維度值為0,為1的維度為詞在詞典中的索引位置,常見的有詞袋(BOW,bag of words)模型;另一種是distributed representation,該方法將單詞表示成一個低維稠密的向量,常見的方法有LSA、PLSA、LDA、Word2ec、Gloe等等。下面以單詞powerful為例說明兩種不同的表示方式:

powerful的one-hot表示: [0 0 0 1 0 0 0 …,0] powerful 的distributed representation表示:[0.25 0.35 0.4 0.7 …,0.8]

優缺點比較:

one-hot representation

優點:簡單,在過去NLP任務中一直處於霸主地位;

缺點:特徵向量維度高,容易引發維度災難;詞的語義相似度無法通過詞向量的計算進行體現,不太適合深度學習的相關任務要求;

distributed representation

優點:向量維度低且稠密,信息密度高;詞間的相似度可以通過詞向量的計算體現;

缺點:學習過程相對複雜且受訓練語料的影響很大;

2.2 語言模型

語言模型即對語言進行建模,廣泛應用於分詞、詞性分析、機器翻譯等領域。本文涉及的語言模型均為統計語言模型(Statistical Language Model),其作用是計算一段文本出現的概率。

假設一段文本S的表示為:

S=(w1,w2,…,wT)

wi表示S中的第i的單詞,則文本S出現的概率為:

上面公式利用了貝葉斯公式進行了分解,上式中各個概率值是語言模型的參數,對於一段新給出的文本,只需將分解後的參數進行累乘即可得出新文本出現的概率。

語言模型參數的更一般表示形式為:p(w/context(w)),其中w表示某個單詞,context(w)表示單詞w的上下文,含義為L上下文為context(w)時,詞w出現的概率。

學習語言模型參數p(w/context(w)),目前解決方案有很多,例如N-gram模型、N-pos模型和神經概率語言模型(NPLM)以及本文提到的Word2ec中的Hierarchical Softmax模型和Negatie Sampling模型(其實本質上HS和Negatie Sampling是對傳統NPLM語言模型的一種簡化,其中基於HS的實現是利用Huffman Tree替代了原有的全連接網路)。

這裡特別說明一點:詞向量是神經網路統計語言模型的副產品。

3. CBOW模型

下面介紹連續詞袋模型(CBOW model ,Continuous Bag of Words Model)。

3.1 模型結構

模型包含三層,輸入層,映射層和輸出層。該網路的含義是已知詞w(t)的上下文w(t-2),w(t-1),w(t+1),w(t+2)的前提下預測詞w(t)出現的概率,即:p(w/context(w))。 目標函數為:

CBOW 模型中p(w/context(w))的表示框架有兩種,分別為:Hierarchical Softmax和Negatie Samping,下面分別對兩種框架下的模型參數求解進行介紹。

3.2 基於Hierarchical Softmax框架的網路結構解析

基於Hierarchical Softmax框架的CBOW模型將輸出層利用一棵Huffman Tree進行表示,該Huffman Tree使用語料中的詞根據詞頻進行構建,樹中每個葉子節點代表一個單詞,約定(詞頻較大的)左孩子節點編碼為1,(詞頻較小的)右孩子節點編碼為0。同時利用節點的層級關係,將從根節點到單詞t的路徑中每個節點當做一次二分類(基於Logistic Regression演算法),將整個路徑產生的概率作為p(w/context(w))。

網路包含以下幾部分:

1) 輸入層:包含Context(w)中2c個詞向量(Context(w)1), (Context(w)2),…(Context(w)2c),每個詞向量的維度為m。

2) 投影層:將輸入層的2c個向量求和累加,即:

3) 輸出層:輸出層對應一棵二叉樹,它是以語料中快出現過詞作為節點,以各詞在語料中出現的次數當權值構造出來的Huffman樹。這個Huffman樹中,葉子節點功N個,分別對應詞典中的詞,非葉子節點N-1個(上圖中黃色結點)。

下面介紹如何定義條件概率函數p(w/context(w)),以上圖中詞「足球」為例,從根節點出發到達「足球」這個葉子節點,中間功經歷了4次分支,而每一次分支都可視為進行了一次二分類。我們約定樹種節點編碼為0的定義為正類,編碼為1的節點定義為負類,即:

上式中piw表示從根節點出發到達葉子節點w途中經過的第i個節點的類別標籤,diw表示從根節點出發到達葉子節點w途中經過的第i個節點的的Huffman編碼,該公式描述了非葉子節點類別標籤和Huffman編碼的對應關係。

對節點進行分類使用的是邏輯回歸演算法,因此一個節點被分為正類的概率是

被分為負類的概率為

其中θ為待定參數,每個非葉節點對應一個,設設為iw,對於從根節點出發到達」足球」葉節點共經歷了4次二分類,每次分類結果的概率為:

p(足球/Context(足球))跟這四個概率值的關係有:

綜上所述:對於訓練語料的詞典D中任意次w,Huffman樹上必然存在唯一一條從根節點到詞w對應節點的路徑pw,路徑pw上存在lw-1個分支,將每個分支看做一次二分類,每一次二分類產生一個概率,這些概率的乘機即為條件概率p(w/context(w)),其一般形式如下:

其中:

或合併為下面整體表達式:

將上面公式帶入目標函數L得:

接下來對L求極大值,需要對L中的變數(xw和θ_(j-1)^w)進行求解梯度,為方便梯度推導令:

首先計算L(w,j)關於θ(j-1)w的梯度:

其中η為更新速率。

同樣的,L(w,j)關於x_^w的梯度為:

因此,xw的更新公式為:

演算法迭代結束後的p(w/context(w))即為語言模型的參數,同時其副產品(w)即為我們的想要的詞向量。

3.3 基於Negatie Samping框架的網路結構解析

本節將介紹基於Negatie Sampling(NEG)的CBOW模型,Negatie Sampling的原理不做過多介紹,NEG的目的是用來提高模型訓練速度並且改善詞向量的質量。與Herarchical SoftMax相比,NEG不再使用複雜的哈夫曼樹,而是使用相對簡單的隨機負採樣,能大幅提高性能。

對於詞w和上下文Context(w),因為需要預測w,因此詞w就是一個正樣本,其他詞就是負樣本,設為NEG(w)。對詞典中的每個w ,定義:

表示w的標籤,即正樣本標籤為1,負樣本標籤為0,對比HS模型中的非葉子節點的分類。

對於給定的詞w和上下文Context(w),我們的目的是最大化下式:

其中:

或者整體表達為:

對於一個給定的語料庫C,模型的目標函數為:

為了方便計算,對其取對數操作,即為L

對θu進行求導得:

類似的對xw進行求導得:

因此,θu 和xw的更新公式為:

4. Skip-gram模型

4.1 模型結構

模型同樣包含三層,輸入層,映射層和輸出層。該網路的含義是已知詞w(t)的前提下預測詞w(t)的上下文w(t-2),w(t-1),w(t+1),w(t+2),條件概率寫為:p(context(w)/w)。

目標函數為:

4.2 基於Hierarchical Softmax框架的網路結構解析

基於Hierarchical Softmax框架的Skip-gram模型同樣將輸出層利用一棵Huffman Tree進行表示,該Huffman Tree使用語料中的所有詞根據詞頻進行構建,樹中每個葉子節點代表一個單詞,同時利用節點的層級關係,將從根節點到context(t)中每個單詞所在葉子節點的路徑中每個節點當做一次二分類(基於Logistic Regression演算法),將所有路徑產生的概率作為p(w/ context(w))。

1)輸入層:包含1個詞向量(w),詞向量的維度為m。

2)投影層:與輸入層相同

3)輸出層:輸出層對應一棵二叉樹,它是以語料中快出現過詞作為節點,以各詞在語料中出現的次數當權值構造出來的Huffman樹。這個Huffman樹中,葉子節點功N個,分別對應詞典中的詞,非葉子節點N-1個(上圖中黃色結點)。

在skip-gram模型中p(w/ context(w))的定義為:

其中:

又有:

將上面公式帶入目標函數

得:

下面使用梯度上升對L進行優化,分別對公式中的變數求偏導數:

因此,θ(j-1)u的更新公式為:

(w)的更新公式為:

4.3 基於Negatie Samping框架的網路結構解析

本節將介紹基於Negatie Sampling(NEG)的Skip-gram模型。類似於基於基於NEG的CBOW模型,基於Negatie Sampling(NEG)的Skip-gram模型的優化目標函數為:

其中:

NEG(u)表示處理詞u時生成的負樣本子集,條件概率

寫成完整的表達式

為了簡化運算,最終目標函數取對數形式:

下面對公式中的變數求偏導,進而得出變數的更新公式,具體推導過程參考之前的方法,這裡不再贅述。

5. 相關應用與拓展

5.1 Word2ec的應用

1) 近義詞/相似文本發現

利用語義相近的詞具有相近的詞向量的特性進行同義詞發現,可以利用word2ec進行同義詞發現,這個特定可以應用在搜索引擎的查詢擴展等問題中。類似的還可以利用word2ec進行相似文本的發現,最簡單的做法就是將一段文本中所有詞的詞向量相加,作為表徵該段文本的向量,然後通過計算向量間的距離查找相似文本。

下圖為使用PCA將詞向量進行降維後的效果展示:

2) 作為其他任務的特徵

Word2ec還可以作為一種中間值,為其他任務提供特徵,比如在文本分類中可以在詞袋模型的基礎上引入word2ec作為特徵,進行分類模型的構建,以提升分類效果。

3) 詞向量在深度學習類問題中的應用

Word2ec最廣泛的應用還是在深度學習的相關應用中作為特徵輸入。

例如下圖是利用CNN)(卷積神經網路) 進行文本分類的網路結構圖,word2ec的作用是作為自然語言中單詞的表示特徵輸入CNN進行運算。

同樣的,在分詞、實體抽取、機器對話、神經網路機器翻譯(NMT)等任務中廣泛應用的Seq2Seq模型中也有word2ec的應用,類似的詞向量也是作為詞的特徵的進行輸入。

類似的應用還有生成自動圖像描述等,模型網路結構如下圖:

5.2 其他知識表示

歸根到底,word2ec是一種對單詞知識的表示方法,word2ec之後出現了大量知識表示方法的研究,例如「段向量」(paragraph ector),提出者將段信息作為一個特殊的詞,參與模型的訓練,模型結構基本與word2ec相同,具體如下圖所示:

圖 基於CBOW模型的段向量生成網路結構

圖 基於Skip-gram模型的段向量生成網路結構類似的知識表示還有graph2ec、thought2ec等等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 褪毛的天使 的精彩文章:

TAG:褪毛的天使 |