Applied Stochastic Differential Equations 抄书
🚧 抄书之前 现在Diffusion Model一帮大佬们都在从SDE的视角看待这个东西, 因此有必要补充一下SDE的相关知识, 这个文章就是笔者为了避免读书睡着进行的一个书的抄 主要内容 首先我们来进行一个目录的抄, 我们从第四章开始: 第二章线性常微分方程的解法 伊藤积分和SDE 概率分布和SDEs的一些统计量 LinearSDEs的一些统计量 SDEs的一些有用的定理和公式 SDEs的数值模拟 NonlinearSDEs的一些近似 滤波和光滑化的理论 SDE模型的参数估计 SDE在Machine Learning中的应用 计划两周内把这本书的内容学抄完 ODE的对SDE有借鉴意义的解法 我们考虑广义的线性常微分方程(General Linear Differential Equations)(齐次的): $$ \frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t}=\mathbf{F}(t) \mathbf{x}, \quad \mathbf{x}\left(t_{0}\right)=\text { given } $$ 我们定义$\mathbf{x}$的一个过渡矩阵transition matrix$\boldsymbol{\Psi}\left(t, t_{0}\right)$满足如下的性质 $$ \begin{aligned} \frac{\partial \boldsymbol{\Psi}(\tau, t)}{\partial \tau} &=\mathbf{F}(\tau) \boldsymbol{\Psi}(\tau, t), \\ \frac{\partial \boldsymbol{\Psi}(\tau, t)}{\partial t} &=-\boldsymbol{\Psi}(\tau, t) \mathbf{F}(t), \\ \boldsymbol{\Psi}(\tau, t) &=\boldsymbol{\Psi}(\tau, s) \boldsymbol{\Psi}(s, t) \\ \boldsymbol{\Psi}(t, \tau) &=\boldsymbol{\Psi}^{-1}(\tau, t) \\ \boldsymbol{\Psi}(t, t) &=\mathbf{I} \end{aligned} $$ 通常来说$\boldsymbol{\Psi}\left(t, t_{0}\right)$没有通用的闭形式. 如果我们有了齐次ODE的解了的话, 我们可以对非齐次的如下形式的方程: $$ \frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t}=\mathbf{F}(t) \mathbf{x}+\mathbf{L}(t) \mathbf{w}(t), \quad \mathbf{x}\left(t_{0}\right)=\text { given } $$ 有如下形式的解: $$ \mathbf{x}(t)=\boldsymbol{\Psi}\left(t, t_{0}\right) \mathbf{x}\left(t_{0}\right)+\int_{t_{0}}^{t} \boldsymbol{\Psi}(t, \tau) \mathbf{L}(\tau) \mathbf{w}(\tau) \mathrm{d} \tau $$ 这样形式的表达对于之后SDE的求解具有一定的借鉴意义. 伊藤积分和SDE 这一章里先从积分的角度看SDEs, 之后推出了针对SDE的伊藤积分,之后在导出了微分形式, 关键的伊藤公式, 最后讨论了Linear SDEs的解法. 形式上, 伊藤积分的自变量满足这样的微分形式: $$ \frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t}=\mathbf{f}(\mathbf{x}, t)+\mathbf{L}(\mathbf{x}, t) \mathbf{w}(t) $$ 我们对两侧做积分: $$ \mathbf{x}(t)-\mathbf{x}\left(t_{0}\right)=\int_{t_{0}}^{t} \mathbf{f}(\mathbf{x}(t), t) \mathrm{d} t+\int_{t_{0}}^{t} \mathbf{L}(\mathbf{x}(t), t) \mathbf{w}(t) \mathrm{d} t $$ 其中$\mathbf{w}(t)$是zero white Gaussian process.是一个几乎处处不连续的函数 我们考虑将$\mathbf{w}(t) \mathrm{d} t$写成布朗运动的形式$\mathrm{d} \mathbf{\beta}(t)$从而试图对第二项应用高级的Stieltjes 和 Lebesgue积分. 我们的有问题的积分形式上变为了 $$ \int_{t_{0}}^{t} \mathbf{L}(\mathbf{x}(t), t) \mathbf{w}(t) \mathrm{d} […]
Paper Reading: Analytic-DPM
🚧 Background 在之前的DDPM, DDIM的模型中, Backward Progress的方差都是固定的或者是有规律的数字, 本身没有被考虑进动态的Backward Progress中, 这篇文章用很深厚的功力告诉我们仅仅依赖于和之前一样的KL散度的Loss设计, 我们是可以推出Backward Progress的分析上的最优的条件期望和方差的, 接下来这篇博客将会直接进行一个论文的抄. Basic Knowledge 首先我们关注DDIM文章中对扩散模型的一个扩充的形式 $$ \begin{aligned} &q_{\lambda}\left(\boldsymbol{x}_{1: N} \mid \boldsymbol{x}_{0}\right)=q_{\lambda}\left(\boldsymbol{x}_{N} \mid \boldsymbol{x}_{0}\right) \prod_{n=2}^{N} q_{\lambda}\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{n}, \boldsymbol{x}_{0}\right) \\ &q_{\lambda}\left(\boldsymbol{x}_{N} \mid \boldsymbol{x}_{0}\right)=\mathcal{N}\left(\boldsymbol{x}_{N} \mid \sqrt{\bar{\alpha}} \boldsymbol{x}_{0}, \bar{\beta}_{N} \boldsymbol{I}\right) \\ &q_{\lambda}\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{n}, \boldsymbol{x}_{0}\right)=\mathcal{N}\left(\boldsymbol{x}_{n-1} \mid \tilde{\boldsymbol{\mu}}_{n}\left(\boldsymbol{x}_{n}, \boldsymbol{x}_{0}\right), \lambda_{n}^{2} \boldsymbol{I}\right) \\ &\tilde{\boldsymbol{\mu}}_{n}\left(\boldsymbol{x}_{n}, \boldsymbol{x}_{0}\right)=\sqrt{\bar{\alpha}_{n-1}} \boldsymbol{x}_{0}+\sqrt{\bar{\beta}_{n-1}-\lambda_{n}^{2}} \cdot \frac{\boldsymbol{x}_{n}-\sqrt{\bar{\alpha}_{n}} \boldsymbol{x}_{0}}{\sqrt{\bar{\beta}_{n}}} \end{aligned} $$ 并且上述形式是基于保证如下的分布形式所设计出来的 $$ q_{\lambda}\left(\boldsymbol{x}_{n} \mid \boldsymbol{x}_{0}\right)=\mathcal{N}\left(\boldsymbol{x}_{n} \mid \sqrt{\bar{\alpha}_{n}} \boldsymbol{x}_{0}, \bar{\beta}_{n} \boldsymbol{I}\right) $$ 其中$ \bar{\alpha}_{n}:=\prod_{i=1}^{n} \alpha_{i}$, 并且$\bar{\beta}_{n}:=1-\bar{\alpha}_{n}$. 熟悉相关数学形式的同学也很容易知道DDPM是上述形式中$\lambda_{n}^{2}=\tilde{\beta}_{n}$, $\tilde{\beta}_{n}:=\frac{\bar{\beta}_{n-1}}{\bar{\beta}_{n}} \beta_{n}$的特例, 此时Forward Progress可以是马尔科夫的. 而当$\lambda_{n}^{2}=0$时, 就是DDIM模型 虽然正向过程未必是马尔科夫过程了, 但我们依旧假设我们的Reverse Progress是Markov的(或者说我们假设我们能够拿到一个不准的$x_0$), 我们建了一个神经网络去学习这样的Reverse Progress, 从终态的标准高斯分布$p\left(\boldsymbol{x}_{N}\right)=\mathcal{N}\left(\boldsymbol{x}_{N} \mid \mathbf{0}, \boldsymbol{I}\right)$ 出发: $$p\left(\boldsymbol{x}_{0: N}\right)=p\left(\boldsymbol{x}_{N}\right) \prod_{n=1}^{N} p\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{n}\right), \quad p\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{n}\right)=\mathcal{N}\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{\mu}_{n}\left(\boldsymbol{x}_{n}\right), \sigma_{n}^{2} \boldsymbol{I}\right)$$ 在之前的理论中, 我们仅考虑神经网络去拟合均值, 用一个预测噪声的网络, 或者说是Score-based model $\boldsymbol{s}_n(\boldsymbol{x}_n)$来表示这样的均值: $$ \boldsymbol{\mu}_{n}\left(\boldsymbol{x}_{n}\right)=\tilde{\boldsymbol{\mu}}_{n}\left(\boldsymbol{x}_{n}, \frac{1}{\sqrt{\bar{\alpha}_{n}}}\left(\boldsymbol{x}_{n}+\bar{\beta}_{n} \boldsymbol{s}_{n}\left(\boldsymbol{x}_{n}\right)\right)\right) $$ 训练的Loss由ELBo表示, 经过简单的推到有如下的形式: $$ L_{\mathrm{vb}}=\mathbb{E}_{q}\left[-\log p\left(\boldsymbol{x}_{0} \mid \boldsymbol{x}_{1}\right)+\sum_{n=2}^{N} D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{0}, \boldsymbol{x}_{n}\right) \| p\left(\boldsymbol{x}_{n-1} \mid \boldsymbol{x}_{n}\right)\right)+D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{N} \mid \boldsymbol{x}_{0}\right) \| p\left(\boldsymbol{x}_{N}\right)\right)\right] $$ 而Yang Song等人实际上是直接对比的Forward Progress和Reverse Progress联合分布的KL散度, 事实上这两者是等价的: $$ \min _{\left\{\boldsymbol{\mu}_{n}, \sigma_{n}^{2}\right\}_{n=1}^{N}} L_{\mathrm{vb}} \Leftrightarrow \min _{\left\{\boldsymbol{\mu}_{n}, \sigma_{n}^{2}\right\}_{n=1}^{N}} D_{\mathrm{KL}}\left(q\left(\boldsymbol{x}_{0: N}\right) \| […]
大哥抽代
🚧 Background 由于本科学的抽代和现在学的都是中文授课的内容,因此在这篇文章中我将搞一搞中英对照,同时希望抄一抄定义可以让自己记得更加清楚一点. Group 这部分的定义和定理都比较多, 因为给定的东西比较少, 本身Group的理论用很少的东西构建起这么多的东西就很神奇, 因此这部分也比较复杂, 一些定理我也计划抄一下证明. Basic Definition 设$G$是一个非空集合, 在$G$上定义了一个二元运算$\cdot$满足 封闭律: $ \forall a, b \in G, a \cdot b \in G$ 结合律: $\forall a, b, c \in G, (a\cdot b)\cdot c = a\cdot (b\cdot c)$ 幺元: $\exists e \in G, \forall a \in G, ea = ae = a$ 逆元: $\forall a \in G, \exists a^{-1} \in G, aa^{-1} = a^{-1} a = e$ 交换律: $\forall a, b \in G, ab=ba$ 定义: 半群(semigroup): 设G是一个非空集合, 满足上面的1, 2 定义:含幺半群(monoid): 设G是一个非空集合, 满足上面的1, 2, 3 定义: 群(group): 设G是一个非空集合, 满足上面的1, 2, 3, 4 定义: 可换群, 交换群, 阿贝尔群(abelian group, commutative group): 设G是一个非空集合, 满足上面的1, 2, 3, 4, 5 定义: 群的阶(order): 群元素的个数 定义:左单位元(left identity)和右单位元(right identity)在半群 left identity: 元素$e_L$, $\forall a \in G, e_L a = a$. right identity: 元素$e_R$, $\forall a \in G, a e_R = a$. 定理: 若半群同时有左单位元和右单位元, 则他们相等, 且是唯一的单位元 定义: 左逆元(left inverse)和右逆元(right inverse)在含幺半群 left inverse: 若存在$a_L^{-1}$使得$a_L^{-1}a = e$ right inverse: 若存在$a_R^{-1}$使得$aa_R^{-1} = […]
Diffusion Model & Conditional Diffusion Model
UPD 4.24.2022 最近朱军老师实验室Fan Bao等人进一步推进了理论结果,在优化时考虑了方差并给出了分析的结果 Background 其实diffusion model也在很久之前就出现了,我在Generative Model Roadmap这篇文章中也有简单的介绍,最近又被大家翻出来,这篇文章我将介绍一下Diffusion Model的数学形式以及最近出现的Conditional Diffusion Model。其中的相当一部分内容抄自Lilian Weng的一篇博客,其中的一些计算也加入了我自己的理解。 Unconditional Diffusion Model Diffusion Model 事实上是一个正向的Markov过程,我们将从严格定义的正向过程出发,展示我们如何将一个数据集映射到标准高斯分布,以及推导出从标准高斯分布映射回原始数据集的逆向过程,当然其中有不可计算的东西,当然由万能的神经网络来完成这最后一块拼图。 Forward process 我们有一个随机变量$\mathbf{x}_{0} \sim q(\mathbf{x_o})$来表征一个数据集所代表的连续化的分布,我们将x考虑为离散的Markov过程,并且有这样的条件分布,这些条件分布的参数将由$\beta_t$完全表示 $$ q\left(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_{t} ; \sqrt{1-\beta_{t}} \mathbf{x}_{t-1}, \beta_{t} \mathbf{I}\right) \quad q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)=\prod_{t=1}^{T} q\left(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}\right) $$ 这么明显的服从高斯分布的独立增量可以让我们轻易地构造出一个布朗运动,并将离散的随机过程$\frac{x_t}{\sqrt{\bar{\alpha}_{t}}}$嵌入到该布朗运动中。 并且由于高斯分布的特性,我们可以直接从$x_0$得到$x_t$的分布,其中$\alpha_{t}:=1-\beta_{t}$,$\bar{\alpha}_{t}:=\prod_{s=0}^{t} \alpha_{s}$ \begin{equation} q\left(\mathbf{x}_{t} \mid \mathbf{x}_{0}\right)=\mathcal{N}\left(\mathbf{x}_{t} ; \sqrt{\bar{\alpha}_{t}} \mathbf{x}_{0},\left(1-\bar{\alpha}_{t}\right) \mathbf{I}\right) \end{equation} Reverse Progress 首先我们观察正向过程的最后一个公式,可以看出其均值是递减的,方差是递增的,很容易选择合适的条件让$q\left(\mathbf{x}_{t} \mid \mathbf{x}_{0}\right)$变成标准高斯分布,进而对$x_0$的积分变得Trivial,也就是$q(x_t)$也是标准高斯分布。注意到当$\beta_t$足够小时,$q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)$也是可以被当做高斯分布的,但是我们很难轻松地得到显示表达式,因为这需要我们对$x_0$做积分,因此我们考虑去学习一个模型$p_\theta$来去近似这样的Reverse过程的条件分布,进而我们可以从标准高斯分布来生成原始数据啦。 \begin{equation} p_{\theta}\left(\mathbf{x}_{0: T}\right)=p\left(\mathbf{x}_{T}\right) \prod_{t=1}^{T} p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right) \quad p_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_{\theta}\left(\mathbf{x}_{t}, t\right), \mathbf{\Sigma}_{\theta}\left(\mathbf{x}_{t}, t\right)\right) \end{equation} 注意到我们之前说了$x_t$是可以嵌入到一个布朗运动的,熟悉布朗运动的读者可以轻松地根据布朗运动关于两端中间某一时刻的条件分布仍然是高斯分布可以轻松得到(当然记不住结论的话也可以在明确了是高斯分布之后根据Lilian Weng的方法配方得到均值和方差) \begin{equation} \begin{aligned} \tilde{\mu}_{t}\left(x_{t}, x_{0}\right) &:=\frac{\sqrt{\bar{\alpha}_{t-1}} \beta_{t}}{1-\bar{\alpha}_{t}} x_{0}+\frac{\sqrt{\alpha_{t}}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} x_{t} \\ \tilde{\beta}_{t} &:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}} \beta_{t} \\ q\left(x_{t-1} \mid x_{t}, x_{0}\right) &=\mathcal{N}\left(x_{t-1} ; \tilde{\mu}\left(x_{t}, x_{0}\right), \tilde{\beta}_{t} \mathbf{I}\right) \end{aligned} \end{equation} 又注意到我们可以设从$x_o$生成$x_t$的增量对应的随机变量为$z_t$,进而消掉$x_o$,我们的均值变为 \begin{equation} \begin{aligned} \tilde{\boldsymbol{\mu}}_{t} \left(x_{t}, x_{0}\right) &=\frac{\sqrt{\alpha_{t}}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} \mathbf{x}_{t}+\frac{\sqrt{\bar{\alpha}_{t-1}} \beta_{t}}{1-\bar{\alpha}_{t}} \frac{1}{\sqrt{\bar{\alpha}_{t}}}\left(\mathbf{x}_{t}-\sqrt{1-\bar{\alpha}_{t}} \mathbf{z}_{t}\right) \\ &=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathrm{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \mathbb{z}_{t}\right) \end{aligned} \end{equation} 之后就是关于训练的Loss了,由于我们无法直接优化log likelihood,我们可以抄一下VAE的变分下界, \begin{equation} \begin{aligned} -\log p_{\theta}\left(\mathbf{x}_{0}\right) & \leq-\log p_{\theta}\left(\mathbf{x}_{0}\right)+D_{\mathrm{KL}}\left(q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right) \| p_{\theta}\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)\right) \\ &=-\log p_{\theta}\left(\mathbf{x}_{0}\right)+\mathbb{E}_{\mathbf{x}_{1: T} \sim q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_{0}\right)}\left[\log \frac{q\left(\mathbf{x}_{1: T} \mid […]
Paper Reading: InsetGAN for Full-Body Image Generation
Conflicts 作者argue说,面对表现出复杂变化的类别,用GAN创建高分辨的图像生成结果相当困难,那么如何生成高分辨(1024×1024)的结果呢?有两种naive的想法: 一种是将图像分块,用GAN来依次生成他们,但是在图像的各个部分耦合性高时不适合。 另一种是使用高质量的数据训练高质量的模型。这样的任务相当昂贵,暂时还没有。 于是作者声称自己的InsetGAN解决了上述的问题。让我们看看作者提出的InsetGAN是怎么实现的吧。 Model 模型的Pipeline: 这篇文章的大体idea是造两个生成器分别用于生成身体的图片和脸部的图片,之后通过单独生成后在身体图片上检索到头部,然后将生成的脸部图像嵌入进去,再在两个生成器的输入空间中检索出使得两部分无缝衔接的结果,作者提出了只搜索人脸空间和两个空间都搜索的方法。 读到这里其实最大的一个问题是在身体的隐层表示改变时,人脸的位置会变化,此时需要重新对齐人脸嵌入的位置。 总的来说,我们要想办法令生成的人脸$\mathcal{G}_{B}\left(\mathbf{w}_{B}\right)$和生成的人体$\mathcal{G}_{A}\left(\mathbf{w}_{A}\right)$中的部分尽量对齐,我们表示为如下的一个抽象的loss: \begin{equation} \min _{\mathbf{w}_{A}, \mathbf{w}_{B}} \int_{\Omega} \mathcal{L}\left(\mathcal{G}_{A}\left(\mathbf{w}_{A}\right), \mathcal{G}_{B}\left(\mathbf{w}_{B}\right)\right) \end{equation} 该loss的最终实现将包括如下的几个部分: 区域$\mathcal{B}\left(I_{A}\right)$内下采样后的像素级Loss和感知Loss,让$w_A$和$w_B$的匹配合理 \begin{equation} L_{\text {coarse }}:=\lambda_{1} L_{1}\left(I_{A}^{\downarrow}, I_{B}^{\downarrow}\right)+\lambda_{2} L_{\text {lpips }}\left(I_{A}^{\downarrow}, I_{B}^{\downarrow}\right) \end{equation} 区域$\mathcal{B}\left(I_{A}\right)$内的边界Loss,依然包括像素Loss和感知Loss,让$w_A$和$w_B$的匹配合理 \begin{equation} \begin{aligned} L_{\text {border }}:=& \lambda_{3} L_{1}\left(\mathcal{E}_{8}\left(\mathcal{B}\left(I_{A}\right)\right), \mathcal{E}_{8}\left(I_{B}\right)\right)+\\ & \lambda_{4} L_{\text {lpips }}\left(\mathcal{E}_{8}\left(\mathcal{B}\left(I_{A}\right)\right), \mathcal{E}_{8}\left(I_{B}\right)\right) \end{aligned} \end{equation} 一些正则化项: \begin{equation} L_{r e g}:=\lambda_{r 1}\left\|\mathbf{w}^{*}-\mathbf{w}_{\text {avg }}\right\|+\lambda_{r 2} \sum_{i}\left\|\delta_{i}\right\| \end{equation} $\mathcal{B}\left(I_{A}\right)$区域外的区域$R^{O}\left(I_{A}\right)$ $w_A$和给定身体图像的像素Loss和感知Loss,仅包对$w_A$的优化,让$w_A$靠近指定的身体图像 \begin{equation} \begin{aligned} L_{\text {body }}:=& \lambda_{5} L_{1}\left(R^{O}\left(I_{A}\right), R^{O}\left(I_{r e f}\right)\right)+\\ & \lambda_{6} L_{l p i p s}\left(R^{O}\left(I_{A}\right), R^{O}\left(I_{r e f}\right)\right) \end{aligned} \end{equation} $R^{O}\left(I_{A}\right)$内部的 $w_B$和给定的人脸图像的像素Loss和感知Loss,仅包含对$w_B$的优化,让$w_B$靠近指定的人脸 \begin{equation} \begin{aligned} L_{\text {face }}:=& \lambda_{7} L_{1}\left(R^{I}\left(I_{B}\right), R^{I}\left(I_{\text {ref }}\right)\right)+\\ & \lambda_{8} L_{l p i p s}\left(R^{I}\left(I_{B}\right), R^{I}\left(I_{r e f}\right)\right) \end{aligned} \end{equation} 我们对上述的Loss进行排列组合便能得到想要的结果 当给定身体的图像时,我们仅对1,2的loss优化$w_B$就能生成人脸,但是有时候会有边界的不连续性,我们可以引入4来保证$w_A$在变动时和指定的身体图像差距不大,也就是使用1,2,3,4来同时优化$w_A$和$w_B$ 当给定人脸的图像时,也类似,我们使用1,2,3,5来同时优化$w_A$和$w_B$ 当给定人脸和身体的图像时,我们使用1,2,3,4,5来同时优化$w_A$和$w_B$ 思路很简单,关键是他们训出来了不错的结果。 原文link
Paper Reading: Auto-Encoding Variational Bayes
🚧 Problem Scenario 假设我们的数据集$X$包含N个i.i.d.的,从某个连续或者离散分布采样出来的样本。我们记对应的随机变量为$x$。但是如果我们只知道这些后验分布的采样结果,我们很难去分析它们,因此我们不妨设出它的先验为$z$。那么我们有这样的一个生成过程: 首先从一个先验分布$p_{\theta^*}(z)$中采样得到$z^{(i)}$ 然后从一个给定$z=z^{(i)}$的条件分布$p_{\theta^*}(x|z)$中得到$x^{(i)}$ 其中的$p_{\theta^*}(z)$和$p_{\theta^*}(x|z)$服从参数族分布$p_{\theta}(z)$和$p_{\theta}(x|z)$ 这篇文章针对这样的一个对只有后验分布数据引入了某种未知先验的建模, 提出了一个对参数族分布中$\theta$的一个比较好的优化下界 给出了一个给定$\theta$时根据后验$x$推断$z$的有效近似 以及给出了最终$x$的边缘推断(也就是给出了$x$的分布函数,可以用于生成) 显然我们发现就算我们得知了$\theta$, 我们也很难轻松地得到这样的条件分布$p_\theta(z \mid x)$, 因此我们选择引入另外一个识别模型$q_\phi(z \mid x)$,我们声称$\phi$是变分参数而$\theta$是生成参数。 The variational bound 之后就要介绍这篇文章最早应用的变分下界的公式了 当然我们要优化的是log likelihood,其中的每一项我们将雨$\phi$相关的KL散度单独拉出来: \begin{equation} \log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right)=D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)\right)+\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right) \end{equation} 由于KL散度非负,我们我们整理一下KL散度之外的部分,显然$\mathcal{L}$是log likelihood的下界: \begin{equation} \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\phi}(\mathbf{z} \mid \mathbf{x})}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}\right)-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{z}\mid \mathbf{x})\right] \end{equation} 我们合并一下很容易得到如下的表达式: \begin{equation} \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\phi}(\mathbf{z} \mid \mathbf{x})}\left[-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right] \end{equation} 又由于通常来说我们会选取漂亮的$p_\theta(\mathbf{z})$,因此我们很乐意单独把与它相关的KL散度单独拉出来,我们就有第二个重要的表达式 \begin{equation} \mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=-D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}(\mathbf{z})\right)+\mathbb{E}_{q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)} \mid \mathbf{z}\right)\right] \end{equation} 之后作者将基于这两种形式给出两种算法。 我们先看为什么这个变分下界怎么去优化。考虑我们常用的蒙特卡洛梯度估计的方法: $$ \nabla_{\phi} \mathbb{E}_{q_{\phi}(\mathbf{z})}[f(\mathbf{z})]=\mathbb{E}_{q_{\phi}(\mathbf{z})}\left[f(\mathbf{z}) \nabla_{\phi} \log q_{\phi}(\mathbf{z})\right] \\ =1 = \simeq \frac{1}{L} \sum_{l=1}^{L} f(\mathbf{z}) \nabla_{\phi} \log q_{\phi}\left(\mathbf{z}^{(l)}\right) $$
Math Toolbooks of Machine Learning Theory
🚧 Background 在看神经网络乃至机器学习相关的论文时,经常会遇到一些没见过的数学定义,笔者记忆力很差每次都是去查一查,这里做一下汇总。 分布的KL散度和熵H的关系 $$H(q, p) = -\mathbb{E}_{q(\boldsymbol{x})} \log p(\boldsymbol{x})$$ 而 $$D_{KL}(q || p) = H(q, p) – H(q) = -\mathbb{E}_{q(\boldsymbol{x})} \log p(\boldsymbol{x}) + \mathbb{E}_{q(\boldsymbol{x})} \log q(\boldsymbol{x})$$