假设有离散型随机变量X的两个概率分布$p(x)$和$q(x)$,其中$p(x)$是数据的真实分布,$q(x)$是预测的数据分布。使用交叉熵或相对熵来度量$q(x)$逼近$p(x)$的效果,逼近程度越高,则两者的交叉熵或者相对熵就越小,因此可作为损失函数。

交叉熵

$$H(p,q)=\sum_ip(x_i)log\frac1{q(x_i)}=-\sum_ip(x_i)log(q(x_i))$$

二分类

对于二分类问题,真实标签一般用0和1来表示,假设真实的标签为$y_1,y_2,…,y_k$,预测得到的列向量为$yp_1,yp_2,…yp_k$

其中$y_i\in{0,1},i=1,2,…,k$

则交叉熵损失为
$$H(y,yp)=-(y_1log(yp_1)+y_2log(yp_2)+…+y_klog(yp_k))$$

举个例子,假设共4个样本,其真实标签分别是
$$
\begin{bmatrix}
1 &0&1&0
\end{bmatrix}
$$
(经sigmoid激活函数)预测输出得到
$$
\begin{bmatrix}
0.3&0.2&0.4&0.8\\
0.8&0.6&0.7&0.1
\end{bmatrix}
$$
则预测标签为
$$
\begin{bmatrix}
1 &1&1&0
\end{bmatrix}
$$
则交叉熵为
$$H(p,q)=-(1log(1)+0log(1)+1log(1)+0log(0))$$
上式中,认为$0*log(0)=0$

上面这个例子计算起来有点不符合数学逻辑,并且在实际运算时,通常是对预测的概率进行计算,所以这里改换采用softmax进行激活,预测输出得到
$$
\begin{bmatrix}
0.2&0.2&0.4&0.9\\
0.8&0.8&0.6&0.1
\end{bmatrix}
$$

其中每一列代表一个样本的预测输出,则预测概率为
$$
\begin{bmatrix}
0.8 &0.8&0.6&0.1
\end{bmatrix}
$$

交叉熵为
$$-(1log(0.8)+0log(0.8)+1log(0.6)+0log(0.1))$$

事实上,可以把二分类问题看作多分类问题的一个特例,将二分类中的类别标签也做独热编码,由于4个样本的真实标签分别是
$$
\begin{bmatrix}
1 &0&1&0
\end{bmatrix}
$$
所以4个样本经独热编码后的真实标签分别是
$$
\begin{bmatrix}
0&1&0&1\\
1&0&1&0
\end{bmatrix}
$$
采用softmax进行激活,预测输出得到
$$
\begin{bmatrix}
0.2&0.2&0.4&0.9\\
0.8&0.8&0.6&0.1
\end{bmatrix}
$$
则第一个样本的交叉熵损失为
$$-(0*log(0.2)+1*log(0.8))$$

则第二个样本的交叉熵损失为
$$-(1*log(0.2)+0*log(0.8))$$

则第三个样本的交叉熵损失为
$$-(0*log(0.4)+1*log(0.6))$$

则第四个样本的交叉熵损失为
$$-(1*log(0.9)+0*log(0.1))$$

多分类

对于多分类问题而言,一般都会将真实标签进行one-hot编码

假设共3个类别,4个样本,对这些样本的类别进行独热编码得到
$$
\begin{bmatrix}
1 & 0 & 0 &1 \\
0 & 1 & 0 &0\\
0 & 0 & 1 &0
\end{bmatrix}
$$
其中每一列代表一个样本的标签

假设经过softmax激活函数得到的概率为
$$
\begin{bmatrix}
0.1 &0.2 &0.3&0.1\\
0.2&0.6&0.6&0.8\\
0.7&0.2&0.1&0.1
\end{bmatrix}
$$
每一列对应一个样本的预测输出

对于第一个样本而言,其交叉熵损失为
$$-log0.1$$

对于第二个样本而言,其交叉熵损失为
$$-log0.6$$

对于第三个样本而言,其交叉熵损失为
$$-log0.1$$

对于第四个样本而言,其交叉熵损失为
$$-log0.1$$

相对熵

$$KL(p||q)=-\sum_ip(x_i)log(q(x_i))-(-\sum_ip(x_i)log(p(x_i)))$$

公式中的第一部分就是交叉熵,第二部分是个常数(因为$p$是数据的真实分布,是已知的)

所以,优化交叉熵和优化相对熵是等价的

Some Tips

  • 连续型同理,只需把求和过程改为积分过程;
  • 随机变量$X$的分布:对于离散型随机变量来说就是其分布列,对于连续型随机变量来说就是其分布函数。

参考资料

https://www.cnblogs.com/wangguchangqing/p/12068084.html

https://blog.shinelee.me/2019/12-10-%E7%9B%B4%E8%A7%82%E7%90%86%E8%A7%A3%E4%B8%BA%E4%BB%80%E4%B9%88%E5%88%86%E7%B1%BB%E9%97%AE%E9%A2%98%E7%94%A8%E4%BA%A4%E5%8F%89%E7%86%B5%E6%8D%9F%E5%A4%B1%E8%80%8C%E4%B8%8D%E7%94%A8%E5%9D%87%E6%96%B9%E8%AF%AF%E5%B7%AE%E6%8D%9F%E5%A4%B1.html

https://www.zhihu.com/question/41252833

https://zhuanlan.zhihu.com/p/35709485