标签:mathbb Information Mutual right Neural self output hidden size
Mutual Information Neural Estimation
互信息定义:
\(I(X;Z) = \int_{X \times Z} log\frac{d\mathbb{P}(XZ)}{d\mathbb{P}(X) \otimes \mathbb{P}(Z)}d\mathbb{P}(XZ)\)
CPC文章里用下面这个公式定义要更加容易理解,都是一样的:
\[I(x;z) = \sum_{x,z}p(x,z) log \frac{p(x,z)}{p(x)p(z)} \]互信息越大,表明两个变量依赖关系越强,互信息越小,表示两个随机变量越独立。
KL散度的对偶问题:
因此根据KL散度和其对偶问题之间的关系我们可以得到:
\[D_{K L}(\mathbb{P} \| \mathbb{Q}) \geq \sup _{T \in \mathcal{F}} \mathbb{E}_{\mathbb{P}}[T]-\log \left(\mathbb{E}_{\mathbb{Q}}\left[e^{T}\right]\right) \]利用上式优化互信息的下界:
\[I(X ; Z) \geq I_{\Theta}(X, Z) \]\[I_{\Theta}(X, Z)=\sup _{\theta \in \Theta} \mathbb{E}_{\mathbb{P}_{X Z}}\left[T_{\theta}\right]-\log \left(\mathbb{E}_{\mathbb{P}_{X} \otimes \mathbb{P}_{Z}}\left[e^{T_{\theta}}\right]\right) \]优化算法:
一般来说z的分布用高斯分布,x和z的分布(marginal distribution)都好采样;
对于joint distribution,用一个神经网络来建模,即F(x,z),然后其结果就是joint distribution的采样了。
代入公式计算即可。
class Mine(nn.Module):
def __init__(self, input_size=2, hidden_size=100):
super().__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, hidden_size)
self.fc3 = nn.Linear(hidden_size, 1)
def forward(self, input):
output = F.elu(self.fc1(input))
output = F.elu(self.fc2(output))
output = self.fc3(output)
return output
def mutual_information(joint, marginal, mine_net):
t = mine_net(joint)
et = torch.exp(mine_net(marginal))
mi_lb = torch.mean(t) - torch.log(torch.mean(et))
return mi_lb, t, et
标签:mathbb,Information,Mutual,right,Neural,self,output,hidden,size 来源: https://www.cnblogs.com/aoru45/p/15362515.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。