KL散度&互信息
KL散度(KL divergence)
假设我们是一组正在广袤无垠的太空中进行研究的科学家。我们发现了一些太空蠕虫,这些太空蠕虫的牙齿数量各不相同。现在我们需要将这些信息发回地球。但从太空向地球发送信息的成本很高,所以我们需要用尽量少的数据表达这些信息。我们有个好方法:我们不发送单个数值,而是绘制一张图表,其中 X 轴表示所观察到的不同牙齿数量(0,1,2…),Y 轴是看到的太空蠕虫具有 x 颗牙齿的概率(即具有 x 颗牙齿的蠕虫数量/蠕虫总数量)。这样,我们就将观察结果转换成了分布。
发送分布比发送每只蠕虫的信息更高效。但我们还能进一步压缩数据大小。我们可以用一个已知的分布来表示这个分布(比如均匀分布、二项分布、正态分布)。举个例子,假如我们用均匀分布来表示真实分布,我们只需要发送两段数据就能恢复真实数据;均匀概率和蠕虫数量。但我们怎样才能知道哪种分布能更好地解释真实分布呢?这就是 KL 散度的用武之地。
直观解释:KL 散度是一种衡量两个分布(比如两条线)之间的匹配程度的方法。
对于某个未知的分布\(p(x)\),我们用\(q(x)\)进行建模并且传递信息,为了衡量这两个分布是否匹配,我们用附加信息量的期望表示。附加信息量在这里结尾处有介绍。
KL散度又称相对熵,表示用\(q(x)\)去表示\(p(x)\)时需要的附加信息量。
KL散度的性质
KL散度不是一个对称量,即:\(KL(p||q) \neq KL(q||p)\)。
并且\(KL(p||q) \geq 0\),并且只在两个分布相同时值可以取0。证明:
对于凸函数\(f(x)\),有Jensen不等式:
若把\(\lambda_i\)看作取值\(x_i\)的概率,那么我们可以写成:
对于连续变量:
延伸一下:
那么由于\(-\ln x\)是凸函数,\(\xi(x)=\frac{q(x)}{p(x)}\):
并且由于\(-\ln x\)是严格凸函数,只有在\(q(x)=p(x)\)时等号成立。
数据压缩和密度估计有某种隐含的关系。对于某一分布\(p(x)\),如果我们知道真实的分布,那么我们可以给出最有效率的数据压缩并进行传输。若我们使用了其他的分布进行信息传输,那么一定会损失编码效率,传输效率降低,并且要额外传输的信息量至少为两者之间的KL散度。
在实际训练中,我们并不能得知真实的分布,所以只能用有限的数据加和得到其期望,此时KL散度近似为:
公式右侧第二项与\(\theta\)无关,第一项为其负对数似然函数。由此可见最小化KL散度就是最大化似然函数。
互信息(mutual information)
对于\(p(x,y)\),给出两个变量组成的数据集。若两变量相互独立,那么\(p(x,y)=p(x)p(y)\)。若两变量不独立,那么我们要考察联合概率分布和边缘概率分布的KL散度,以判断两者是否接近独立。
我们称之为互信息:
当两分布互相独立时等号成立。
根据条件熵的公式:
可以得到:
即:互信息可以表示知道\(y\)后,\(x\)的不确定行的减小程度。也可以理解成为了表示\(x\),如果我们已经传输了\(y\),那么我们已经传输的信息量为\(I(x,y)\)。