论文
Belghazi, Mohamed Ishmael, et al. “ Mutual information neural estimation .” International Conference on Machine Learning . 2018.
利用神经网络的梯度下降法可以实现快速高维连续随机变量之间互信息的估计,上述论文提出了Mutual Information Neural Estimator (MINE)。NN在维度和样本量上都是线性可伸缩的,MI的计算可以通过反向传播进行训练。
核心
Python实现
现有github上的代码无法计算和估计高维随机变量,只能计算一维随机变量,下面的代码给出的修改方案能够计算真实和估计高维随机变量的真实互信息。
其中,为了计算理论的真实互信息,我们不直接暴力求解矩阵(耗时,这也是为什么要有MINE的原因),我们采用给定生成随机变量的参数计算理论互信息。
SIGNAL_NOISE = 0.2 SIGNAL_POWER = 3
完整代码基于pytorch
# Name: MINE_simple # Author: Reacubeth # Time: 2020/12/15 18:49 # Mail: noverfitting@gmail.com # Site: www.omegaxyz.com # *_*coding:utf-8 *_* import numpy as np import torch import torch.nn as nn from tqdm import tqdm import matplotli