日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

word2vec原理_word2vec论文阅读笔记

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 word2vec原理_word2vec论文阅读笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

word2vec算是NLP中的經典算法,之前在課程中簡單的學過,但面試時經不起深問。痛定思痛,參考Jack(@沒搜出來)的總結,筆者重點閱讀了Mikolov的原始論文[1]和Xin Rong的詳細推導[2]

Jack:word2vec 相關論文?zhuanlan.zhihu.com

Mikolov的原始論文主要從時間復雜度論證了word2vec的效率,但對于其中原理和具體訓練方法描述卻相對較少,本文將以Xin Rong的推導為主(最后行文可能像是這篇論文的中文縮略版)。

一、bigram情形

筆者認為這是word2vec模型的核心,即用一個詞預測另一個詞共現概率(顯然這兩個詞的次序、相隔距離都是可以疊加設置的,從而轉換成word2vec的兩種方法——CBOW和skip-gram)。其框架圖如下所示:

圖中V是詞的數量,即詞獨熱編碼的長度,N為隱藏層變量的維度,在這里等于所要訓練詞向量的維度,該模型相當于用詞向量為隱含層,從而從輸入層(上下文詞)的獨熱編碼預測輸出層(目標詞)的獨熱編碼。計算隱含層的權重矩陣記為W,從隱含層計算輸出層的權重矩陣記為W'。接下來我們需一步步推導其更新方程。

首先從輸入層到隱藏層的公式為:

這里可以看到,由于x是獨熱編碼(即對應該向量只有詞id位置的值為1,其余值均為0),隱含層相當于取出W(維度為V×N)中詞id對應的行向量,這里定義為輸入詞的向量

對于隱含層到輸出層,定義了另一個權重矩陣W'(ps:在源碼實際訓練中,W'是W轉置,共享詞的信息),維度為N×V,可理解為詞id位置對應的列向量為輸出詞的詞向量。通過隱藏層與輸出詞詞向量作內積,可以認為是隱藏層(此處不使用輸入詞向量是因為在后續CBOW時,h不等于輸入詞向量,而是上下文多個詞向量平均值)與實際輸出的余弦相似度。從而得到每個詞與當前位置的匹配度為:

其中,下標j即為輸出詞的id,

即第j個輸出詞對應的詞向量,是W'的第j列。

為了將匹配度轉化為對應詞出現的概率分布,記作y,使用了經典的softmax函數,從而將其映射到0-1之間,這里不列出公式了。模型的目標是使對應真實輸出詞的匹配度最高(即出現概率最大),從而可以得出目標函數,同時其相反數為損失函數:

其中上標*表示實際對應的情況,即

表示實際輸出詞對應到模型中的匹配度。

之后就是對損失函數進行求偏導,從而得出訓練時更新方程,分為兩部分:

  • 隱含層到輸出層的權重;
  • 輸入層到隱含層的權重。
  • 對于第一部分,依靠鏈式法則進行計算,首先計算損失函數對于匹配度的偏導(預測誤差):

    其中,

    對應 部分,求導后為預測的概率分布;而 對應 的定義為當且僅當下標為 時為1,其余時候都為0。(ps:我認為將記為 可能更直觀明了一些。)

    之后通過鏈式法則,即可計算出代價函數關于W'的偏導:

    從而得出:

    接著計算代價函數對于W的偏導,首先計算代價函數關于隱含層的偏導:

    這里定義EH(維度為N的向量)為W'所有詞向量關于預測誤差

    為權重的和,即:

    從而,同樣通過鏈式法則計算代價函數關于W的偏導:

    從而得到更新函數為:

    由于x是獨熱編碼的緣故,事實上只需更新輸入函數的那一行,至此word2vec最核心的部分bigram用單個詞上下文信息預測某個詞的證明完成,加下來分別增加輸入詞數量(CBOW)和輸出詞數量(skip-gram)。

    二、CBOW方法

    CBOW方法是用詞上下文k個詞來預測該位置詞的信息(通常是該詞前k/2個詞,該詞后k/2個詞,但從推導來看由于權重不同,對于窗口和詞位置的關系并沒有太大關系,前后詞數不一定要對稱),預測模型的框架圖如下所示:

    與bigram情況的主要不同在于輸入詞由一個變為C個,隱含層計算公式為這些詞的等權平均數:

    由于隱含層到輸出層過程相較于bigram情形沒有任何變化,對于W'的更新函數也完全相同:

    而對于輸入層到隱含層過程,可以對于C個輸入詞分別按照bigram過程進行計算后取平均值,因而可以得出輸入層到隱含層權重的更新函數為:

    筆者認為可以修改bigram情形中輸入詞的定義,將其改為輸入上下文詞獨熱編碼的等權平均值,從而完全套用bigram情形中的公式:

    三、Skip-Gram方法

    Skip-Gram方法是用中心詞預測輸出上下文的概率,預測模型框架圖如下所示:

    與bigram情形的最大區別在于輸出詞由1個變為C個,從而從損失函數函數開始就要發生變化:

    從而可看出等于C次bigram損失函數加和,由此,根據bigram情形損失函數對于單一匹配度的偏導,定義對于上下文輸出匹配度的偏導(預測誤差):

    根據鏈式法則,損失函數關于隱含層到輸出層權重的偏導為:

    從而得出隱含層到輸出層權重的更新函數為:

    同時更新定義EH(維度為N的向量)為W'所有詞向量關于預測誤差

    為權重的和,即:

    從而輸入層到隱含層的更新函數仍然適用:

    筆者認為由推導過程中也可以看出,skip-gram算法雖然輸出層的權重是相同的,也可重新定義y為C個上下文詞的獨熱編碼等權平均數,從而完全套用bigram情形中的公式(和原公式相比只是更新項相差C倍):

    ps: 對于word2vec原理推導應該算完成了,但對于具體計算過程的細節仍存在一些疑問,比如層次softmax和負采樣兩種計算技巧,留個坑,如果有機會寫源碼閱讀筆記再寫。

    參考

  • ^Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space.ICLR Workshop, 2013?https://www.researchgate.net/publication/234131319_Efficient_Estimation_of_Word_Representations_in_Vector_Space
  • ^Rong X. word2vec parameter learning explained[J]. arXiv preprint arXiv:1411.2738, 2014.?https://www.researchgate.net/publication/268226652_word2vec_Parameter_Learning_Explained
  • 總結

    以上是生活随笔為你收集整理的word2vec原理_word2vec论文阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。