“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”
信息量
信息量 $\equiv$ 意外程度
- 假如 $x_i$ 的发生概率 $p(x_i)$ 很低,那么当 $x_i$ 真的发生时所携带的信息量更大
- 假如 $x_j$ 的发生概率 $p(x_j)$ 很高,那么当 $x_i$ 发生时信息量就较少,因为并不意外
推导信息公式
- 动机:我们要找到一个合适的函数 $I(x)$ 用于衡量发生事件 $x$ 给我们带来的信息量
- 要求:考虑到信息量和概率之间的联系,$I(x)$ 需要满足以下几点:
- $I(x)\ge0$:因为信息量不能为负
- $p(x)\darr \implies I(x)\uarr$:发生事件越小概率,信息量越大
- $I(A\cap B) = I(A) + I(B)$:两个事件同时发生的信息量 应是两个事件的信息量之和
- **公式:**同时满足以上三个条件的函数 $I(x)$ 为
$$
I(x_i)=-\log_2 p(x_i)
$$
- 验证满足条件:
- $p(x)\le1 \implies \log_2 p(x)\le 0 \implies -\log_2 p(x) \ge 0$
- $p(x)$ 越小 $-\log_2 p(x)$ 越大(负号的缘故)
- $I(A\cap B)=-\log_2(p(A)p(B)) = -\log_2p(A)-\log_2p(B) = I(A)+I(B)$
信息熵
熵 $\equiv$ 期望信息量
- 信息熵 $\text{Ent}(X)$ 本质上衡量了观测随机事件/变量 $X$ 的结果 能给我们带来的期望信息量
- 假设随机变量 $X$ 取值为 $x_1,x_2, \dots, x_n$;发生概率分别为 $p(x_1),p(x_2), \dots, p(x_n)$
$$
\begin{align*}
\text{Ent}(X)=E(I(X))&=\sum_{i=1}^n p(x_i) I(x_i)\\
&= \sum_{i=1}^n p(x_i)(-\log_2 p(x_i))\\
&= -\sum_{i=0}^n p(x_i)\log_2 p(x_i)
\end{align*}
$$
熵 $\equiv$ 混乱度 / 不纯度
- 信息熵 $\sum p(x)\log_2p(x)$ 也可以被认为衡量了任意数据集的“混乱”程度。
- 假如一个数据集里所有类别都一样多,那这个时候最“混乱” / 纯度最低
- 假如一个数据集里某类别占大多数,那这个时候最不“混乱” /纯度最高
- 设$p_k$为第$k$类样本在总集合$D$中的比例 $(k=1,2,...,d)$