深度学习-自然语言处理中的近似训练
自然語(yǔ)言處理中的近似訓(xùn)練
跳字模型的核心在于使用softmax運(yùn)算得到給定中心詞wcw_cwc?來(lái)生成背景詞wow_owo?的條件概率
P(wo∣wc)=exp(uo?vc)∑i∈Vexp(ui?vc).P(w_o \mid w_c) = \frac{\text{exp}(\boldsymbol{u}_o^\top \boldsymbol{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)}.P(wo?∣wc?)=∑i∈V?exp(ui??vc?)exp(uo??vc?)?.
該條件概率相應(yīng)的對(duì)數(shù)損失
?log?P(wo∣wc)=?uo?vc+log?(∑i∈Vexp(ui?vc)).-\log P(w_o \mid w_c) = -\boldsymbol{u}_o^\top \boldsymbol{v}_c + \log\left(\sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)\right).?logP(wo?∣wc?)=?uo??vc?+log(i∈V∑?exp(ui??vc?)).
由于softmax運(yùn)算考慮了背景詞可能是詞典V\mathcal{V}V中的任一詞,以上損失包含了詞典大小數(shù)目的項(xiàng)的累加。不論是跳字模型還是連續(xù)詞袋模型,由于條件概率使用了softmax運(yùn)算,每一步的梯度計(jì)算都包含詞典大小數(shù)目的項(xiàng)的累加。
對(duì)于含幾十萬(wàn)或上百萬(wàn)詞的較大詞典,每次的梯度計(jì)算開(kāi)銷(xiāo)可能過(guò)大。為了降低該計(jì)算復(fù)雜度,我們可以使用兩種近似訓(xùn)練方法,即負(fù)采樣(negative sampling)或?qū)有騭oftmax(hierarchical softmax)。由于跳字模型和連續(xù)詞袋模型類(lèi)似,本節(jié)僅以跳字模型為例介紹這兩種方法。
負(fù)采樣(negative sampling)
負(fù)采樣修改了原來(lái)的目標(biāo)函數(shù)。給定中心詞wcw_cwc?的一個(gè)背景窗口,我們把背景詞wow_owo?出現(xiàn)在該背景窗口看作一個(gè)事件,并將該事件的概率計(jì)算為
P(D=1∣wc,wo)=σ(uo?vc)P(D=1\mid w_c, w_o) = \sigma(\boldsymbol{u}_o^\top \boldsymbol{v}_c)P(D=1∣wc?,wo?)=σ(uo??vc?)
其中的σ\sigmaσ函數(shù)與sigmoid激活函數(shù)的定義相同:
σ(x)=11+exp?(?x).\sigma(x) = \frac{1}{1+\exp(-x)}.σ(x)=1+exp(?x)1?.
我們先考慮最大化文本序列中所有該事件的聯(lián)合概率來(lái)訓(xùn)練詞向量。具體來(lái)說(shuō),給定一個(gè)長(zhǎng)度為TTT的文本序列,設(shè)時(shí)間步ttt的詞為w(t)w^{(t)}w(t)且背景窗口大小為mmm,考慮最大化聯(lián)合概率
∏t=1T∏?m≤j≤m,j≠0P(D=1∣w(t),w(t+j)).\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(D=1\mid w^{(t)}, w^{(t+j)}).t=1∏T??m≤j≤m,?j?=0∏?P(D=1∣w(t),w(t+j)).
然而,以上模型中包含的事件僅考慮了正類(lèi)樣本。這導(dǎo)致當(dāng)所有詞向量相等且值為無(wú)窮大時(shí),以上的聯(lián)合概率才被最大化為1。很明顯,這樣的詞向量毫無(wú)意義。
負(fù)采樣通過(guò)采樣并添加負(fù)類(lèi)樣本使目標(biāo)函數(shù)更有意義。設(shè)背景詞wow_owo?出現(xiàn)在中心詞wcw_cwc?的一個(gè)背景窗口為事件PPP,我們根據(jù)分布P(w)P(w)P(w)采樣KKK個(gè)未出現(xiàn)在該背景窗口中的詞,即噪聲詞。設(shè)噪聲詞wkw_kwk?(k=1,…,Kk=1, \ldots, Kk=1,…,K)不出現(xiàn)在中心詞wcw_cwc?的該背景窗口為事件NkN_kNk?。假設(shè)同時(shí)含有正類(lèi)樣本和負(fù)類(lèi)樣本的事件P,N1,…,NKP, N_1, \ldots, N_KP,N1?,…,NK?相互獨(dú)立,負(fù)采樣將以上需要最大化的僅考慮正類(lèi)樣本的聯(lián)合概率改寫(xiě)為
∏t=1T∏?m≤j≤m,j≠0P(w(t+j)∣w(t)),\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}),t=1∏T??m≤j≤m,?j?=0∏?P(w(t+j)∣w(t)),
其中條件概率被近似表示為 P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1,wk~P(w)KP(D=0∣w(t),wk).P(w^{(t+j)} \mid w^{(t)}) =P(D=1\mid w^{(t)}, w^{(t+j)})\prod_{k=1,\ w_k \sim P(w)}^K P(D=0\mid w^{(t)}, w_k).P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))k=1,?wk?~P(w)∏K?P(D=0∣w(t),wk?).
設(shè)文本序列中時(shí)間步ttt的詞w(t)w^{(t)}w(t)在詞典中的索引為iti_tit?,噪聲詞wkw_kwk?在詞典中的索引為hkh_khk?。有關(guān)以上條件概率的對(duì)數(shù)損失為
?log?P(w(t+j)∣w(t))=?log?P(D=1∣w(t),w(t+j))?∑k=1,wk~P(w)Klog?P(D=0∣w(t),wk)=?log?σ(uit+j?vit)?∑k=1,wk~P(w)Klog?(1?σ(uhk?vit))=?log?σ(uit+j?vit)?∑k=1,wk~P(w)Klog?σ(?uhk?vit).\begin{aligned} -\log P(w^{(t+j)} \mid w^{(t)}) =& -\log P(D=1\mid w^{(t)}, w^{(t+j)}) - \sum_{k=1,\ w_k \sim P(w)}^K \log P(D=0\mid w^{(t)}, w_k)\ \\ =&- \log \sigma\left(\boldsymbol{u}_{i_{t+j}}^\top \boldsymbol{v}_{i_t}\right) - \sum{k=1,\ w_k \sim P(w)}^K \log\left(1-\sigma\left(\boldsymbol{u}_{h_k}^\top \boldsymbol{v}_{i_t}\right)\right)\\\ =&- \log \sigma\left(\boldsymbol{u}_{i_{t+j}}^\top \boldsymbol{v}_{i_t}\right) - \sum{k=1,\ w_k \sim P(w)}^K \log\sigma\left(-\boldsymbol{u}_{h_k}^\top \boldsymbol{v}_{i_t}\right). \end{aligned} ?logP(w(t+j)∣w(t))==?=??logP(D=1∣w(t),w(t+j))?k=1,?wk?~P(w)∑K?logP(D=0∣w(t),wk?)??logσ(uit+j???vit??)?∑k=1,?wk?~P(w)Klog(1?σ(uhk???vit??))?logσ(uit+j???vit??)?∑k=1,?wk?~P(w)Klogσ(?uhk???vit??).?
現(xiàn)在,訓(xùn)練中每一步的梯度計(jì)算開(kāi)銷(xiāo)不再與詞典大小相關(guān),而與KKK線性相關(guān)。當(dāng)KKK取較小的常數(shù)時(shí),負(fù)采樣在每一步的梯度計(jì)算開(kāi)銷(xiāo)較小。
總結(jié)
以上是生活随笔為你收集整理的深度学习-自然语言处理中的近似训练的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 注意力机制--转载自我的学生隆兴写的博客
- 下一篇: windows10 计算文件的HASH(