0%

交叉熵损失

从熵来看交叉熵损失

信息量

信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小

设 $X$ 是一个离散型随机变量,其取值为集合 $X = x_0,x_1,…,x_n$ ,则其概率分布函数为$p(x) = Pr(X=x),x\in X$,则定义事件$X = x_0$的信息量为
$$
I(x_0) = -log(p(x_0)) \tag{1}
$$
当$p(x_0)= 1$时,该事件必然发生,其信息量为0

熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。

信息量时衡量某个事件的不确定性,而熵是用来衡量一个**系统(所有事件)**的不确定性。

熵计算公式:
$$
H(x) = -\sum_{i=1}^{n}p(x_i)log(p(x_i)) \tag{2}
$$
其中,$p(x_i)$为事件$X=x_i$发生的概率,$-log(p(x_i))$ 为事件$X=x_i$的信息量

可以看出,熵是信息量的期望值,是一个随机变量(一个系统,事件所有可能性)不确定性的度量

相对熵-Relative Entropy(KL散度)

相对熵也称为KL散度,表示同一个随机变量的两个不同分布间的距离。

设$p(x),q(x)$分别是离散随机变量$X$的两个概率分布,则 $p$ 对 $q$ 的相对熵是:
$$
\begin{align}
D_{KL}(p||q) &= \sum_ip(x_i)log(\frac{p(x_i)}{q(x_i)}) \
& = \sum_{i}p(x_i)(log,p(x_i) - log,q(x_i)) \
& = E_{x\sim p(x)}[logp(x) - logq(x)]
\end{align}
$$

相对熵的性质:

  • 如果$p(x)$和$q(x)$的分布 相同,则其相对熵为0
  • $D_{KL}(p||q)\neq D_{KL}(q||p)$ ,相对熵不具有对称性。
  • $D_{KL}(p||q)\geq 0$

总的来说,相对熵是用来衡量同一个随机变量的两个不同分布之间的距离。

在实际应用中,假如$p(x)$是目标真实的分布,而$q(x)$是预测得来的分布,为了让这两个分布尽可能的相同的,

就需要最小化KL散度

交叉熵-Cross Entropy

设$p(x)$,$q(x)$分别是离散随机变量$X$的两个概率分布,其中$p(x)$是目标分布,则$p$ 和 $q$的交叉熵可以看作是,

使用分布$q(x)$表示目标分布$p(x)$的困难程度:
$$
H(p,q) = \sum_{i}p(x_i)log(\frac{1}{logq(x_i)}) \tag{4}
$$

熵、KL散度以及交叉熵的关系:

$$
\begin{align}
& H§ = -\sum_{i}p(x_i)log(p(x_i)) \tag{4.1} \
& D_{KL}(p||q) = \sum_{i}p(x_i)log(\frac{p(x_i)}{q(x_i)}) = \sum_{i}(p(x_i)log,p(x_i) - p(x_i)log,q(x_i)) \tag{4.2} \
& H(q,q) = -\sum_{i}p(x_i)logq(x_i) \tag{4.3}
\end{align}
$$

由上述三个公式得:
$$
D_{KL}(p,q) = H(p,q) - H§
$$
在机器学习中,目标的分布$p(x)$ 通常是训练数据的分布,是固定的,即$H§$ 是一个常量。这样两个分布的交叉熵$H(p,q)$,也就等价于最小化这两个分布的相对熵 $D_{KL}(p||q)$


从极大似然看交叉熵

逻辑回归-二分类

在二分类问题模型:例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等,真实样本的标签为 [0,1],分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。

$Sigmoid$函数:

$$
g(s) = \frac{1}{1+e^{-s}}
$$

Sigmoid 函数有这样的特点:s = 0 时,g(s) = 0.5;s >> 0 时, g ≈ 1,s << 0 时,g ≈ 0。显然,g(s) 将前一级的线性输出映射到 [0,1] 之间的数值概率上。这里的 g(s) 就是交叉熵公式中的模型预测输出

预测输出即 Sigmoid 函数的输出表征了当前样本标签为 1 的概率:$\hat y = P(y=1,|,x)$

很明显,当前标签为0的概率可以表示为: $1 - \hat y = P(y=0,|,x)$

重点来了,如果我们从极大似然性的角度出发,把上面两种情况整合到一起:
$$
P(y,|,x) = \hat y ^y . (1 - \hat y )^{1-y} \tag{*}
$$
当真实标签$y=0$时, 上式可以化为:$P(y = 0 ,|,x) = 1- \hat y$

当真实标签$y=1$时,上式可以化为:$P(y=1,|,x) = \hat y $

重点看一下整合之后的概率表达式,我们希望的是概率 P(y|x) 越大越好。首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。则有:
$$
\begin{align}
log, P(y,|,x) & = log(\hat y^y.(1-\hat y)^{1-y}) \
& = y,log,\hat y + (1-y)log(1-\hat y )
\end{align}
$$
我们希望 log P(y|x) 越大越好,反过来,只要 log P(y|x) 的负值 -log P(y|x) 越小就行了。

那我们就可以引入损失函数,且令 Loss = -log P(y|x)即可。则得到损失函数为:
$$
L = - [y,log,\hat y + (1-y)log(1-\hat y )]
$$
非常简单,我们已经推导出了单个样本的损失函数,是如果是计算 N 个样本的总的损失函数,只要将 N 个 Loss 叠加起来就可以了:
$$
L = -\sum_{i=1}{N}yi,log,\hat y ^{(i)} + (1 - y^{(i)})log(1-\hat y^{(i)})
$$

交叉熵损失函数

我们希望能够最小化真实分布 $P(y|x)$ 与模型输出分布 $Q(\hat y|x)$ 的距离,等价于最小化两者的交叉熵,其被定义为:
$$
-\sum_{y}p(y|x)logq(\hat y | x) = -\sum_{k=1}^{K}y_k log,{\hat {y_k}}
$$

交叉熵-二分类损失函数

$$
H(p,q) = -\sum_x (p(x)log,q(x)+(1-p(x))log(1-q(x))) \tag{**}
$$

逻辑回归

给定N个训练样本,${(x{(n)},y)}_{n=1}^{N}$ , 用Logistic回归模型,对每个样本$x^{(n)}$ 进行预测,输出其标签为1的后验概率,记为$\hat y^{(n)}$

由于$y^{(n)}\in { {0,1} } $ ,样本$(x{(n)},y{(n)})$的真实条件概率为:
$$
\begin{align}
& pr(y{(n)}=1,|,x{(n)}) = y^{(n)} \
& pr(y{(n)}=0,|,x{(n)}) = 1 -y^{(n)} \
\end{align}
$$

交叉熵损失函数

$$
\begin{align}
R(w) &= - \frac{1}{N}\sum_{n=1}{N}[pr(y{(n)}=1,|,x^{(n)})log,\hat y{(n)}+pr(y{(n)}=0,|,x^{(n)})log,(1- \hat y ^{(n)}))] \
& = -\frac{1}{N} \sum_{n=1}{N}[y{(n)}log,\hat y^{(n)} + (1-y^{(n)})log(1-\hat y ^{(n)})]
\end{align}
$$

交叉熵示例

假设$N=3$,期望输出$p = (1,0,0)$ 实际输出,$q_1 = (0.5,0.2,0.3), q_2 = (0.8,0.1,0.1)$,那么
$$
\begin{align}
& H(p,q_1) = -(1log,0.5 + 0log,0.2+0*log,0.3)
&

\end{align}
$$

参考资料