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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

cbow word2vec 损失_word2vec个人总结-理论篇

發布時間:2024/1/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cbow word2vec 损失_word2vec个人总结-理论篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

word2vec不算新,但是在工業界有廣泛應用。該方法利用詞在各滑動窗口的共現現象建模詞的潛在關系,并最終得到詞向量(word embedding)。如果兩個詞的embedding向量內積較大,則表示它們關系越近。主要參考的是aston zhang的dive into deep learning ,也結合了相關論文和優質博客, 補充一些自己的理解。

word2vec在其思想框架下提出了兩個具體模型,即skip-gram和CBOW。剛開始看的時候以為是word2vec是一個具體算法,skip-gram/CBOW是其中的兩個模塊,實際上它們是word2vec思想框架下的兩種獨立的實現。

假設單詞

有中心詞 和 背景詞 兩種角色,分別用長度為d的詞向量表示,其中i為單詞表V中的單詞下標。以 作為中心,取前后長度為m的窗口,截取一個2m+1個單詞序列,并利用詞在序列內的共現現象挖掘詞的內在聯系。以一定的步長滑動窗口得到訓練集。窗口內除了 ,其他詞都定義為背景詞。具體概念參考下圖:

滑動窗口為2,藍色背景為中心詞,其他為背景詞

根據最大似然的思想,既然我們看到了一篇文檔,那么我們認為該文檔的產生不是偶然。假設文檔內各單詞獨立生成,則可人為定義每個單詞的生成概率,進一步得到一篇文檔的生成概率,并利用最大似然的思想最大化這個概率,利用滑動窗口內單詞共現這一線索去求每個單詞的兩種詞向量

和 。自此word2vec已完成使命。我們可以利用詞向量去完成其他任務,例如聚類等。

跳字模型(skip-gram)

該模型定義已知中心詞

生成背景詞 的概率:

公式1

其中

是 的背景詞向量, 是 的中心詞向量,該式是一個softmax。假定滑動窗口大小為m,文本序列長度為T, 。則生成文本序列的似然函數為

公式2

等價的log損失函數為

公式3

公式4

其中

公式5

接下來是自己的一些理解。

  • skip-gram如何與網絡結構對應起來。簡單來說,前半段(輸入層-隱藏層)是查詢過程,后半段(隱藏層-輸出層)實際上就是一個softmax。
  • 圖1

    先考慮從輸入層到隱藏層的過程。輸入層為

    的onehot表示,隱藏層參數矩陣實際上是所有中心詞的詞向量,隱藏層輸出的是的詞向量 ,是一個“查字典的過程”。例子:

    輸入第四個詞的onehot,與隱藏層矩陣相乘,最后輸出第四個詞作為中心詞的詞向量

    。該過程表達的是“已知中心詞為 ”。

    再考慮從隱藏層到輸出層的過程。隱藏層的輸出是

    ,輸出層參數矩陣實際上是所有背景詞的詞向量,兩者做向量內積,第i個輸出單元為 的值,最后以softmax形式歸一化。該過程表達的是“已知中心詞為,生成背景詞 的概率”。例子:

    2. 無標簽的word2vec內部隱含的有監督學習。既然是NN,那么就存在前向傳遞和反向傳播兩個步驟。前者固定參數并計算中間結果,最終輸出預測值。后者根據設定好的損失函數(目標函數),固定中間結果并更新參數。損失函數本質上是關于標簽與預測值的函數

    ,所以標簽是什么呢?標簽其實就是 中的 。例子:

    假設

    為第四個單詞,左邊是softmax輸出的預測概率,右邊是 的onehot形式的label,由于 真的出現了,所以label為1。從模型的似然函數來看,實際上等價于交叉熵

    其中

    是y_label的第v各分量,因為是onehot形式,化簡即得公式3。

    3. 為什么一般只使用skip-gram的中心詞向量作為詞的表征向量

    感性認識見此鏈接。我嘗試在公式層面用反向傳播過程去理解,但沒想明白。以隨機梯度下降為例,每個樣本產生的損失函數見公式3

    該公式是關于任一背景詞向量

    , 和中心詞向量 的函數。反向傳播時會更新所有背景詞向量和指定中心詞向量。每個樣本每次反向傳播時,背景詞向量都會更新,那么為什么skip-gram不取背景詞向量作為詞的表征呢?

    4. 條件概率

    中是如何想到用背景詞向量乘中心詞向量 來對條件概率進行建模的

    向量內積本質上就是cosine距離。從物理意義上來說,skip-gram建模的是中心詞和背景詞的共現,若中心詞

    和背景詞 在滑動窗口內同時出現,則兩者隱含語義越接近,向量內積就越大。

    CBOW

    該模型與skip-gram最大的不同在于條件概率的定義。不同于skip-gram,CBOW定義的是已知背景詞等情況下生成中心詞的條件概率。由于背景詞有多個,一般求所有背景詞的平均,然后用skip-gram相同的步驟求解。CBOW一般用背景詞向量來表征單詞。

    CBOW訓練速度要比skip-gram快,原因在于一個滑動窗口內只能產生一個sample,而skip-gram可以產生多個。比如滑動窗口含“the man loves his son”, loves為中心詞。對于CBOW,只有一個樣本,該樣本以loves為中心詞,“the man his son”作為背景詞;對于skip-gram,有多個樣本,即<love, the>, <love, man>, <love, his>, <love son>。

    skip-gram效果更好一些,尤其是生僻字。原因有兩個,一是上一段提到的樣本的原因。love在skip-gram有四個sample,可以更新四次參數(假設使用隨機梯度下降)。而使用CBOW時"the man his son"只有一個樣本,更新一次參數。此外,CBOW用所有背景詞的均值來表示背景詞信息帶入運算,也會損失精度。

    參考資料

  • 10.1. 詞嵌入(word2vec) dive into deep learning, 第10.1節詞嵌入。
  • 論文 word2vec Parameter Learning Explained
  • 穆文:[NLP] 秒懂詞向量Word2vec的本質
  • Word2Vec教程-Skip-Gram模型
  • word2vec 中的SkipGram 和CBOW的區別
  • 總結

    以上是生活随笔為你收集整理的cbow word2vec 损失_word2vec个人总结-理论篇的全部內容,希望文章能夠幫你解決所遇到的問題。

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