一条信息的信息量大小和它的不确定性有很大的关系。一句话如果需要很多外部信息才能确定,我们就称这句话的信息量比较大。比如你听到“云南西双版纳下雪了”,那你需要去看天气预报、问当地人等等查证。相反,如果和你说“人一天要吃三顿饭”,那这条信息的信息量就很小,因为条信息的确定性很高。
那我们就能将事件 $x_0$ 的信息量定义如下(其中 $p(x_0)$ 表示事件 $x_0$ 发生的概率):
$$ \begin{equation}I\left(x_0\right)=-\log \left(p\left(x_0\right)\right)\end{equation} $$
表示事件 $x_0$ 发生的概率越大,其 $\log(p(x_0))$ 越大,那么说明这个事件的信息量越小,所以取负号。
信息量是对于单个事件来说的,但是实际情况一件事有很多种发生的可能,比如掷骰子有可能出现6种情况,明天的天气可能晴、多云或者下雨等等。熵是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。公式如下:
$$ \begin{equation}H(X)=-\sum_{i=1}^n p\left(x_i\right) \log \left(p\left(x_i\right)\right)\end{equation} $$
其中一种比较特殊的情况就是结果只有两个情况(通常在分类算法里被采用)。例如掷硬币,只有正、反两种情况(二项分布或者0-1分布),该种情况熵的计算可以简化如下:
$$ \begin{aligned}H(X) & =-\sum_{i=1}^n p\left(x_i\right) \log \left(p\left(x_i\right)\right) \\& =-p(x) \log (p(x))-(1-p(x)) \log (1-p(x))\end{aligned} $$
相对熵又称 $KL$ 散度,用于衡量对于同一个随机变量 $x$ 的两个分布 $p(x)$ 和 $q(x)$ 之间的差异。在机器学习中,$p(x)$ 常用于描述样本的真实分布,例如 [1,0,0,0] 表示样本属于第一类,而 $q(x)$ 则常常用于表示预测的分布,例如 [0.7,0.1,0.1,0.1] 。显然使用 $q(x)$ 来描述样本不如 $p(x)$ 准确,$q(x)$ 需要不断地学习来拟合准确的分布 $p(x)$:
$KL$ 散度公式如下:
$$ D_{K L}(p \| q)=\sum_{i=1}^n p\left(x_i\right) \log \left(\frac{p\left(x_i\right)}{q\left(x_i\right)}\right) $$
其中,$n$ 表示事件可能发生的情况总数,$KL$ 散度的值越小表示两个分布越接近。