softmax与交叉熵(Cross Entropy)的区别与联系

最初的疑惑

看到一篇关于训练词向量的论文当中提到了用CBOW训练词向量时,目标是使用上下文推断缺失词的后验概率最大,目标函数是后验概率,而后验概率的表示为softmax,也就是下面的公式

P ( w O ∣ w I ) = e x p ( v O T v I ) ∑ j ′ = 1 n e x p ( v j ′ T v I ) P(w_O|w_I)=\frac{exp(v_O^Tv_I)}{\sum_{j'=1}^n exp(v_{j'}^Tv_I)} P(wOwI)=j=1nexp(vjTvI)exp(vOTvI)
w I w_I wI是需要预测的词的上下文, w O w_O wO是需要预测的目标词,这个概率公式的含义是:通过上下文去预测目标词的正确概率。不过这个公式隐含了模型,或者说假设 h h h这个参数。因为有了假设 h h h和输入参数 w I w_I wI才能得到输出的值 w O w_O wO。所以补全这个公式可以得到
P ( w O ∣ w I , h ) P(w_O|w_I, h) P(wOwI,h)
又因为 w I w_I wI是输入,所以也就是 X X X w O w_O wO是输出,或者说是目标值,也就是 Y Y Y,所以上面的公式又可以写成
P ( Y ∣ X , h ) P(Y|X, h) P(YX,h)
很容易看出,因为假设 h h h是在前提条件中的,所以其实这个公式表示的是似然概率(Likelihood),而不是后验概率

上面的描述引出了一下2个问题:

  • 为什么只要最大化softmax就可以得出最优解,不需要交叉熵去求损失函数?
  • 为什么是要最大化后验概率而不是最大化似然?

在这里先给出这两个问题的答案,然后再依次解答

答案1:因为对softmax求 log ⁡ \log log再加上负号变为求最小值之后,与用交叉熵表示的损失函数是一样的。
答案2:因为在先验概率都相同的情况下,最大化似然等同于最大化后验概率。

为什么最大化交叉熵和最大化softmax公式是一样的?

softmax的形式如下:

最后的结果类别 a a a的概率是:
P ( y a ∣ h , x a ) = exp ⁡ ( v a ) ∑ i = 1 n exp ⁡ ( v i ) P(y_a|h, x_a)=\frac{\exp(v_a)}{\sum_{i=1}^n \exp(v_i)} P(yah,xa)=i=1nexp(vi)exp(va)
最大化这个概率可以通过求 log ⁡ \log log然后再最大化,也就是:
log ⁡ P ( y a ∣ h , x a ) = v a + log ⁡ ( ∑ i = 1 n exp ⁡ ( v i ) ) \log P(y_a|h, x_a) =v_a + \log(\sum_{i=1}^{n}\exp(v_i)) logP(yah,xa)=va+log(i=1nexp(vi))
也可以说是最小化
− log ⁡ P ( y a ∣ h , x a ) = − v a − log ⁡ ( ∑ i = 1 n exp ⁡ ( v i ) ) -\log P(y_a|h, x_a) =-v_a - \log(\sum_{i=1}^{n}\exp(v_i)) logP(yah,xa)=valog(i=1nexp(vi))

交叉熵的形式如下:

l o s s = − ∑ i = 1 n y i ∗ log ⁡ ( P ( y a ∣ h , x a ) ) loss=-\sum_{i=1}^n y_i*\log(P(y_a|h, x_a)) loss=i=1nyilog(P(yah,xa))
因为最后的分类 Y Y Y是one-hot编码的,所以其实只有 y a = 1 y_a=1 ya=1其余的都为0,所以
l o s s = − log ⁡ P ( y a ∣ h , x a ) = − v a − log ⁡ ( ∑ i = 1 n exp ⁡ ( v i ) ) loss=-\log P(y_a|h, x_a)=-v_a - \log(\sum_{i=1}^{n}\exp(v_i)) loss=logP(yah,xa)=valog(i=1nexp(vi))

在训练词向量这个问题中,最大似然和最大后验是什么关系?

在所有假设( h h h)的先验概率都是相等的情况下,最大后验等于最大似然。我们首先写出对当前问题的后验的公式

P ( h ∣ w I , w O ) ∝ P ( w O ∣ w I , h ) ∗ P ( h ) P(h|w_I, w_O) \propto P(w_O|w_I, h) * P(h) P(hwI,wO)P(wOwI,h)P(h)
P ( h ∣ w I , w O ) P(h|w_I, w_O) P(hwI,wO)是后验概率, P ( w O ∣ w I , h ) P(w_O|w_I, h) P(wOwI,h)是似然概率, P ( H ) P(H) P(H)是先验概率

如果我们假设先验概率 P ( h ) P(h) P(h)都相等,我们可以得到

P ( h ∣ w I , w O ) ∝ P ( w O ∣ w I , h ) P(h| w_I, w_O) \propto P(w_O| w_I, h) P(hwI,wO)P(wOwI,h)

所以让似然概率最大其实就是让后验概率最大,所以在词向量的训练中最大后验和最大似然是相同的。

你可能感兴趣的:(softmax与交叉熵(Cross Entropy)的区别与联系)