关于sampling softmax 中重要性采样的论文阅读笔记

首先列出参考资料:

  1. word2vec Parameter Learning Explained
  2. Quick Training of Probabilistic Neural Nets by Importance Sampling
  3. On Using Very Large Target Vocabulary for Neural Machine Translation
  4. Adaptive importance sampling to accelerate training of a neural probabilistic language model. IEEE Transactions on Neural Networks
  5. Sebastian Ruder’s blog(博客很不错)

主要是对重要性采样softmax的学习过程做一些笔记。
在词向量训练、神经网络语言模型、神经网络机器翻译等任务中,softmax函数有如下形式:

p(w|c)=exp(hvw)wiVexp(hvwi)=exp(hvw)Z(h)

其中,h是导数层的输出, vwi 是w对应的输出词向量(即softmax的权重矩阵,具体可参考 (1)),V是词典,c是上下文。 在神经网络语言模型中,一般会把c压缩为h
sampling softmax解决了softmax分母部分计算量大的问题。

如果损失函数采用交叉熵损失函数:

H(q,p)=xq(x)logp(x)

这里q是真是期望分布,例如 q=[0,1,,0] ,p是模型输出分布,对应上面的softmax公式。
对于一个样本,可得交叉熵损失函数(这里把模型的参数统称为 θ )
Jθ=logexp(hvw)wiVexp(hvwi)

根据简单的
logxy=logxlogy

得到:
Jθ=hvw+logwiVexp(hvwi)

令:
E(w)=hvw

得到:
Jθ=E(w)+logwiVexp(E(wi))

θ 求梯度得:

θJθ=θE(w)+θlogwiVexp(E(wi))

根据:
xlogx=1x

得:
θJθ=θE(w)+1wiVexp(E(wi))θwiVexp(E(wi)

θJθ=θE(w)+1wiVexp(E(wi))wiVθexp(E(wi))

根据 xexp(x)=exp(x) ,继续利用求导链式法则:
θJθ=θE(w)+1wiVexp(E(wi))wiVexp(E(wi))θ(E(wi))

θJθ=θE(w)+wiVexp(E(wi))wiVexp(E(wi))θ(E(wi))

可以看到 exp(E(wi))wiVexp(E(wi)) 就是softmax的输出,即 wi 的概率 P(wi)
于是得到如下:
θJθ=θE(w)+wiVP(wi)θ(E(wi))

最终得到:
θJθ=θE(w)wiVP(wi)θE(wi)

对于梯度公式的第二部分,可以认为是 θE(wi) 对于softmax输出 P(wi) 的期望,即:
wiVP(wi)θE(wi)=EwiP[θE(wi)]

这就是采样要优化的部分。
根据传统的重要性采样方法,按照如下公式计算期望:
EwiP[θE(wi)]1NwiQ(w)P(wi)Q(wi)θE(wi)

其中N是从分布Q(我们自己定义的一个容易采样的分布)中采样的样本数,但是这种方法仍然需要计算 P(wi) ,而 P(wi) 的计算又需要softmax做归一化,这是我们不想看到的,所以要使用一种有偏估计的方法。


现在,让我们来观察Softmax公式( exp(E(wi))wiVexp(E(wi)) )的分母部分:

Z(h)=wiVexp(E(wi))=MwiV(1M)exp(E(wi))

这样,我们可以把 wiV(1M)exp(E(wi)) 看出是一种期望的形式,进而可以采用采样的方法得到 Z(h) 。现在我们还是取候选分布为Q。
则:
Z(h)=Z^(h)=MNwiQ(w)R^(wi)exp(E(wi))Q(wi)=MNwiQ(w)exp(E(wi))MQ(wi)

上式中的 R^(wi) 代表概率 1M ,约去M可得:
Z^(h)=1NwiQ(w)exp(E(wi))Q(wi)

到这里,我们就可以用 Z^(h) 去近似 Z(h) 了。
现在理一下思路:
给定候选分布Q,传统采样方法需要计算P,也就是说需要计算分母Z,这是我们不想看到的。幸运的是分母Z仍然可以通过采样得到,采样Z的时候,仍然采用候选分布Q。

现在继续计算 θJθ 中系数为负的部分,即期望部分。

EwiP[θE(wi)]1NwiQ(w)P(wi)Q(wi)θE(wi)=1NwiQ(w)P^(wi)Q(wi)θE(wi)

其中 P^(wi) 代表采样方式获得的概率:
P^(wi)=exp(E(wi))Z^(h)

可得:
EwiP[θE(wi)]1NwiQ(w)exp(E(wi))Q(wi)Z^(h)θE(wi)

现在我们就从Q分布中采样N个样本,组成集合J,最终得到:
EwiP[θE(wi)]wjJexp(E(wj))θE(wj)/Q(wj)wjJexp(E(wj))/Q(wj)

整体梯度为:

θJθ=θE(w)wjJexp(E(wj))θE(wj)/Q(wj)wjJexp(E(wj))/Q(wj)

下面给出算法步骤(来自 Quick Training of Probabilistic Neural Nets by Importance Sampling):
关于sampling softmax 中重要性采样的论文阅读笔记_第1张图片

OK,如果你正在使用tensorflow的Seq2Seq模型,并且正在阅读On Using Very Large Target Vocabulary for Neural Machine Translation,对于论文中的公式(10)和公式(11),本篇笔记可以给出大致思路的解释,有不完善或错误的地方,欢迎批评指正!

你可能感兴趣的:(机器学习,心得,理论)