【常用于分类问题】交叉熵、相对熵
假设有离散型随机变量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