噪声对比估计的神经语言模型
GAN、skip-gram都提到或用到了NCE(Noise Contrastive Estimation),在NLP领域首次应用NCE就是这篇文章了
A fast and simple algorithm for training neural probabilistic language models
简介
以极大似然估计为目标的神经语言模型,往往受到训练时间长的困扰,Bengio为了提高速度提出对负样本进行重要度负采样又非常不稳定,这篇文章借鉴了首先应用于图像领域的NCE方法,在不损失效果的同时,极大地节省了训练时间,且结果相当稳定。
用极大似然估计需要计算目标概率对非目标概率的比值,后者需要遍历所有数据,不需要反复迭代的统计模型尚可,而对如神经网络这样需要反复迭代去拟合目标函数的模型,开销是巨大的,而NCE告诉人们,不需要遍历,直接从某个分布生成一些负例就好。
模型
语言模型
语言模型的任务就是给定上文(w1,...,wt-1),预测当前词(wt)的概率是多少,最原始的模型就是ngram,可以直接统计得到,在神经网络中,条件概率可以表示为当前词的得分,与其他词得分总和的比值,归一化的形式如下:
缺图
h表示上文,w为当前词
极大似然学习过程
直接对语言模型参数求导
缺图
右侧需要遍历所有词,开销巨大
重要度采样
修改上式右侧,以对某个分布的采样的结果为负例,得到
缺图
需要注意的是,v(xj)=exp(s(xj,h))/Q(xj),数据从分布Q采样,v相当于一个权重,计为采样在上文的得分与分布概率之比,既然是概率之比,取值区间就是0到无穷,因此这个模型极不稳定,文章的作者基本上没有取得收敛结果
噪声对比估计
其实文章提出的模型只在上面的基础上做了一点小小的改动,把概率的比改成目标概率比上总和,这样重要度的取值就在0到1之间
缺图
或
缺图
与极大似然相比,由于参数减少了,训练速度提升10倍以上
其他细节
负样本越多,效果越好,下面是困惑度的结果,ML表示极大似然(Maximum Mikelihood)
缺图
负采样的分布影响效果,下面是unigram采样和均匀分布采样的对比结果
缺图
用语言模型来做完形填空效果也不错,甚至超过了之前的最佳结果
缺图
用语言模型得到句子的打分,取打分最高的,这样可以同时考虑到空白处左右两侧的概率
讨论
虽然是对性能的一点小小改进,但影响巨大,改动是简单的,知道怎么改是困难的,到底好不好,用了才知道。思想已经很普遍,当只有正样本时,我们往往随机抽取样本作为负例,但将之总结成模型甚至理论,则是另一重境界。