由同一随机变量导出的两个变量的互信息计算错误排查问询
嗨,我来帮你梳理一下这里的问题所在~
首先,核心问题出在你处理奇异分布的方式上:当Y和Z都是X的确定性函数时,它们的联合分布并不是二维空间上的绝对连续分布(相对于勒贝格测度),而是集中在一条低维曲线({(f(x), g(x)) | x ∈ X的支撑集})上的奇异分布。这时候用常规的二重积分形式计算互信息,直接把delta函数代入对数运算,本质上是不合法的——因为狄拉克delta是广义函数,不是常规的可积函数,对数这种非线性运算不能直接作用在它上面,自然会出现发散的问题。
咱们一步步拆解你的推导问题:
- 你写出的
p(Y=y, Z=z)表达式里,双重求和加δ(x_i-x_j)其实可以简化:只有当存在某个x同时满足f(x)=y和g(x)=z时,这个联合密度才不为零。但对于连续X来说,这个联合分布的支撑是一维的,用常规的二维密度来描述本身就不合适,因为它在二维勒贝格测度下的“密度”其实是无穷大的,只能用测度论里的曲线测度来表示。 - 互信息的常规积分公式
MI(Y,Z) = ∫∫ p(y,z)log(p(y,z)/(p(y)p(z)))dydz,只适用于联合分布绝对连续的情况。而你的场景里,p(y,z)是带delta的广义函数,代入这个公式就会出现log(δ(x))这种无定义的项,自然会发散。
那正确的做法是什么呢?我们可以利用Y和Z都是X的函数这一性质,把互信息的计算直接转化为对X的期望,绕开奇异分布的麻烦:
互信息的本质是期望形式:
$$MI(Y,Z) = \mathbb{E}\left[ \log\left( \frac{p(Y,Z)}{p(Y)p(Z)} \right) \right]$$
因为Y=f(X)、Z=g(X),我们可以把期望变量换成X,得到:
$$MI(Y,Z) = \mathbb{E}_X\left[ \log\left( \frac{p(f(X),g(X))}{p(f(X))p(g(X))} \right) \right]$$
对于离散X的情况,这个式子就是我们熟悉的离散互信息公式:
$$MI(Y,Z) = \sum_x p(x) \log\left( \frac{p(x)}{\left( \sum_{x':f(x')=f(x)} p(x') \right) \left( \sum_{x'':g(x'')=g(x)} p(x'') \right)} \right)$$
对于连续X,我们可以把它看作离散情况的极限,用积分代替求和,或者拆成熵的差来计算:
$$MI(Y,Z) = H(Y) + H(Z) - H(Y,Z)$$
其中:
- $H(Y)$是Y的微分熵:$H(Y) = \mathbb{E}_X\left[ -\log\left( \frac{p(X)}{|f'(X)|} \right) \right]$
- $H(Z)$同理可得
- $H(Y,Z)$是(Y,Z)的联合微分熵,对于这个奇异分布,它的表达式是$H(Y,Z) = \mathbb{E}_X\left[ -\log\left( \frac{p(X)}{\sqrt{(f'(X))^2 + (g'(X))^2}} \right) \right]$(这里的分母是映射$x→(f(x),g(x))$对应的曲线弧长元素系数)
把这些代入熵差的公式,就能得到一个只依赖X的分布和函数f、g的表达式,完全不会涉及到delta函数的对数运算,也就不会出现发散问题了。
简单来说,你走错方向的地方在于:试图用常规的二维密度来描述一个奇异的联合分布,并且直接把广义函数代入了非线性的对数运算,这在数学上是不成立的。换个思路,利用X作为“源头”的性质,把所有计算都转化到X的空间里,就能避开这个陷阱啦。
备注:内容来源于stack exchange,提问作者ac1643

