您好,提问者:
请问数据是什么?你要根据什么排序,排序规则说一下。
//数组的话用Arrayssort(Object[] obj)//比如:
String[] arr = {"asddf","df","gffgfg"};
javautilArrayssort(arr);
//再输出数组已经对其进行排序了
不一定的,互信息和熵不同,没有具体的界限,可以大于1,甚至可以小于0。
要说和1的关系,一种情况是在只考虑两个变量x,y的互信息,且x,y为二元变量时,I(x,y)<=max(H(x),H(y))=1
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。互信息代表了两个随机变量的相关程度或者说依赖程度,因此在数据科学中是一种应用广泛的度量标准。
互信息能够捕捉随机变量之间的非线性统计依赖,因此可以作为变量之间真正的依赖关系的度量。然而,互信息的度量一直以来都是困难的。目前的方法仅限于对离散变量互信息的估计以及一些已知概率分布的连续变量,对于一般任务来说,互信息的估计是困难的。本文提出一种基于KL散度对偶表示的神经网络方法(称为MINE),其为互信息的估计提供了一种通用的解决方案。
对于两个随机变量 和 ,它们的互信息表示为:
和 之间的互信息可认为是在给定 时变量 所减少的不确定性:
另外, 和 的互信息等价于其联合分布 和其边缘分布的乘积 之间的KL散度:
KL散度的定义为:
也就是说联合分布和边缘分布的乘积之间的KL散度越大,随机变量之间的依赖程度就越大。到目前为止,互信息的估计问题就转化为了KL散度的估计问题。
MINE中应用的关键技术是KL散度的对偶表示,主要采用Donsker-Varadhan表示,同时也对比了f-divergence表示,两种方法分别记作MINE和MINE-f。
f-divergence的定义如下:
f-divergence衡量分布 和 之间的差异程度,满足在 和 完全一致的情况下取得最小值为 ,在有所差异的情况下值为一个正数,这一点可以通过凸函数的性质得到:
和 完全一致时:
和 有差异时:
事实上KL散度就是f-divergence的一个特例:
每一个凸函数都有一个共轭函数(Conjugate Function),记作 ,公式为:
这个函数也就是说要找出给定 的情况下变动 能达到的最大值,限制 必须要在 的定义域内,以下图为例,给定不同的 ,代入所有的 能得到的最大值就是 :
按照上面的方式能够理解前面的公式。那么 的图像是什么样子的呢?我们可以按照以下方式来考虑,在给定 ,使 变动,那么就能得到一条以 为斜率的直线,对于不同的 就对应着不同的直线:
而此时,要求 ,就只需要从 的位置坐垂线,这样与垂线相交最上面的直线对应的 就是能使得 取得最大值的 :
那么在整个 的定义域上,将位于最上面的直线的片段连接起来就是 的图像了,当然这只是便于理解的一种形象化的思路:
按照上面的思路,可以很直观地看出 也是凸函数。
另外,我们按照上面的方式把有关 的共轭函数的每条直线都画出来:
得到的共轭函数的图像像是一个指数函数,其实 的共轭函数就是 ,求解共轭函数可以直接用数学的方法计算出来,对于 来说,先把 代入前面共轭函数的表达式:
对于括号里面的式子 ,给定 ,需要求解 来使最大化 ,可以直接对 求导,也就有 ,然后解得 ,也就是说,对于给定的 ,能使得 最大的 就是 ,将 代入原来的式子就可以求得共轭函数了:
另外(在满足 是闭凸函数的条件下,这里就不深究了)有 是 的共轭函数, 也是 的共轭函数,也就是说:
是 互为共轭函数:
这叫做二次共轭。
由上面二次共轭的内容,那么对于f-divergence中的凸函数 ,就可以用 来替换它:
现在对于任意的一个 ,它的输入是 ,输出是 ,将 代入上面的式子中,一定有以下关系:
上面的不等式是恒成立的,我们也就得到了 的下界,来调整函数 ( 是任意的)使得这个下界取得最大值就可以用这个最大值来得到 :
下表中展示了一些不同的divergence对应的函数以及它的共轭函数:
现在我们知道当 时f-divergence就是KL散度(KL-divergence),而此时 的共轭函数为 ,将这些代入上面的式子,得到KL散度的f-divergence表示:
接下来为了与论文中使用的符号一致,我们可以将上述结论写为:
注意这里的 代表任意函数 。在本文提出的深度方法中, 是一个神经网络,此时 就不是任意函数了, 可以取到的所有函数的集合,记作 。现在可以得到 的下界:
通过梯度下降的方法不断学习 ,就可以使用这个下界近似两个分布 和 之间的KL散度。
Donsker-Varadhan表示来源于 Asymptotic evaluation of certain markov process expectations for large time IV 这篇文章,其具体的形式为:
类似的,当 是一个神经网络时,得到用于估计 的下界:
直观上来看,对于固定的 ,Donsker-Varadhan表示中的下界总是比f-divergence表示要大。MINE主要采用的是Donsker-Varadhan表示,实验中MINE效果要比MINE-f要好一些。
根据上面的理论对于两个随机变量 和 的互信息,假设 是由 参数化的神经网络,记作 ,参数 ,互信息的边界就可以表示为:
其中:
上面式子中的期望可以通过以下方式估计:
①从分布 和 中采样,样本 和 可以简单地通过丢弃样本 中的 获得;
②沿着batch维度打乱联合分布的样本。
接下来,对于一个分布 ,我们用 代表其与 个 样本相关的经验分布。
使用 代表神经网络参数化的函数集合,MINE定义为:
下面是MINE的算法,MINE-f也类似:
对于MINE而言,一个mini-batch内随机梯度下降的梯度为:
这里 代表一个mini-batch的样本。由于损失函数中 的存在,导致上式梯度中的第二项分子分母都有求期望的过程,然而当用采样来代替期望的时候,分子分母的期望应该独立采样,不能使用同一个mini-batch的样本。因此上式的梯度是有偏的,原因就是第二项分子分母的样本不独立。
矫正的方法是将分母上的 改用真正的 。这个值不是采用采样的方法估计的,在文中是采用滑动平均的方法计算 ,将该值记为 。则梯度变为:
该式相当于在原有的梯度的基础上,在后一项前面乘以了一个权重 , 相当于当前mini-batch的 均值和滑动平均的 均值的比值。注意 在计算中被当做一个常数。虽然 中也包含有参数 的项,但并不参与梯度的计算。
现在由梯度 反推目标函数,得到:
因此 MINE 的偏差校正过程仅需要在原始目标函数的后一项乘以一个常数 。
MINE: Mutual Information Neural Estimation
深度学习 111MINE
F-GAN & MINE
需要基础:概率论,数学基础
谈到通信中的两个问题:
单个随机变量的熵为该随机变量的不确定度。(编码中多少位bit可以完整表述随机变量X)
a 均匀分布,编码方式为最简单的,一种编码对应一种可能。
公式可以学成 H(X) = log N
b 概率非均匀分布,概率大的编码比特数越小。ps:用于决策树定根节点。
公式跟以上一样,概率换为联合概率
定义两个随机变量的条件熵H(X|Y),即一个随机变量在给定另一个随机变量的条件下的熵。 由另一随机变量导致的原随机变量不确定度的缩减量称为互信息。(是不是很难记,其实我从没记过,看图)
毕业后才发现学习速度要比读书时更快
以上截图来源网络,但是我有正版教科书(纸质版),衷心希望所有文件都能出电子版。
上课又用到了 201881
不一定的,互信息和熵不同,没有具体的界限,可以大于1,甚至可以小于0。要说和1的关系,一种情况是在只考虑两个变量x,y的互信息,且x,y为二元变量时,I(x,y)<=max(H(x),H(y))=1
以上就是关于求java编写互信息计算,并按照互信息值从大到小排列。急~全部的内容,包括:求java编写互信息计算,并按照互信息值从大到小排列。急~、信息论中的互信息问题。、MINE:随机变量互信息的估计方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!