cbow word2vec 损失_word2vec个人总结-理论篇
word2vec不算新,但是在工業(yè)界有廣泛應(yīng)用。該方法利用詞在各滑動窗口的共現(xiàn)現(xiàn)象建模詞的潛在關(guān)系,并最終得到詞向量(word embedding)。如果兩個詞的embedding向量內(nèi)積較大,則表示它們關(guān)系越近。主要參考的是aston zhang的dive into deep learning ,也結(jié)合了相關(guān)論文和優(yōu)質(zhì)博客, 補(bǔ)充一些自己的理解。
word2vec在其思想框架下提出了兩個具體模型,即skip-gram和CBOW。剛開始看的時候以為是word2vec是一個具體算法,skip-gram/CBOW是其中的兩個模塊,實(shí)際上它們是word2vec思想框架下的兩種獨(dú)立的實(shí)現(xiàn)。
假設(shè)單詞
有中心詞 和 背景詞 兩種角色,分別用長度為d的詞向量表示,其中i為單詞表V中的單詞下標(biāo)。以 作為中心,取前后長度為m的窗口,截取一個2m+1個單詞序列,并利用詞在序列內(nèi)的共現(xiàn)現(xiàn)象挖掘詞的內(nèi)在聯(lián)系。以一定的步長滑動窗口得到訓(xùn)練集。窗口內(nèi)除了 ,其他詞都定義為背景詞。具體概念參考下圖:滑動窗口為2,藍(lán)色背景為中心詞,其他為背景詞根據(jù)最大似然的思想,既然我們看到了一篇文檔,那么我們認(rèn)為該文檔的產(chǎn)生不是偶然。假設(shè)文檔內(nèi)各單詞獨(dú)立生成,則可人為定義每個單詞的生成概率,進(jìn)一步得到一篇文檔的生成概率,并利用最大似然的思想最大化這個概率,利用滑動窗口內(nèi)單詞共現(xiàn)這一線索去求每個單詞的兩種詞向量
和 。自此word2vec已完成使命。我們可以利用詞向量去完成其他任務(wù),例如聚類等。跳字模型(skip-gram)
該模型定義已知中心詞
生成背景詞 的概率:公式1其中
是 的背景詞向量, 是 的中心詞向量,該式是一個softmax。假定滑動窗口大小為m,文本序列長度為T, 。則生成文本序列的似然函數(shù)為公式2等價的log損失函數(shù)為
公式3公式4其中
公式5接下來是自己的一些理解。
先考慮從輸入層到隱藏層的過程。輸入層為
的onehot表示,隱藏層參數(shù)矩陣實(shí)際上是所有中心詞的詞向量,隱藏層輸出的是的詞向量 ,是一個“查字典的過程”。例子:輸入第四個詞的onehot,與隱藏層矩陣相乘,最后輸出第四個詞作為中心詞的詞向量
。該過程表達(dá)的是“已知中心詞為 ”。再考慮從隱藏層到輸出層的過程。隱藏層的輸出是
,輸出層參數(shù)矩陣實(shí)際上是所有背景詞的詞向量,兩者做向量內(nèi)積,第i個輸出單元為 的值,最后以softmax形式歸一化。該過程表達(dá)的是“已知中心詞為,生成背景詞 的概率”。例子:2. 無標(biāo)簽的word2vec內(nèi)部隱含的有監(jiān)督學(xué)習(xí)。既然是NN,那么就存在前向傳遞和反向傳播兩個步驟。前者固定參數(shù)并計算中間結(jié)果,最終輸出預(yù)測值。后者根據(jù)設(shè)定好的損失函數(shù)(目標(biāo)函數(shù)),固定中間結(jié)果并更新參數(shù)。損失函數(shù)本質(zhì)上是關(guān)于標(biāo)簽與預(yù)測值的函數(shù)
,所以標(biāo)簽是什么呢?標(biāo)簽其實(shí)就是 中的 。例子:假設(shè)
為第四個單詞,左邊是softmax輸出的預(yù)測概率,右邊是 的onehot形式的label,由于 真的出現(xiàn)了,所以label為1。從模型的似然函數(shù)來看,實(shí)際上等價于交叉熵 ,其中
是y_label的第v各分量,因?yàn)槭莖nehot形式,化簡即得公式3。3. 為什么一般只使用skip-gram的中心詞向量作為詞的表征向量
感性認(rèn)識見此鏈接。我嘗試在公式層面用反向傳播過程去理解,但沒想明白。以隨機(jī)梯度下降為例,每個樣本產(chǎn)生的損失函數(shù)見公式3
該公式是關(guān)于任一背景詞向量
, 和中心詞向量 的函數(shù)。反向傳播時會更新所有背景詞向量和指定中心詞向量。每個樣本每次反向傳播時,背景詞向量都會更新,那么為什么skip-gram不取背景詞向量作為詞的表征呢?4. 條件概率
中是如何想到用背景詞向量乘中心詞向量 來對條件概率進(jìn)行建模的向量內(nèi)積本質(zhì)上就是cosine距離。從物理意義上來說,skip-gram建模的是中心詞和背景詞的共現(xiàn),若中心詞
和背景詞 在滑動窗口內(nèi)同時出現(xiàn),則兩者隱含語義越接近,向量內(nèi)積就越大。CBOW
該模型與skip-gram最大的不同在于條件概率的定義。不同于skip-gram,CBOW定義的是已知背景詞等情況下生成中心詞的條件概率。由于背景詞有多個,一般求所有背景詞的平均,然后用skip-gram相同的步驟求解。CBOW一般用背景詞向量來表征單詞。
CBOW訓(xùn)練速度要比skip-gram快,原因在于一個滑動窗口內(nèi)只能產(chǎn)生一個sample,而skip-gram可以產(chǎn)生多個。比如滑動窗口含“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,可以更新四次參數(shù)(假設(shè)使用隨機(jī)梯度下降)。而使用CBOW時"the man his son"只有一個樣本,更新一次參數(shù)。此外,CBOW用所有背景詞的均值來表示背景詞信息帶入運(yùn)算,也會損失精度。
參考資料
總結(jié)
以上是生活随笔為你收集整理的cbow word2vec 损失_word2vec个人总结-理论篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openpyxl 绘制饼形图_openp
- 下一篇: undi是什么意思_undefined是