一,信息(Information)
1.1 信息量的定义
信息量:不确定性减小的度量
1.2 信息的性质
某一信息的概率越小,提供的信息量就越大
当一个罕见的信息到达时,比一个常见的信息有着更多的信息量,因为它排除了别的很多的可能性,告诉了我们一个确切的信息。
例如,某地某段时间下雨的概率为12.5%,晴朗的概率为50%,多云的概率为37.5%。那么当天气预报提供下雨的信息时,我们减少了87.5%的不确定性。如果天气预报提供晴朗的信息,那我们仅减少了50%的不确定性。
1.2 信息量的公式
I(x)=-\log_2P(x)
为何用负对数?
-
为了满足P越小,I越大的性质。
-
方便地将分布在(0,1)的概率映射到分布在(0,\infty)的信息量
-
为了满足独立可加性。
独立事件同时发生的概率是二者概率相乘。而直观上二者提供的信息量应该是相加的。而对数恰好可以化加为乘。
为何以2为底?
-
在计算机科学中,我们一般以01事件为参照事件。\log_2表示在不等长编码中,该事件需要用多少个01事件来表示。即编码长度。
二,熵(Entropy)
1.1 熵的定义
香农对熵的定义:无损编码事件信息的最小平均编码长度。
1.2 熵的直观解释
通常熵可以解释为混乱程度、不确定性等等。
如果熵比较大,即最小平均编码长度较长,意味着该事件有较多的可能状态。我们较难对其做出预测。或者说,此时每个信息的可能性都相对较低,从而每个信息能提供的不确定性减少量很大。
1.3 熵的公式
熵用H(P)表示,P为概率分布
Entropy =H(P)= \mathbb{E}_{x\sim P}[-\log_2P(x)]=-\sum_i P(i) \log_2 P(i)
解释:
-
为何取负对数?
因为信息的定义是负对数
-
为何是把P(i)放到对数里?
从信息传输的角度来说,为了节省资源,应该把短的编码留给概率大的状态,而概率越小的状态编码应该越长。这样的编码是最优的。
-
为何用的是期望函数?
因为熵的定义是最小的“平均编码长度”
三,交叉熵(Cross-Entropy)
2.1 交叉熵的定义
只要我们知道了任何事件的概率分布,我们就可以计算它的熵。那如果我们不知道事件的概率分布,又该怎么办呢?那就只能对熵做一个估计,用我们预估的概率分布Q来代替P,估计熵。这个估计就是交叉熵。
2.2 交叉熵的公式
交叉熵用H(P,Q)表示。P为真实的概率分布分布,Q为预估的概率分布
CrossEntropy = \mathbb{E}_{x\sim P}[-\log_2Q(x)]=-\sum_i P(i) \log_2 Q(i)
2.3 交叉熵的性质
CrossEntropy \ge Entropy
因为熵是理论上的最小平均编码长度,所以用其他任何概率分布Q估计出来的值都不会小于这个值。实际上我们总会因为模型的准确度,以及一些取整问题等,导致概率分布Q不严格等于P。所以交叉熵≥熵。
2.4 交叉熵的应用
当Q越接近P时,交叉熵就越小。所以可以将交叉熵作为损失函数,训练模型,使其得到的Q接近于目标分布P。
例:假设一个动物照片的数据集中有5种动物,且每张照片中只有一只动物,每张照片的标签都是one-hot编码。
假设有两个机器学习模型对第一张照片P1分别作出了预测:Q1和Q2,而第一张照片的真实标签为[1,0,0,0,0]。
H(P_1,Q_1)=-\sum_i P_1(i) \log_2 Q_1(i)=-(1\log_20.4+0\log_20.3+...+0\log_20.2)\approx 0.916
H(P_1,Q_2)=-\sum_i P_1(i) \log_2 Q_2(i)=-(1\log_20.98+0\log_20.01+...+0\log_20.2)\approx 0.02
可见,预测准确度更高的Q2模型,其预测结果对应的交叉熵越小。因此交叉熵可以作为损失函数。
四,KL散度(KL-Divergence)
4.1 KL散度的定义
KL散度是一种量化两种概率分布P和Q之间差异的方式,又称为“相对熵”
4.2 KL散度的公式
D_{KL}(P||Q)= \mathbb{E}_{x\sim P}[\log_2P(x)-\log_2Q(x)]\\=-\sum_i P(i) (\log_2 P(i)-\log_2Q(i))\\=-\sum_i P(i) \log_2\frac{P(i)}{Q(i)}
4.3 KL散度的应用
可见这篇文章