Word2Vec学习笔记(四)——Negative Sampling 模型
????前面講了Hierarchical softmax 模型,現在來說說Negative Sampling 模型的CBOW和Skip-gram的原理。它相對于Hierarchical softmax 模型來說,不再采用huffman樹,這樣可以大幅提高性能。
一、Negative Sampling
????在負采樣中,對于給定的詞www,如何生成它的負采樣集合NEG(w)NEG(w)NEG(w)呢?已知一個詞www,它的上下文是context(w)context(w)context(w),那么詞www就是一個正例,其他詞就是一個負例。但是負例樣本太多了,我們怎么去選取呢?在語料庫C\mathcal{C}C中,各個詞出現的頻率是不一樣的,我們采樣的時候要求高頻詞選中的概率較大,而低頻詞選中的概率較小。這就是一個帶權采樣的問題。
設詞典D\mathcal{D}D中的每一個詞www對應線段的一個長度:
len(w)=counter(w)∑u∈Dcounter(u)(1)len(w) = \frac{counter(w)}{\sum_{u \in \mathcal{D}}counter(u)} (1) len(w)=∑u∈D?counter(u)counter(w)?(1)
式(1)分母是為了歸一化,Word2Vec中的具體做法是:記l0=0,lk=∑j=1klen(wj),k=1,2,…,Nl_0 = 0, l_k = \sum_{j=1}^{k} len(w_j), k=1,2, \dots, Nl0?=0,lk?=∑j=1k?len(wj?),k=1,2,…,N,其中,wjw_jwj?是詞典D\mathcal{D}D中的第jjj個詞,則以{lj}j=0N\{l_j\}_{j=0}^{N}{lj?}j=0N?為點構成了一個在區間[0,1]非等距離的劃分。然后再加一個等距離劃分,Word2Vec中選取M=108M=10^8M=108,將M個點等距離的分布在區間[0,1]上,這樣就構成了M到I之間的一個映射,如下圖所示:
圖例參考:http://www.cnblogs.com/neopenx/p/4571996.html ,建議大家讀下這篇神作。
????選取負例樣本的時候,取[M0,Mm?1][M_0, M_{m-1}][M0?,Mm?1?]上的一個隨機數,對應到I上就可以了。如果對于詞wiw_iwi?,正好選到它自己,則跳過。負例樣本集合NEG(w)NEG(w)NEG(w)的大小在Word2Vec源碼中默認選5.
二、CBOW
????假定關于詞www的負例樣本NEG(w)NEG(w)NEG(w)已經選出,定義標簽LLL如下,對于 ?w~∈D\forall \widetilde{w} \in \mathcal{D}?w∈D:
Lw(w~)={1,w~=w;0,w~≠w;L^w(\widetilde{w}) = \Bigg\{ \begin{array} {ll} 1, & \widetilde{w} = w ;\\ 0, & \widetilde{w} \ne w; \end{array} Lw(w)={1,0,?w=w;w?=w;?
對于給定的一個正例樣本(context(w),w)(context(w), w)(context(w),w), 要求:
max?g(w)=max?∏u∈{w}∪u∈NEG(w)p(u∣context(w))\max g(w) = \max \prod_{u \in \{w\} \cup u \in NEG(w)} p(u|context(w)) maxg(w)=maxu∈{w}∪u∈NEG(w)∏?p(u∣context(w))
其中,
p(u∣context(w))={σ(xwTθu),Lw(u)=11?σ(xwTθu),Lw(u)=0p(u|context(w)) = \Bigg \{ \begin{array}{ll} \sigma(\boldsymbol{x}_w^T \theta^u), & L^w(u) = 1\\ 1-\sigma(\boldsymbol{x}_w^T \theta^u), & L^w(u) = 0 \end{array} p(u∣context(w))={σ(xwT?θu),1?σ(xwT?θu),?Lw(u)=1Lw(u)=0?
把它寫成一個式子:
p(u∣context(w))=σ(xwTθu)Lw(u)+(1?σ(xwTθu))1?Lw(u)p(u|context(w)) = \sigma(\boldsymbol{x}_w^T \theta^u)^{L^w(u)} + (1-\sigma(\boldsymbol{x}_w^T \theta^u))^{1-L^w(u)} p(u∣context(w))=σ(xwT?θu)Lw(u)+(1?σ(xwT?θu))1?Lw(u)
下邊解釋為什么要最大化g(w)g(w)g(w),
g(w)=∏u∈{w}∪u∈NEG(w)p(u∣context(w))=∏u∈{w}∪u∈NEG(w)σ(xwTθu)Lw(u)+(1?σ(xwTθu))1?Lw(u)=σ(xwTθw)∏u∈NEG(w)(1?σ(xwTθu))g(w) = \prod_{u \in \{w\} \cup u \in NEG(w)} p(u|context(w)) \\ =\prod_{u \in \{w\} \cup u \in NEG(w)} \sigma(\boldsymbol{x}_w^T \theta^u)^{L^w(u)} + (1-\sigma(\boldsymbol{x}_w^T \theta^u))^{1-L^w(u)} \\ =\sigma(\boldsymbol{x}_w^T \theta^w)\prod_{u \in NEG(w)} (1-\sigma(\boldsymbol{x}_w^T \theta^u)) g(w)=u∈{w}∪u∈NEG(w)∏?p(u∣context(w))=u∈{w}∪u∈NEG(w)∏?σ(xwT?θu)Lw(u)+(1?σ(xwT?θu))1?Lw(u)=σ(xwT?θw)u∈NEG(w)∏?(1?σ(xwT?θu))
上式中連乘號前邊的式子可以解釋為最大化正例樣本概率,連乘號后邊解釋為最小化負例樣本概率。
同樣的,針對于語料庫,令:
G=∏w∈Cg(w)\mathcal{G} = \prod_{w \in \mathcal{C}} g(w) G=w∈C∏?g(w)
可以將上式作為整體的優化目標函數,取上式的最大似然:
L=log?G=∑w∈Clog?g(w)=∑w∈C∑u∈{w}∪u∈NEG(w)Lw(u)log?[σ(xwTθu]+[1?Lw(u)]log?[1?σ(xwTθu)]\mathcal{L} = \log\mathcal{G} = \sum_{w \in \mathcal{C}} \log g(w) \\ =\sum_{w \in \mathcal{C}} \sum_{u \in \{w\} \cup u \in NEG(w)}L^w(u)\log[\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u] + [1-L^w(u)] \log [1-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)] L=logG=w∈C∑?logg(w)=w∈C∑?u∈{w}∪u∈NEG(w)∑?Lw(u)log[σ(xwT?θu]+[1?Lw(u)]log[1?σ(xwT?θu)]
和之前的計算過程一樣,記
L(w,u)=Lw(u)log?[σ(xwTθu]+[1?Lw(u)]log?[1?σ(xwTθu)]L(w,u) = L^w(u)\log[\sigma(\boldsymbol{x}_w^T \theta^u] + [1-L^w(u)]\log [1-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)] L(w,u)=Lw(u)log[σ(xwT?θu]+[1?Lw(u)]log[1?σ(xwT?θu)]
然后分別求:?L(w,u)?Xw\frac{\partial L(w,u)}{\partial\boldsymbol{X}_w}?Xw??L(w,u)?和?L(w,u)?θu\frac{\partial L(w,u)}{\partial\boldsymbol{\theta}^u}?θu?L(w,u)?,求解過程略過:
?L(w,u)?Xw=[Lw(u)?σ(xwTθu)]θu?L(w,u)?θu=[Lw(u)?σ(xwTθu)]Xw\frac{\partial L(w,u)}{\partial\boldsymbol{X}_w} = [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{\theta}^u \\ \frac{\partial L(w,u)}{\partial\boldsymbol{\theta}^u} = [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{X}_w ?Xw??L(w,u)?=[Lw(u)?σ(xwT?θu)]θu?θu?L(w,u)?=[Lw(u)?σ(xwT?θu)]Xw?
則,可得到如下更新公式:
θu:=θu+η[Lw(u)?σ(xwTθu)]Xwv(w~):=v(w~)+∑u∈{w}∪u∈NEG(w)[Lw(u)?σ(xwTθu)]θu\boldsymbol{\theta}^u:=\boldsymbol{\theta}^u+\eta [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{X}_w \\ v(\boldsymbol{\widetilde{w}}):=v(\boldsymbol{\widetilde{w}}) + \sum_{u \in \{w\} \cup u \in NEG(w)} [L^w(u)-\sigma(\boldsymbol{x}_w^T \boldsymbol{\theta}^u)]\boldsymbol{\theta}^u θu:=θu+η[Lw(u)?σ(xwT?θu)]Xw?v(w):=v(w)+u∈{w}∪u∈NEG(w)∑?[Lw(u)?σ(xwT?θu)]θu
其中, w~∈context(w)\boldsymbol{\widetilde{w}} \in context(w)w∈context(w).
總結
以上是生活随笔為你收集整理的Word2Vec学习笔记(四)——Negative Sampling 模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日常生活 -- 数据结构与算法告一段落
- 下一篇: UNIX再学习 -- 再识