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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型

發布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系列文章:

  • 【word2vec】篇一:理解詞向量、CBOW與Skip-Gram等知識
  • 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
  • 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
  • Negative Sampling是這么一種求解word2vec模型的方法,它摒棄了霍夫曼樹,采用了Negative Sampling(負采樣)的方法來求解。

    負采樣算法

    在CBOW模型中,已知詞www的上下文context(w)context(w)context(w)需要預測www。因此,對于給定的context(w)context(w)context(w),詞www就是一個正樣本,其它詞就是負樣本了。在Skip-gram中同樣也存在正負樣本問題。負樣本那么多,該如何選取呢?這就是Negative Sampling(負采樣)問題。也就是對于給定的詞,如何生成其負樣本子集NEG(w)NEG(w)NEG(w)

    采用的基本要求是:詞典DDD中的詞在語料CCC中出現的次數有高有低,對于那些高頻詞,被選為負樣本的概率就應該比較大,反之,對于那些低頻詞,其被選中的概率就應該比較小。本質上就是一個帶權采樣問題。

    word2vec采用的負采樣方法如下:

    (2)首先將一段長度為1的線段分成長度不相等VVV份(VVV是詞匯表的大小),每份對應詞匯表的一個詞。高頻詞對應長線段,低頻詞對應短線段。每個詞的線段長度由下式決定:
    len(w)=count(w)∑u∈Dcount(u)len(w) = \frac{count(w)}{\sum\limits_{u \in D} count(u)} len(w)=uD?count(u)count(w)?
    在word2vec中,分子和分母都取了3/4次冪如下:
    len(w)=count(w)3/4∑u∈Dcount(u)3/4len(w) = \frac{count(w)^{3/4}}{\sum\limits_{u \in D} count(u)^{3/4}} len(w)=uD?count(u)3/4count(w)3/4?
    (2)在引入一個長度為1的線段進行等距劃分MMM份,其中M>>NM>>NM>>N,如下圖所示:

    如圖所示,M份中的每一份都會落在某一個詞對應的線段上。

    (3)采樣時,先從M個位置中采出neg個位置,再匹配到這neg個位置對應的詞就是負詞。如假設我們先采出m3m_3m3?,對應I2I_2I2?I2I_2I2?對應的詞就是負詞。

    注:在word2vec中,M取值默認為10810^8108

    CBOW模型

    假設已經采樣一個關于www的非空負樣本子集NEG(w)NEG(w)NEG(w) ,且對于 w~∈D\tilde w \in Dw~D,定義:
    Lw(w~)={1,w~=w0,w~≠wL^w(\tilde w ) = \begin{cases} 1, \quad \tilde w = w \\ 0, \quad \tilde w \ne w \end{cases} Lw(w~)={1,w~=w0,w~?=w?
    表示詞w~\tilde ww~的標簽。即正樣本的標簽為1,負樣本的標簽為0。

    對于一個給定的正樣本(context(w),w)(context(w),w)(context(w),w),希望最大化:
    g(w)=∏u∈w∪NEG(w)P(u∣context(w))g(w) = \prod_{u \in {w} \cup NEG(w) }P(u|context(w)) g(w)=uwNEG(w)?P(ucontext(w))
    其中:
    P(u∣context(w))={σ(xwTθu)Lw(u)=11?σ(xwTθu)Lw(u)=0P(u|context(w)) = \begin{cases} \sigma(\mathbf x_w^T\theta^u) \qquad L^w( u )=1 \\ 1-\sigma(\mathbf x_w^T\theta^u) \quad L^w( u )=0 \end{cases} P(ucontext(w))={σ(xwT?θu)Lw(u)=11?σ(xwT?θu)Lw(u)=0?
    寫成整體表達式:
    P(u∣context(w))=[σ(xwTθu)]Lw(u)?[1?σ(xwTθu)]1?Lw(u)P(u|context(w)) = [\sigma(\mathbf x_w^T\theta^u)]^{L^w( u )} \cdot [1-\sigma(\mathbf x_w^T\theta^u)]^{1- L^w( u )} P(ucontext(w))=[σ(xwT?θu)]Lw(u)?[1?σ(xwT?θu)]1?Lw(u)
    這里的xw\mathbf x_wxw?是各詞向量之和。θu\theta^uθu表示詞對應的一個向量,是個待訓練參數。

    所以,最終g(w)g(w)g(w)的表達式如下:
    g(w)=σ(xwTθw)∏u∈NEG(w)[1?σ(xwTθu)]g(w) = \sigma(\mathbf x_w^T\theta^w) \prod_{u \in NEG(w) } [1-\sigma(\mathbf x_w^T\theta^u) ] g(w)=σ(xwT?θw)uNEG(w)?[1?σ(xwT?θu)]
    其中σ(xwTθw)\sigma(\mathbf x_w^T\theta^w)σ(xwT?θw) 表示當上下文為contecxt(w)contecxt(w)contecxt(w) 時,預測中心詞為w的概率;而σ(xwTθu)u∈NEG(w)\sigma(\mathbf x_w^T\theta^u) u∈NEG(w)σ(xwT?θu)uNEG(w),預測中心詞為u的概率。從形式上看,最大化g(w)g(w)g(w), 相當于:增大正樣本的概率同時降低負樣本的概率。所以,給定預料庫CCC,函數:
    G=∏w∈Cg(w)G= \prod_{w \in C} g(w) G=wC?g(w)
    可以作為整體的優化目標。為了計算方便可以對G 取對數。所以:
    L=log?G=log?∏w∈Cg(w)=∑w∈Clog?g(w)=∑w∈Clog?∏u∈w∪NEG(w){[σ(xwTθu)]Lw(u)?[1?σ(xwTθu)]1?Lw(u)}=∑w∈C∑u∈w∪NEG(w){Lw(u)log?[σ(xwTθu)]+(1?Lw(u))log?[1?σ(xwTθu)]}=∑w∈C∑u∈w∪NEG(w)L(w,u)\begin{aligned} \mathcal L &= \log G = \log \prod_{w \in C} g(w) = \sum_{w \in C} \log g(w) \\ &=\sum_{w \in C} \log \prod_{u \in {w} \cup NEG(w) } \left\{ [\sigma(\mathbf x_w^T\theta^u)]^{L^w( u )} \cdot [1-\sigma(\mathbf x_w^T\theta^u)]^{1- L^w( u )} \right\} \\ & = \sum_{w \in C} \sum_{u \in {w} \cup NEG(w) } \left\{ {L^w( u )} \log [\sigma(\mathbf x_w^T\theta^u)]+ (1- L^w( u ))\log [1-\sigma(\mathbf x_w^T\theta^u)] \right\} \\ &= \sum_{w \in C} \sum_{u \in {w} \cup NEG(w) } \mathcal L(w,u) \end{aligned} L?=logG=logwC?g(w)=wC?logg(w)=wC?loguwNEG(w)?{[σ(xwT?θu)]Lw(u)?[1?σ(xwT?θu)]1?Lw(u)}=wC?uwNEG(w)?{Lw(u)log[σ(xwT?θu)]+(1?Lw(u))log[1?σ(xwT?θu)]}=wC?uwNEG(w)?L(w,u)?
    接下來利用隨機梯度上升對參數進行優化。

    (1)更新θu\theta^uθu

    因為:
    ?L(w,u)?θu=?{Lw(u)log?[σ(xwTθu)]+[1?Lw(u)]log?[1?σ(xwTθu)]}?θu=Lw(u)[1?σ(xwTθu)]xw?[1?Lw(u)]σ(xwTθu)xw=[Lw(u)?σ(xwTθu)]xw\begin{aligned}\frac{\partial \mathcal L(w,u)}{\partial \theta^u} &= \frac{\partial \{ L^w( u ) \log [\sigma(\mathbf x_w^T\theta^u)]+ [1- L^w( u )]\log [1-\sigma(\mathbf x_w^T\theta^u)]\} }{\partial \theta^u} \\&= L^w( u ) [1-\sigma(\mathbf x_w^T\theta^u)]\mathbf x_w - [1- L^w( u )] \sigma(\mathbf x_w^T\theta^u) \mathbf x_w \\ &=[L^w( u )-\sigma(\mathbf x_w^T\theta^u)] \mathbf x_w \end{aligned} ?θu?L(w,u)??=?θu?{Lw(u)log[σ(xwT?θu)]+[1?Lw(u)]log[1?σ(xwT?θu)]}?=Lw(u)[1?σ(xwT?θu)]xw??[1?Lw(u)]σ(xwT?θu)xw?=[Lw(u)?σ(xwT?θu)]xw??
    所以 θu\theta^uθu 更新公式為:
    θu:=θu+η[Lw(u)?σ(xwTθu)]xw\theta^u:=\theta^u + \eta [L^w( u )-\sigma(\mathbf x_w^T\theta^u)] \mathbf x_w θu:=θu+η[Lw(u)?σ(xwT?θu)]xw?
    其中η\etaη為學習率。

    (2)更新xw\mathbf x_wxw?

    因為L(w,u)\mathcal L(w,u)L(w,u) 關于變量xw\mathbf x_wxw?θw\theta^wθw 是對稱的。所以:
    ?L(w,u)?xw=[Lw(u)?σ(xwTθu)]θu\begin{aligned} \frac{\partial \mathcal L(w,u)}{\partial \mathbf x_w} = [L^w( u )-\sigma(\mathbf x_w^T\theta^u)] \theta^u \end{aligned} ?xw??L(w,u)?=[Lw(u)?σ(xwT?θu)]θu?
    所以:
    v(w~):=v(w~)+η∑u∈w∪NEG(w)?L(w,u)?x(w),w~∈context(w)\mathbf v( \tilde w) := \mathbf v( \tilde w) + \eta \sum_{u \in {w} \cup NEG(w) } \frac{\partial \mathcal L(w,u)}{\partial \mathbf x(w)},\quad \tilde w \in context(w) v(w~):=v(w~)+ηuwNEG(w)??x(w)?L(w,u)?,w~context(w)
    以下是偽代碼:

    Skip-gram模型

    Skip-gram模型與CBOW模型的負采樣模型推到過程相似。

    對Skip-gram模型而言,正常來說,應該是要使用詞 w 來預測上下文中的詞匯context(w)context(w)context(w),但是在 word2vec 的源碼中,本質上還是用了CBOW的思想,將上下文context(w)context(w)context(w)拆成一個個詞來考慮,也就是說期望最大化的式子為:
    g(w)=∏w~∈Contex(w)∏u∈{w}∪NEGw~(w)P(u∣w~)g(w) = \prod_{\tilde w \in Contex(w)}\;\prod_{u \in \{w\} \cup NEG^{\;\tilde w}(w) }P(u| \tilde w) g(w)=w~Contex(w)?u{w}NEGw~(w)?P(uw~)
    其中,NEGw~(w)NEG^{\;\tilde w}(w)NEGw~(w)表示對上下文中詞w~\tilde ww~的采樣?;谏厦娴哪繕?#xff0c;用上文類似的推導過程,可以得到下面的算法。

    下面簡單的給出隨機梯度上升更新參數的偽代碼:


    參考文章:
    word2vec 中的數學原理詳解
    基于Negative Sampling的word2vec模型

    總結

    以上是生活随笔為你收集整理的【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型的全部內容,希望文章能夠幫你解決所遇到的問題。

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