【Experimenting with Power Divergences for Language Modeling】
对于大型的自然语言处理的语料库而言他们是服从Zipf’s Law的,也就是说在自然语言之中有大量的低频的词语存在,而现在的分布式的表示的方法的学习由于缺乏对于低频的文字的处理,所以很直观的,低频文字的表示相比于高频的文字的表示是欠训练的。所以有一些改进的方法比如说Subword的方法希望可以更好的处理这些欠训练的低频词语,但是很不幸的是对于这些Subword也同样的存在Zipf’s Law。而为了解决这样的问题呢,很多科学家都提出了自己的解决方案,比如Grave提出了一种与词频相关的Embedding的方法,而Gong(2018)尝试使用Adversarial的方法使得模型可以更加的有效处理低频的单词。
但本文的作者认为,自然语言模型之中常常是利用MLE进行优化的,而一般来说使用MLE优化的目标函数来自于KL散度。作者尝试对于KL散度进行一定程度的Generalization 使得其可以处理这里的低频词语的问题。
Background
语言模型可以看成是从一个有限的单词集合$V$之中学习到一系列的概率的分布,这样的一个概率分布可以看成是条件概率的乘积的形式。大家如果学过语言模型应该知道自己讲的是什么意思了,我们所希望学习到的是下面的这种形式
$$p_{\theta}(y|x)$$
其中的$x$表示的是之前的单词token,而$y$表示的是之后的单词的预测。模型的总体可以看成是下面的这样的一个目标的函数记作是NLL
$$NLL(\theta) = -\sum_{(x,y) \in D} \log p_{\theta}(y|x)$$
而对于模型的优化的过程可以是看成减小上面的预测的分布和真实的数据分布的KL散度的过程
$$D_{KL}(p_{D}||p_{\theta}) = \sum_{(x,y)\in X\times Y}p_{D}(y|x)\log\frac{p_{D}(y|x)}{p_{\theta}(y|x)}$$
其中的$p_{D}(y|x) = 1$如果序列$(x,y)$出现在数据集之中。而仅当两个分布完全相同的时候,KL散度就会变成了0.
Power Divergences
在数学里面其实有非常多的Divergences的计算的方法,比如有一些计算的方法是使用Generalized Logarithm函数对于KL散度进行泛化,其可以表示成为一个幂函数(Power Function)的形式
$$\log_{\alpha}(x) = \frac{1}{1-\alpha}(x^{1-\alpha} -1)$$
我们接下来的算法都是通过这个函数进行处理的
$\alpha$-Divergences
$\alpha$-divergences的这个概念是在1967年被Csiszar提出的,这个的完全的表达的形式如下所示
$$D_{\alpha}(p||q) = \frac{1}{\alpha(\alpha – 1)}\sum_{i=1}^{n}[p_{i}^{\alpha}q_{i}^{1-\alpha} – \alpha p_{i} +(\alpha – 1)q_{i}] $$
其中的$\alpha$是一个超参数,当其倾向于1的时候计算的是$KL(p||q)$当其趋向于0的时候,其计算的是$KL(q||p)$,而当其大于零的时候,如果$p_i>0$其也会将$q_{i}$往上拉,而如果其小于零的话,会把$q_{i}$往零拉。 需要注意的是$D_{\alpha}(p||q) =D_{1 – \alpha}(q||p) $.而当我们处理Normalized的分布的时候,这个$\alpha$-divergence与另外的一种散度叫做是Renyi Divergence有很强的联系,而这个散度常常用来度量Domain的Similarity的程度。
$\beta$-Divergences
对于$\beta$-Divergences也可以称为是Density Power Divergence,在1998年被Basu作为一个Robust Estimation的方法提出。对于$D_{\beta}(p||q)$的完整的表示的形式如下所示
$$D_{\beta}(p||q) = \frac{1}{\beta(\beta – 1)}\sum_{i=1}^{n}[p_{i}^{\beta} +(\beta-1)q_{i}^{\beta} – \beta p_{i}q_{i}^{\beta-1}] $$
其也有可以看成是使用上面的泛化方式得到的Bregman Divergence ,如果当$\beta = 2$的时候可以看成是一种$L_2$的损失函数,当$\beta$趋向于1的时候就是一个正常的KL散度了。所以在1与2之间的区间之内就是想看你是要获得一个更加Robust的$L_2$的Loss还是想要去获得一个更加高效的KL散度的计算的方法了。而如果选择的$\beta <1$的话,其就可以认为是为低频单词赋予更高的Importance。
$\gamma$-Divergences
Eguchi 和Kato在2010年提出的$\gamma$-Divergence可以看成是一种对于$\beta$-Divergence的Modification的方式,其表示的形式如下
$$\frac{1}{\gamma (\gamma – 1)} \log \sum_{i=1}^{n}p_{i}^{\gamma} +\frac{1}{\gamma} \log \sum_{i=1}^{n}q_{I}^{\gamma} – \frac{1}{\gamma – 1}\log \sum_{i=1}^{n}p_{I}q_{I}^{\gamma – 1}$$
其具有一个性质叫做是Scale-Invariance,也就是说如果上面的式子之中处理的元素如果乘上一个标量之后其值也不会变化。也就是说不需要是Normalized的数据都可以很好的度量。
Experiment
看看实验的结果部分
其实实验的部分似乎并没有太大的提升,在上面的一个方法是通过对于词频分箱进几个不同的Part后利用这几个不同的Part进行处理,而对于上述的部分实验结果可以发现,其实似乎和运用KL散度作为度量的结果并没有太大的区别。在模型受到了足够的训练之后可以发现在$\gamma = 1.1$之中的分箱处理之后的效果是最好的。而下面的效果是通过寻找到最好的参数后得到的结果
Comments
这里的处理的方法还是非常有趣的,机器学习里面的改进方法,主要就是分成两个部分,第一个部分就是在模型的结构上面进行动刀,这也是最直接的方式,还有一种更加需要功底的方法就是在模型的目标函数上面进行动刀,这里尝试性的使用三种不同的KL散度的推广的表达方式以更好的处理在机器学习之中的问题。其结果的提升确实是有,也的确有限,不过这种探索性的工作也的确是非常具有启发性吧。
Comments
Leave a Comment