我们提供安全,免费的手游软件下载!
Kullback-Leibler (KL) 散度,是一种描述 一个概率分布 \(P\) 相对于另一个概率分布 \(Q\) 的非对称性差异的概念。
KL 散度是非负的;当且仅当两个分布相同时,它为零。
对于离散概率分布, \(P\) 和 \(Q\) 的 KL 散度定义为:
对于连续概率分布,定义为:
其中, \(p(\mathbf{x})\) 是 \(P\) 的概率密度函数, \(q(\mathbf{x})\) 是 \(Q\) 的概率密度函数。
在变分推断中,KL 散度用于衡量一个变分分布 \(q(\mathbf{z}|\mathbf{x})\) 与真实后验分布 \(p(\mathbf{z}|\mathbf{x})\) 之间的差异,即:
通过最小化这个差异,我们可以得到一个对后验分布 \(p(\mathbf{z}|\mathbf{x})\) 的良好近似。
然而,直接最小化 KL 散度可能很困难,因为它涉及到对真实后验分布 \(p(\mathbf{z}|\mathbf{x})\) 的直接计算。变分下界(如 ELBO)提供了一种通过下界来间接最小化 KL 散度的方法,使得优化过程更加可行。
变分下界(Variational Lower Bound)是变分推断中的一个概念。在复杂概率模型中,ELBO 用于近似难以直接计算的量,如互信息或其他后验分布。
在变分推断中,我们通常有一个复杂的概率模型,它包含观测数据 \(\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 散度:
然而,直接最小化 KL 散度可能很困难,因为它涉及到对 \(p(\mathbf{z}|\mathbf{x})\) 的直接计算。变分下界提供了间接最小化 KL 散度的方法,通过最大化 KL 散度的下界。
我们考察两个后验概率分布的 KL 散度,得到:
该式的证明:按定义写一遍,然后只对概率分布 p 用贝叶斯公式变换一下, \(p(\mathbf{x},\mathbf{z})=p(\mathbf{z})p(\mathbf{x}|\mathbf{z})=p(\mathbf{x})p(\mathbf{z}|\mathbf{x})\) ,即可发现该式正确)
贴一个证明:
现在,重新排列等式的左右两侧,得到
【 为了最小化 KL 散度,我们希望最大化 上式的 RHS 】:
在变分贝叶斯方法中,这种最大化的形式称为 ELBO。ELBO 名字里的 “lower bound” 是因为,RHS 中的第二项 KL 散度始终是非负的,因此 RHS 是 \(\mathbb{E}_{\mathbf{z}\sim q(\mathbf{z}|\mathbf{x})}[\log p(\mathbf{x}|\mathbf{z})]\) 的下界。
如果我们想最小化 KL 散度:
那么可以把优化目标写成,最大化:
即,设计 [-上式] 为损失函数。
其中,第一项:最大化样本点 x 的 log likelihood,第二项:最小化 z 分布与先验 p(z) 的 KL 散度。
Skill discovery 是一种无 reward function 的 online RL 任务,它通过无监督的方法,学习一组覆盖状态空间的、具有明显差异的技能(skill)。
Policy 的形式: \(\pi(a|s,z)\) ,其中 z 代表一个 skill,策略基于这个 latent skill 来生成轨迹。
我们希望的策略,符合下面两个要求:
为此,我们希望最大化 skill z 和 state s 的互信息 \(I(s;z)\) :
其中 H 是熵,定义为 \(H(x) = -\int_x p(x)\log p(x)dx\) 。
我们介绍一下互信息(Mutual Information,MI)。
怎么最大化互信息呢?
我们从最大化 \(I(s;z)=H(z)-H(z|s)\) 或 \(I(s;z)=H(s)-H(s;z)\) 的形式入手。具体的,
对于 reverse MI(Diversity is all you need),现在我们要最小化 \(H(z | s)\) 了。
Autoencoder:核心思想是使用一个沙漏型网络,尽可能无损地 把大的数据(如图片)压缩到一个更小的 embedding 里,其损失函数是 MSE[原图片, 基于 embedding 复原的图片]。
VAE:是一种生成模型,它可以基于一些 latent 来生成数据,比如给一些自然语言的描述 来生成图片,或给一张图片 生成相似的图片。(diffusion 也是著名的生成模型)
VAE 跟 autoencoder 的思想不尽相同;对于一个输入图片 \(\mathbf{x}\) ,它不想把图片映射到一个固定的 embedding 向量 \(\mathbf{z}\) ,而是将其映射到一个分布 \(p(\mathbf{z}|\mathbf{x})\) 中。
VAE 的组成部分:
VAE 的损失函数:
参考资料 / 博客:
相关资讯
热门资讯