对MMVAE中IWAE代码实现的理解
创始人
2024-01-25 08:38:35
0

原始的IWAE

优化目标:
LIWAE(x1:M)=Ez1:K∼qΦ(z∣x1:M)[log⁡∑k=1K1KpΘ(zk,x1:M)qΦ(zk∣x1:M)](1)\mathcal{L}_{\mathrm{IWAE}}\left(\boldsymbol{x}_{1: M}\right)=\mathbb{E}_{\boldsymbol{z}^{1: K} \sim q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)}\left[\log \sum_{k=1}^K \frac{1}{K} \frac{p_{\Theta}\left(\boldsymbol{z}^k, \boldsymbol{x}_{1: M}\right)}{q_{\Phi}\left(\boldsymbol{z}^k \mid \boldsymbol{x}_{1: M}\right)}\right] \quad\quad\quad(1) LIWAE​(x1:M​)=Ez1:K∼qΦ​(z∣x1:M​)​[logk=1∑K​K1​qΦ​(zk∣x1:M​)pΘ​(zk,x1:M​)​](1)

这里 pΘ(z,x1:M)=p(z)∏m=1Mpθm(xm∣z)p_{\Theta}\left(\boldsymbol{z}, \boldsymbol{x}_{1: M}\right)=p(\boldsymbol{z}) \prod_{m=1}^M p_{\theta_m}\left(\boldsymbol{x}_m \mid \boldsymbol{z}\right)pΘ​(z,x1:M​)=p(z)∏m=1M​pθm​​(xm​∣z)
后验分布由推理网络近似得到 qΦ(zk∣x1:M)q_{\Phi}\left(\boldsymbol{z}^k \mid \boldsymbol{x}_{1: M}\right)qΦ​(zk∣x1:M​)

MMVAE中的IWAE变体

采用MoE方法进行多模态融合的优化目标:
LIWAEMoE(x1:M)=1M∑m=1MEzm1:K∼qϕm(z∣xm)[log⁡1K∑k=1KpΘ(zmk,x1:M)qΦ(zmk∣x1:M)](2)\mathcal{L}_{\mathrm{IWAE}}^{\mathrm{MoE}}\left(\boldsymbol{x}_{1: M}\right)=\frac{1}{M} \sum_{m=1}^M \mathbb{E}_{\boldsymbol{z}_m^{1: K} \sim q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right)}\left[\log \frac{1}{K} \sum_{k=1}^K \frac{p_{\Theta}\left(\boldsymbol{z}_m^k, \boldsymbol{x}_{1: M}\right)}{q_{\Phi}\left(\boldsymbol{z}_m^k \mid \boldsymbol{x}_{1: M}\right)}\right] \quad\quad\quad(2) LIWAEMoE​(x1:M​)=M1​m=1∑M​Ezm1:K​∼qϕm​​(z∣xm​)​[logK1​k=1∑K​qΦ​(zmk​∣x1:M​)pΘ​(zmk​,x1:M​)​](2)

根据MoE方法近似的后验分布为:qΦ(z∣x1:M)=∑mαm⋅qϕm(z∣xm)q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)=\sum_m \alpha_m \cdot q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right)qΦ​(z∣x1:M​)=∑m​αm​⋅qϕm​​(z∣xm​),这里α=1M\alpha = \frac{1}{M}α=M1​

计算IWAE的主体代码:
在这里插入图片描述

  • .log_prob(value)是计算value在定义的概率分布中对应的概率的对数。
  • log_mean_exp(value)在后面介绍

在for循环里面一行行的分析,以r=0为例:

  • lpz = logp(z1)log p(z_1)logp(z1​), 每个潜在变量的尺寸:[K, batch size, latent dim],在这里用sum(-1)相当于是将潜在变量由latent dim压缩到1维
  • lqz_x = log[q(z1∣x1)+q(z1∣x2)]log [ q(z_1 | x_1) + q(z_1 | x_2)]log[q(z1​∣x1​)+q(z1​∣x2​)]
  • lpx_z = logp(x1∣z1)+logp(x2∣z1)logp(x_1|z_1) + logp(x_2|z_1)logp(x1​∣z1​)+logp(x2​∣z1​)
  • lw = lpz + lpx_z + lqz_x

最后运算:

l1 = log_mean_exp(lw, dim=0)

就可以得到:p(z1)⋅(x1∣z1)⋅(x2∣z1)q(z1∣x1)+q(z1∣x2)(3)\cfrac{p(z_1)\cdotp(x_1|z_1)\cdotp(x_2|z_1)}{q(z_1|x_1) + q(z_1|x_2)} \quad\quad\quad(3)q(z1​∣x1​)+q(z1​∣x2​)p(z1​)⋅(x1​∣z1​)⋅(x2​∣z1​)​(3)

这个结果就是上述公式2中m=1时的结果,这样一行行的分析就可以很好的理解上述代码是如何实现IWAE多模态变体的。

log_mean_exp

其中log_mean_exp的代码:

def log_mean_exp(value, dim=0, keepdim=False):return torch.logsumexp(value, dim, keepdim=keepdim) - math.log(value.size(dim))

log_mean_exp和torch.logsumexp的区别就是字面意思,前面取平均,后者求和

  • 因为MMVAE中的后验分布为qΦ(z∣x1:M)=∑mαm⋅qϕm(z∣xm)q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)=\sum_m \alpha_m \cdot q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right)qΦ​(z∣x1:M​)=∑m​αm​⋅qϕm​​(z∣xm​),这里α=1M\alpha = \frac{1}{M}α=M1​,即需要对上述式子3中的分母取平均,所以log_mean_exp可以写成下述公式:
    logmeanexp⁡(x)i=log⁡1j∑jexp⁡(xij)=log⁡∑jexp⁡(xij)−log⁡j\operatorname{logmeanexp}(x)_i=\log \frac{1}{j}\sum_j \exp \left(x_{i j}\right) = \log \sum_j \exp (x_{i j}) - \log j logmeanexp(x)i​=logj1​j∑​exp(xij​)=logj∑​exp(xij​)−logj
  • torch.logsumexp的介绍截图自官网:在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...