首页 > 其他分享 >关于 KL 散度和变分推断的 ELBO

关于 KL 散度和变分推断的 ELBO

时间:2024-06-23 18:22:44浏览次数:22  
标签:phi mathbf log big ELBO 变分 散度 KL


01 KL 散度

Kullback-Leibler (KL) 散度,是一种描述 一个概率分布 \(P\) 相对于另一个概率分布 \(Q\) 的非对称性差异的概念。

KL 散度是非负的;当且仅当两个分布相同时,它为零。

1.1 定义

对于离散概率分布,\(P\) 和 \(Q\) 的 KL 散度定义为:

\[\text{KL}(P \| Q) = \sum_{\mathbf{x}} P(\mathbf{x}) \log \frac{P(\mathbf{x})}{Q(\mathbf{x})} \]

对于连续概率分布,定义为:

\[\text{KL}(P \| Q) = \int p(\mathbf{x}) \log \frac{p(\mathbf{x})}{q(\mathbf{x})} d\mathbf{x} \]

其中,\(p(\mathbf{x})\) 是 \(P\) 的概率密度函数,\(q(\mathbf{x})\) 是 \(Q\) 的概率密度函数。

1.2 性质

  1. 非负性:KL 散度总是非负的,\(\text{KL}(P \| Q) \geq 0\)。
  2. 不对称性:KL 散度不是对称的,即 \(\text{KL}(P \| Q) \neq \text{KL}(Q \| P)\)。
  3. 零点:当 \(P\) 和 \(Q\) 完全相同时,\(\text{KL}(P \| Q) = 0\)。
  4. 不满足三角不等式:KL 散度不满足传统意义上的三角不等式。

1.3 变分推断中的 KL 散度

在变分推断中,KL 散度用于衡量一个变分分布 \(q(\mathbf{z}|\mathbf{x})\) 与真实后验分布 \(p(\mathbf{z}|\mathbf{x})\) 之间的差异,即:

\[\text{KL}\big(q(\mathbf{z}|\mathbf{x}) ~\|~ p(\mathbf{z}|\mathbf{x})\big) \]

通过最小化这个差异,我们可以得到一个对后验分布 \(p(\mathbf{z}|\mathbf{x})\) 的良好近似。

  • 先验:没有任何信息,先猜一波 latent 分布, \(p(\mathbf{z})\) ;
  • 后验:给定结果,猜猜我是基于什么 latent 做的, \(p(\mathbf{z}|\mathbf{x})\) 。

然而,直接最小化 KL 散度可能很困难,因为它涉及到对真实后验分布 \(p(\mathbf{z}|\mathbf{x})\) 的直接计算。变分下界(如 ELBO)提供了一种通过下界来间接最小化 KL 散度的方法,使得优化过程更加可行。

02 变分下界(证据下界 Evidence Lower Bound, ELBO)

变分下界(Variational Lower Bound)是变分推断中的一个概念。在复杂概率模型中,ELBO 用于近似难以直接计算的量,如互信息或其他后验分布。

2.1 变分下界的含义

在变分推断中,我们通常有一个复杂的概率模型,它包含观测数据 \(\mathbf{x}\) 和一些隐变量 \(\mathbf{z}\)。我们希望找到隐变量的后验分布 \(p(\mathbf{z}|\mathbf{x})\),比如给定轨迹 \(\mathbf{x}\) 后,该轨迹对应的 task \(\mathbf{z}\) 的分布。

由于计算复杂性,这个分布往往难以直接计算。变分下界提供了一种近似后验分布的方法,通过优化一个简化的变分分布 \(q(\mathbf{z})\)。

变分下界基于 Kullback-Leibler (KL) 散度的概念,KL 散度衡量了两个概率分布之间的差异。

在变分推断中,我们希望找到 \(q(\mathbf{z}|\mathbf{x})\),使得它与真实后验分布 \(p(\mathbf{z}|\mathbf{x})\) 尽可能接近:最小化它们之间的 KL 散度:

\[\text{KL}\big(q(\mathbf{z}|\mathbf{x}) ~\|~ p(\mathbf{z}|\mathbf{x})\big) = \int_\mathbf{z} q(\mathbf{z}|\mathbf{x}) \log \frac{q(\mathbf{z}|\mathbf{x})}{p(\mathbf{z}|\mathbf{x})} d\mathbf{z} \]

然而,直接最小化 KL 散度可能很困难,因为它涉及到对 \(p(\mathbf{z}|\mathbf{x})\) 的直接计算。变分下界提供了间接最小化 KL 散度的方法,通过最大化 KL 散度的下界。

我们考察两个后验概率分布的 KL 散度,得到:

\[\text{KL}(q(\mathbf{z}|\mathbf{x})~\|~p(\mathbf{z}|\mathbf{x})) = \log p(\mathbf{x}) + \text{KL}\big(q(\mathbf{z}|\mathbf{x})~||~p(\mathbf{z})\big) - \mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})} \big[\log p(\mathbf{x}|\mathbf{z})\big] \]

  • 该式的证明:按定义写一遍,然后只对概率分布 p 用贝叶斯公式变换一下, \(p(\mathbf{x},\mathbf{z})=p(\mathbf{z})p(\mathbf{x}|\mathbf{z})=p(\mathbf{x})p(\mathbf{z}|\mathbf{x})\) ,即可发现该式正确)

  • 贴一个证明:

  • \[\begin{aligned} &D_{\mathrm{KL}}(q_{\phi}(\mathbf{z}|\mathbf{x})\|p_{\theta}(\mathbf{z}|\mathbf{x})) \\ &=\int q_\phi(\mathbf{z}|\mathbf{x})\log\frac{q_\phi(\mathbf{z}|\mathbf{x})}{p_\theta(\mathbf{z}|\mathbf{x})}d\mathbf{z} \\ &=\int q_\phi(\mathbf{z}|\mathbf{x})\log\frac{q_\phi(\mathbf{z}|\mathbf{x})p_\theta(\mathbf{x})}{p_\theta(\mathbf{z},\mathbf{x})}d\mathbf{z}& ;\mathrm{Because~}p(z|x)=p(z,x)/p(x) \\ &=\int q_\phi(\mathbf{z}|\mathbf{x})\big(\log p_\theta(\mathbf{x})+\log\frac{q_\phi(\mathbf{z}|\mathbf{x})}{p_\theta(\mathbf{z},\mathbf{x})}\big)d\mathbf{z} \\ &=\log p_\theta(\mathbf{x})+\int q_\phi(\mathbf{z}|\mathbf{x})\log\frac{q_\phi(\mathbf{z}|\mathbf{x})}{p_\theta(\mathbf{z},\mathbf{x})}d\mathbf{z}& ;\mathrm{Because~}\int q(z|x)dz=1 \\ &=\log p_\theta(\mathbf{x})+\int q_\phi(\mathbf{z}|\mathbf{x})\log\frac{q_\phi(\mathbf{z}|\mathbf{x})}{p_\theta(\mathbf{x}|\mathbf{z})p_\theta(\mathbf{z})}d\mathbf{z}& ;\mathrm{Because~}p(z,x)=p(x|z)p(z) \\ &=\log p_\theta(\mathbf{x})+\mathbb{E}_{\mathbf{z}\sim q_\phi(\mathbf{z}|\mathbf{x})}[\log\frac{q_\phi(\mathbf{z}|\mathbf{x})}{p_\theta(\mathbf{z})}-\log p_\theta(\mathbf{x}|\mathbf{z})] \\ &=\log p_\theta(\mathbf{x})+D_{\mathrm{KL}}(q_\phi(\mathbf{z}|\mathbf{x})\|p_\theta(\mathbf{z}))-\mathbb{E}_{\mathbf{z}\sim q_\phi(\mathbf{z}|\mathbf{x})}\log p_\theta(\mathbf{x}|\mathbf{z}) \end{aligned} \]

现在,重新排列等式的左右两侧,得到

\[\log p(\mathbf{x}) - \text{KL}\big(q(\mathbf{z}|\mathbf{x})~\|~p(\mathbf{z}|\mathbf{x})\big) = \mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})} \big[\log p(\mathbf{x}|\mathbf{z})\big] - \text{KL}\big(q(\mathbf{z}|\mathbf{x})~\|~p(\mathbf{z})\big) \]

为了最小化 KL 散度,我们希望最大化 上式的 RHS 】:

  • 第一项,最大化 \(\mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})}[\log p(\mathbf{x}|\mathbf{z})]\) ,相当于最大化 \(p(\mathbf{x}|\mathbf{z})\) 的 log likelihood,希望学到变分分布 \(q(\mathbf{z}|\mathbf{x})\) ,使得在 \(\mathbf{z}\) 下生成的 \(\mathbf{x}\) ,更符合我们观测到的 \(\mathbf{x}\) 数据;
  • 第二项,最小化 \(\text{KL}(q(\mathbf{z|x})~\|~p(\mathbf{z}))\) ,意味着我们希望变分分布 \(q\) 尽可能接近先验分布 \(p(\mathbf{z})\),从而确保 变分分布不会偏离 我们对隐藏变量的先验知识。

在变分贝叶斯方法中,这种最大化的形式称为 ELBO。ELBO 名字里的 “lower bound” 是因为,RHS 中的第二项 KL 散度始终是非负的,因此 RHS 是 \(\mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})}[\log p(\mathbf{x}|\mathbf{z})]\) 的下界。

2.2 省流

如果我们想最小化 KL 散度:

\[\text{KL}\big(q(\mathbf{z}|\mathbf{x}) ~\|~ p(\mathbf{z}|\mathbf{x})\big) = \int_\mathbf{z} q(\mathbf{z}|\mathbf{x}) \log \frac{q(\mathbf{z}|\mathbf{x})}{p(\mathbf{z}|\mathbf{x})} d\mathbf{z} \]

那么可以把优化目标写成,最大化:

\[J = \mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})} \big[\log p(\mathbf{x}|\mathbf{z})\big] - \text{KL}\big(q(\mathbf{z}|\mathbf{x})~\|~p(\mathbf{z})\big) \]

即,设计 [-上式] 为损失函数。

其中,第一项:最大化样本点 x 的 log likelihood,第二项:最小化 z 分布与先验 p(z) 的 KL 散度。

03 ELBO 的应用:skill discovery、VAE

3.1 skill discovery 的 loss function

Skill discovery 是一种无 reward function 的 online RL 任务,它通过无监督的方法,学习一组覆盖状态空间的、具有明显差异的技能(skill)。

Policy 的形式: \(\pi(a|s,z)\) ,其中 z 代表一个 skill,策略基于这个 latent skill 来生成轨迹。

我们希望的策略,符合下面两个要求:

  • Predictable:各个 skill 下的 policy,不要都训成一样的;每个 skill 下的行为,可以被明显区分。
  • Diverse:所有 skill 下 policy 访问的状态,要尽可能覆盖整个状态空间。

为此,我们希望最大化 skill z 和 state s 的互信息 \(I(s;z)\) :

\[I(s;z)=\int_s\int_z p(s,z)\log\frac{p(s,z)}{p(s)p(z)} \\ =H(z)-H(z|s)=H(s)-H(s;z) \\ =H(s)+H(z)-H(s,z) \]

其中 H 是熵,定义为 \(H(x) = -\int_x p(x)\log p(x)dx\) 。

我们介绍一下互信息(Mutual Information,MI)。

  • 性质:
    • 对称性, \(I(s;z)=I(z;s)\) ;
    • 非负性, \(I(s;z)\ge 0\),等于 0 当且仅当 s z 独立。
  • 上面公式 10 的几个等号,把熵的公式带进去 就能得到。
  • 当两个分布完全相同 完全不独立时,貌似 \(I(s;z)\) 取到最大值,最大值为 \(H(s)=H(z)\)。

怎么最大化互信息呢?

我们从最大化 \(I(s;z)=H(z)-H(z|s)\) 或 \(I(s;z)=H(s)-H(s;z)\) 的形式入手。具体的,

  • Reverse MI:
    • 最大化 \(I(s;z)=H(z)-H(z|s)\),被称为 Reverse MI(相关文章:Diversity is all you need)。
    • 其中,第一项最大化 \(H(z)\),鼓励学到多样的 skill;
    • 第二项最小化 \(H(z | s)\),希望看到 state 就推断出 skill。
    • 多说一句,Diversity is all you need 的主要贡献之一,貌似是这里还会最大化 \(H[a|s,z]\) ,最大化给定 skill 后的策略的熵,旨在鼓励 diversity。
  • Forward MI:
    • 最大化 \(I(s;z)=H(s)-H(s|z)\),被称为 Forward MI,一般用于 model-based RL(相关文章:Dynamics-Aware Unsupervised Discovery of Skills)。
    • 其中,第一项最大化 \(H(s)\),鼓励学到多样的 state;
    • 第二项最小化 \(H(s | z)\),鼓励通过 state 和 z 推断出 state',这貌似是 model-based RL 学 env model 的一个魔改。

对于 reverse MI(Diversity is all you need),现在我们要最小化 \(H(z | s)\) 了。

  • 因此,对于后验分布 \(p(z|{x})\) ,我们需要搞一个参数化的近似分布 \(q_\phi({z}|{x})\) 。
  • (然后就使用 ELBO 嘛?DIAYN 好像原文不是这样写的,没细看,我也不太清楚了

    标签:phi,mathbf,log,big,ELBO,变分,散度,KL
    From: https://www.cnblogs.com/moonout/p/18263752

相关文章

  • 养猪大户必备!教你用ModelBox开发一个AI数猪应用
    本文分享自华为云社区《ModelBox-视频应用开发:AI智能数猪【玩转华为云】》,作者:阳光大猫。一、准备环境ModelBox端云协同AI开发套件(Windows)环境准备【ModelArts+ModelBox端云协同AI应用开发实训课程】二、应用开发1.创建工程在ModelBox sdk目录下使用create.bat创建yolov7......
  • 快速识别你家的猫猫狗狗,教你用ModelBox开发AI萌宠应用
    本文分享自华为云社区《ModelBox-AI应用开发:动物目标检测【玩转华为云】》,作者:阳光大猫。一、准备环境ModelBox端云协同AI开发套件(Windows)环境准备【视频教程】二、应用开发1.创建工程在ModelBox sdk目录下使用create.bat创建yolov7_pet工程(tensorflow)PSD:\modelbox-......
  • 2021新书Python程序设计 人工智能案例实践 Python编程人工智能基本描述统计集中趋势和
    书:pan.baidu.com/s/1owku2NBxL7GdW59zEi20AA?pwd=suov​提取码:suov我的阅读笔记:图像识别:使用深度学习框架(如TensorFlow、PyTorch)创建图像分类模型。探索迁移学习,使用预训练模型进行定制。自然语言处理(NLP):构建一个情感分析模型,用于分析文本中的情感。实现一个文本生成模型,......
  • PPO-KL散度近端策略优化玩cartpole游戏
     其实KL散度在这个游戏里的作用不大,游戏的action比较简单,不像LM里的action是一个很大的向量,可以直接用surr1,最大化surr1,实验测试确实是这样,而且KL的系数不能给太大,否则惩罚力度太大,actionmodel和refmodel产生的action其实分布的差距并不太大 importgymimporttorchimp......
  • Chrome OS折腾小记 2024(PIxelbook go)
    真文韵输入法解决双拼下载并安装真文韵输入法插件配置真文韵输入法网页进入:chrome-extension://ppgpjbgimfloenilfemmcejiiokelkni/options.html或者右键插件选择“选项”进入在该页面,下载自己的输入法在chromeOS设置添加输入法->选择真文韵输入法......
  • PixelBook go刷回Chrome OS 小记(无备份BIOS恢复BIOS+刷回chrome os)
    参考主要看这两篇文章即可文章A:HowtoRestoreaChromebook’sOriginalBIOS文章B:chromebook恢复bios及刷回chromeos教程特别感谢网站(跪谢):MrChromeboxoverview先说现在系统的状态:第三方bios+Win11接下来需要进行的步骤,大概分为三步:安装/引导fydeos恢复原版bios用......
  • 小论文随便发,最新算法!变分模态分解+霜冰算法优化+LSTM时间序列预测(附matlab代码实现)
     专题推荐:论文推荐,代码分享,视角(点击即可跳转)所有链接建议使用电脑端打开,手机端打开较慢【代码推荐购买指南】电力系统运行优化与规划、时间序列预测、回归分类预测matlab代码公众号历史推文合集23.3.21(电力系统前沿视角/预测和优化方向matlab代码/电力系统优秀论文推荐......
  • 【前置知识】散度、梯度、旋度及其衍生
    在CFD理论研究中,以下的算符是不得不品的基础。下文整理在笛卡尔坐标系下,散度、梯度、旋度等一系列物理量。目录倒三角算符一阶梯度散度旋度二阶梯度的散度​编辑拉普拉斯算符散度的梯度爱因斯坦求和约定倒三角算符倒三角算符,称为nabla,哈密顿算子,又可称为del。......
  • 快速了解 变分自编码器 VAE
    概述变分自编码器(VariationalAuto-Encoders,VAE)是自编码器AE的变体,由Kingma等人于2014年提出的生成式网络结构。以概率的方式描述潜在空间,在数据生成方面潜力巨大。自编码器AE自编码器(Auto-Encoder,AE),是一种无监督式学习模型。它可以将输入\(X\)映射为数据量小得多的潜......
  • EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融
    EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab)目录EI级!高创新原创未发表!VMD-TCN-BiGRU-MATT变分模态分解卷积神经网络双向门控循环单元融合多头注意力机制多变量时间序列预测(Matlab)预测......