DDIM
开始学习一些扩散模型的加速采样算法
- -这里的加速采样主要是reverse -process中不用逐步进行概率的transformation
-回顾之前的要逼近的概率分布:
-$p(x_{t-1}|x_t,{}) = $
+DDIM
开始学习一些扩散模型的加速采样算法
+ +这里的加速采样主要是reverse +process中不用逐步进行概率的transformation
+回顾之前的要逼近的概率分布:
+$p(x_{t-1}|x_t,{}) = $
Like this article? Support the author with
Comments
-DDPM
这一章要开始讲DDPM了
- -离散扩散和VAE
-表面上看DDPM和VAE很类似?
-VAE的loss写作
-\(\mathcal{L}(\theta, \phi; x, z) = -\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) \| -p(z))\)
-包含KL loss和reconstruction loss
-VAE是把图像编码到高斯噪声(KL -loss),再从高斯噪声解码到图像(重建loss)
-但是VAE本质上是属于高斯混合模型,如果可以的话,这个模型也想采样更复杂的z!(详细理解可以看之前的VAE文章)
-而DDPM主要是定义了一个transformation,这个transformation是一条langvein -MCMC,能把输入的随机变量真正变到高斯分布,这个离散过程对应着一个SDE,然后逆向过程也对应着一个逆SDE,这个逆向SDE以类似的方式收敛到图像分布,从而能够在逆向阶段(reverse -process)产生图像样本(sample )
-DDPM的最大的优点在哪呢?我不需要去考虑这个复杂的后验分布\(p(z|x)\)了,因为我直接变换到一个简单的分布,并且全部专注在如何做生成上,当然缺点也有,这个简单分布不像后验分布一样具有表征(representation -learning)的意义
-如何理解离散扩散
-DPM的原理是,定义了一条马尔科夫链:
-马尔科夫链的角度看联合分布,联合分布等于链开始的节点概率乘一堆条件概率,
-\(q(x^{(0...T)}) = q(x^{(0)}) \prod_{t=1}^T -q(x^{(t)}|x^{(t-1)})\)
-对连续扩散过程而言,step size足够小的时候,\(q(x^{(t)}|x^{(t-1)})\)作为转移核,当转移核是高斯分布时,该马尔科夫链的稳态分布也是高斯分布
-当然这些说的都是概率,我们更关心的是样本
-DPM运用的前向概率transformation和反向产生样本的方法是祖先采样:即利用前一次采样结果的分布数据来生成这一次的采样结果,走完这条马尔科夫链就是采样出最终的数据分布。
-这里参考1的推导
-\(\begin{aligned} -q(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) -&= q(\mathbf{x}_t \vert \mathbf{x}_{t-1}, \mathbf{x}_0) \frac{ -q(\mathbf{x}_{t-1} \vert \mathbf{x}_0) }{ q(\mathbf{x}_t \vert -\mathbf{x}_0) } \\ -&\propto \exp \Big(-\frac{1}{2} \big(\frac{(\mathbf{x}_t - -\sqrt{\alpha_t} \mathbf{x}_{t-1})^2}{\beta_t} + \frac{(\mathbf{x}_{t-1} -- \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0)^2}{1-\bar{\alpha}_{t-1}} - -\frac{(\mathbf{x}_t - \sqrt{\bar{\alpha}_t} -\mathbf{x}_0)^2}{1-\bar{\alpha}_t} \big) \Big) \\ -&= \exp \Big(-\frac{1}{2} \big(\frac{\mathbf{x}_t^2 - -2\sqrt{\alpha_t} \mathbf{x}_t \color{blue}{\mathbf{x}_{t-1}} -\color{black}{+ \alpha_t} \color{red}{\mathbf{x}_{t-1}^2} }{\beta_t} + -\frac{ \color{red}{\mathbf{x}_{t-1}^2} \color{black}{- 2 -\sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0} \color{blue}{\mathbf{x}_{t-1}} -\color{black}{+ \bar{\alpha}_{t-1} -\mathbf{x}_0^2} }{1-\bar{\alpha}_{t-1}} - \frac{(\mathbf{x}_t - -\sqrt{\bar{\alpha}_t} \mathbf{x}_0)^2}{1-\bar{\alpha}_t} \big) \Big) \\ -&= \exp\Big( -\frac{1}{2} \big( -\color{red}{(\frac{\alpha_t}{\beta_t} + \frac{1}{1 - -\bar{\alpha}_{t-1}})} \mathbf{x}_{t-1}^2 - -\color{blue}{(\frac{2\sqrt{\alpha_t}}{\beta_t} \mathbf{x}_t + -\frac{2\sqrt{\bar{\alpha}_{t-1}}}{1 - \bar{\alpha}_{t-1}} \mathbf{x}_0)} -\mathbf{x}_{t-1} \color{black}{ + C(\mathbf{x}_t, \mathbf{x}_0) \big) -\Big)} -\end{aligned}\)
-利用前向的\(p(x_t|x_0)\)的分布,预估出一个\(\mathbf{x}_0 = -\frac{1}{\sqrt{\bar{\alpha}_t}}(\mathbf{x}_t - \sqrt{1 - -\bar{\alpha}_t}\boldsymbol{\epsilon}_t)\)
-最终得到的参数化的目标为:\(\begin{aligned} -\boldsymbol{\mu}_\theta(\mathbf{x}_t, t) &= -\color{cyan}{\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - -\alpha_t}{\sqrt{1 - \bar{\alpha}_t}} -\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big)} \\ -\text{Thus }\mathbf{x}_{t-1} &= \mathcal{N}(\mathbf{x}_{t-1}; -\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - -\alpha_t}{\sqrt{1 - \bar{\alpha}_t}} -\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big), -\boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t)) -\end{aligned}\)
-推导的这里写的比较模糊,具体的可以详细看看参考[], -本文的重点是给出离散DDPM的动机以及直观解释。公式推导也不是难点☻
- -DDPM比DPM的改进点
-QA
---几个QA:
--
-- -
为什么学到了x_0到x_t的噪声不能用这个噪声直接得到原图??
-回答:因为本质上要做分布的transformation
-假设你手头现在就一张图片,加上噪声,送进网络学到了这个噪声,那你反向怎么做?直接减去这个噪声?这样的话你只是得到了原始的图像,但是并不是在做生成!真正的生成是要你从\(p(x_0|x_1)\)这个分布里采样,这个采样要怎么做?\(p(x_0|x_1) = -\frac{p(x_1|x_0)p(x_0)}{p(x_1)}\) ok \(p(x_0)\)我们不知道,没法做。用前面学到的噪声不是从这个分布采样,顶多是记住了前向加的噪声,能还原到原始的\(x_0\)那一个点,而不是分布里采样得到的
---
-- -
扩散模型加噪音改为渐变成纯色(纯黑或白、灰)还有效果吗
-变成纯黑或者纯白,意味着网络在生成的时候接受一样的输入,这样网络倾向于输出每个label的平均值(这样loss最小),生成效果会不好。 -从分布的映射角度思考会更好,最好输入是一个随机的分布,然后靠算法实现分布的transformation
---
-- 为什么reverse -process的时候不是学的单步噪声,为什么实际网络训练的时候直接学一个\(x_0\)到任意\(x_t\)的多样的的噪声
-学这个跨步噪声一方面公式推出来是这个样子,另一方面因为我们在计算时为了计算后验分布引入了\(x_0\)这个条件,不学单步噪声是因为没意义,我们要做的是分布的transformation。这里我们反复强调了分布的transformation,因为generative -Model最终的就是如何拟合概率和如何进行sample!
-
--一点民科的想法:
-去噪有点像在一个大的流形学习数据在哪里
- -图中黑色是加噪(往外走) 红色是往回走,是网络要学的部分
-而扩散更像是走路,在正向的基础上,反向的时候沿着某个梯度走
- -扩散真正训练起来和去噪非常像,加了各种尺度的噪声
-去噪加朗之万采样 <==> sm加朗之万采样 <=> 扩散模型
-虽然从扩散的角度其实是为了做 transform -,实现反向马尔可夫链每一步的采样,但是底层的逻辑还是去学那个数据梯度,这点 -sm 和去噪,扩散,跑着殊途同归
--
-- 判断一个生成模型的好坏,可以从以下三点看: -
--
- 采样是否迅速?
-- 模型生成结果的多样性是否充足?
-- 生成样本是否高质量?
-
下一篇会讲SDE视角下的连续时间扩散模型
-最后,多读读原论文和代码,"只接受二手知识就跟只抽二手烟差不多",而我这文章可能算是四手烟了都,看多了容易呛着
-参考:
-[1] -https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
-[2] Jascha Sohl-Dickstein, Eric A. Weiss, Niru Maheswaranathan, and -Surya Ganguli. Deep unsupervised learning using nonequilibrium -thermodynamics. 2015. arXiv:1503.03585
-[3] Calvin Luo. Understanding diffusion models: a unified -perspective. 2022. arXiv:2208.11970.
-[4] Jonathan Ho, Ajay Jain, and Pieter Abbeel. Denoising diffusion -probabilistic models. 2020. arXiv:2006.11239.
+DDPM
这一章要开始讲DDPM了
+ +离散扩散和VAE
+表面上看DDPM和VAE很类似?
+VAE的loss写作
+\(\mathcal{L}(\theta, \phi; x, z) = +\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) \| +p(z))\)
+包含KL loss和reconstruction loss
+VAE是把图像编码到高斯噪声(KL +loss),再从高斯噪声解码到图像(重建loss)
+但是VAE本质上是属于高斯混合模型,如果可以的话,这个模型也想采样更复杂的z!(详细理解可以看之前的VAE文章)
+而DDPM主要是定义了一个transformation,这个transformation是一条langvein +MCMC,能把输入的随机变量真正变到高斯分布,这个离散过程对应着一个SDE,然后逆向过程也对应着一个逆SDE,这个逆向SDE以类似的方式收敛到图像分布,从而能够在逆向阶段(reverse +process)产生图像样本(sample )
+DDPM的最大的优点在哪呢?我不需要去考虑这个复杂的后验分布\(p(z|x)\)了,因为我直接变换到一个简单的分布,并且全部专注在如何做生成上,当然缺点也有,这个简单分布不像后验分布一样具有表征(representation +learning)的意义
+如何理解离散扩散
+DPM的原理是,定义了一条马尔科夫链:
+马尔科夫链的角度看联合分布,联合分布等于链开始的节点概率乘一堆条件概率,
+\(q(x^{(0...T)}) = q(x^{(0)}) \prod_{t=1}^T +q(x^{(t)}|x^{(t-1)})\)
+对连续扩散过程而言,step size足够小的时候,\(q(x^{(t)}|x^{(t-1)})\)作为转移核,当转移核是高斯分布时,该马尔科夫链的稳态分布也是高斯分布
+当然这些说的都是概率,我们更关心的是样本
+DPM运用的前向概率transformation和反向产生样本的方法是祖先采样:即利用前一次采样结果的分布数据来生成这一次的采样结果,走完这条马尔科夫链就是采样出最终的数据分布。
+这里参考1的推导
+\(\begin{aligned} +q(\mathbf{x}_{t-1} \vert \mathbf{x}_t, \mathbf{x}_0) +&= q(\mathbf{x}_t \vert \mathbf{x}_{t-1}, \mathbf{x}_0) \frac{ +q(\mathbf{x}_{t-1} \vert \mathbf{x}_0) }{ q(\mathbf{x}_t \vert +\mathbf{x}_0) } \\ +&\propto \exp \Big(-\frac{1}{2} \big(\frac{(\mathbf{x}_t - +\sqrt{\alpha_t} \mathbf{x}_{t-1})^2}{\beta_t} + \frac{(\mathbf{x}_{t-1} +- \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0)^2}{1-\bar{\alpha}_{t-1}} - +\frac{(\mathbf{x}_t - \sqrt{\bar{\alpha}_t} +\mathbf{x}_0)^2}{1-\bar{\alpha}_t} \big) \Big) \\ +&= \exp \Big(-\frac{1}{2} \big(\frac{\mathbf{x}_t^2 - +2\sqrt{\alpha_t} \mathbf{x}_t \color{blue}{\mathbf{x}_{t-1}} +\color{black}{+ \alpha_t} \color{red}{\mathbf{x}_{t-1}^2} }{\beta_t} + +\frac{ \color{red}{\mathbf{x}_{t-1}^2} \color{black}{- 2 +\sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0} \color{blue}{\mathbf{x}_{t-1}} +\color{black}{+ \bar{\alpha}_{t-1} +\mathbf{x}_0^2} }{1-\bar{\alpha}_{t-1}} - \frac{(\mathbf{x}_t - +\sqrt{\bar{\alpha}_t} \mathbf{x}_0)^2}{1-\bar{\alpha}_t} \big) \Big) \\ +&= \exp\Big( -\frac{1}{2} \big( +\color{red}{(\frac{\alpha_t}{\beta_t} + \frac{1}{1 - +\bar{\alpha}_{t-1}})} \mathbf{x}_{t-1}^2 - +\color{blue}{(\frac{2\sqrt{\alpha_t}}{\beta_t} \mathbf{x}_t + +\frac{2\sqrt{\bar{\alpha}_{t-1}}}{1 - \bar{\alpha}_{t-1}} \mathbf{x}_0)} +\mathbf{x}_{t-1} \color{black}{ + C(\mathbf{x}_t, \mathbf{x}_0) \big) +\Big)} +\end{aligned}\)
+利用前向的\(p(x_t|x_0)\)的分布,预估出一个\(\mathbf{x}_0 = +\frac{1}{\sqrt{\bar{\alpha}_t}}(\mathbf{x}_t - \sqrt{1 - +\bar{\alpha}_t}\boldsymbol{\epsilon}_t)\)
+最终得到的参数化的目标为:\(\begin{aligned} +\boldsymbol{\mu}_\theta(\mathbf{x}_t, t) &= +\color{cyan}{\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - +\alpha_t}{\sqrt{1 - \bar{\alpha}_t}} +\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big)} \\ +\text{Thus }\mathbf{x}_{t-1} &= \mathcal{N}(\mathbf{x}_{t-1}; +\frac{1}{\sqrt{\alpha_t}} \Big( \mathbf{x}_t - \frac{1 - +\alpha_t}{\sqrt{1 - \bar{\alpha}_t}} +\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \Big), +\boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t)) +\end{aligned}\)
+推导的这里写的比较模糊,具体的可以详细看看参考[], +本文的重点是给出离散DDPM的动机以及直观解释。公式推导也不是难点☻
+ +DDPM比DPM的改进点
+QA
+++几个QA:
++
+- +
为什么学到了x_0到x_t的噪声不能用这个噪声直接得到原图??
+回答:因为本质上要做分布的transformation
+假设你手头现在就一张图片,加上噪声,送进网络学到了这个噪声,那你反向怎么做?直接减去这个噪声?这样的话你只是得到了原始的图像,但是并不是在做生成!真正的生成是要你从\(p(x_0|x_1)\)这个分布里采样,这个采样要怎么做?\(p(x_0|x_1) = +\frac{p(x_1|x_0)p(x_0)}{p(x_1)}\) ok \(p(x_0)\)我们不知道,没法做。用前面学到的噪声不是从这个分布采样,顶多是记住了前向加的噪声,能还原到原始的\(x_0\)那一个点,而不是分布里采样得到的
+++
+- +
扩散模型加噪音改为渐变成纯色(纯黑或白、灰)还有效果吗
+变成纯黑或者纯白,意味着网络在生成的时候接受一样的输入,这样网络倾向于输出每个label的平均值(这样loss最小),生成效果会不好。 +从分布的映射角度思考会更好,最好输入是一个随机的分布,然后靠算法实现分布的transformation
+++
+- 为什么reverse +process的时候不是学的单步噪声,为什么实际网络训练的时候直接学一个\(x_0\)到任意\(x_t\)的多样的的噪声
+学这个跨步噪声一方面公式推出来是这个样子,另一方面因为我们在计算时为了计算后验分布引入了\(x_0\)这个条件,不学单步噪声是因为没意义,我们要做的是分布的transformation。这里我们反复强调了分布的transformation,因为generative +Model最终的就是如何拟合概率和如何进行sample!
+
++一点民科的想法:
+去噪有点像在一个大的流形学习数据在哪里
+ +图中黑色是加噪(往外走) 红色是往回走,是网络要学的部分
+而扩散更像是走路,在正向的基础上,反向的时候沿着某个梯度走
+ +扩散真正训练起来和去噪非常像,加了各种尺度的噪声
+去噪加朗之万采样 <==> sm加朗之万采样 <=> 扩散模型
+虽然从扩散的角度其实是为了做 transform +,实现反向马尔可夫链每一步的采样,但是底层的逻辑还是去学那个数据梯度,这点 +sm 和去噪,扩散,跑着殊途同归
++
+- 判断一个生成模型的好坏,可以从以下三点看: +
++
- 采样是否迅速?
+- 模型生成结果的多样性是否充足?
+- 生成样本是否高质量?
+
下一篇会讲SDE视角下的连续时间扩散模型
+最后,多读读原论文和代码,"只接受二手知识就跟只抽二手烟差不多",而我这文章可能算是四手烟了都,看多了容易呛着
+参考:
+[1] +https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
+[2] Jascha Sohl-Dickstein, Eric A. Weiss, Niru Maheswaranathan, and +Surya Ganguli. Deep unsupervised learning using nonequilibrium +thermodynamics. 2015. arXiv:1503.03585
+[3] Calvin Luo. Understanding diffusion models: a unified +perspective. 2022. arXiv:2208.11970.
+[4] Jonathan Ho, Ajay Jain, and Pieter Abbeel. Denoising diffusion +probabilistic models. 2020. arXiv:2006.11239.
Like this article? Support the author with
Comments
-GAN
GAN
Like this article? Support the author with
Comments
-SDE视角的扩散模型
连续视角的扩散模型,用SDE描述
- -为什么要用SDE描述随机过程:
-中间过程的扩散噪声图\(x_t\)有两个观察
--
-
当t固定的时候可以\(x_t\)看做一个随机变量,满足\(N(\sqrt{\overline\alpha_t} x_0, -{1-\overline\alpha_t}I)\)分布的随机变量
-当x固定的时候,去改变t,也就是得到\(x_0,x_1...x_T\)这样一条序列,也就是完成了一次采样,固定了一条采样轨迹
-
基于对于\(x_t\)的两个观察,可以认为\(x_t\)实际上是一个随机过程(关于x和t的函数\(f(x,t)\),描述随机过程的方式就有SDE,我们用SDE描述随机过程
-如何描述:从基于tanformation的离散序列到SDE描述的连续过程
-score -model和DDPm都是从离散时间点出发,考虑正向和反向的离散的序列:
-\(x_0,x_1...x_T\) \(x_T,x_T-1...x_0\)
-用SDE考虑这一过程就是考虑离散过程--> -连续过程的转化,使得这个过程更加的一般
-$t,->0 \ 正向:x_t-x_{t+}, \ 反向:x_{t+} - x_t \ $
-score-based diffusion -process
-forward process
-$dx = f_t(x) , dt + g_t , dw $
-对应的离散形式是
-\(x_{t+\Delta t} - x_t = f_t(x_t) \Delta t -+ g_t \sqrt{\Delta t} \, \varepsilon_t, \quad \varepsilon \sim -\mathcal{N}(0, I)\)
-reverse process:
-\(dx = \left[ f_t(x) - g_t^2 \nabla_x \log -p_t(x) \right] dt + g_t dw\)
-对应的离散形式是:
-\(x_t - x_{t+\Delta t} = - \left[ -f_{t+\Delta t}(x_{t+\Delta t}) - g_{t+\Delta t}^2 \nabla_{x_{t+\Delta -t}} \log p(x_{t+\Delta t}) \right] \Delta t + g_{t+\Delta t} -\sqrt{\Delta t} \, \varepsilon\)
-ddpm和score model的SDE视角
-VE-SDE: NCSN
-VP-SDE: DDPM
-这篇文章还比较粗糙,后面还会补充...
-参考:
-https://space.bilibili.com/13355688?spm_id_from=333.788.0.0
+SDE视角的扩散模型
连续视角的扩散模型,用SDE描述
+ +为什么要用SDE描述随机过程:
+中间过程的扩散噪声图\(x_t\)有两个观察
+-
+
当t固定的时候可以\(x_t\)看做一个随机变量,满足\(N(\sqrt{\overline\alpha_t} x_0, +{1-\overline\alpha_t}I)\)分布的随机变量
+当x固定的时候,去改变t,也就是得到\(x_0,x_1...x_T\)这样一条序列,也就是完成了一次采样,固定了一条采样轨迹
+
基于对于\(x_t\)的两个观察,可以认为\(x_t\)实际上是一个随机过程(关于x和t的函数\(f(x,t)\),描述随机过程的方式就有SDE,我们用SDE描述随机过程
+如何描述:从基于tanformation的离散序列到SDE描述的连续过程
+score +model和DDPm都是从离散时间点出发,考虑正向和反向的离散的序列:
+\(x_0,x_1...x_T\) \(x_T,x_T-1...x_0\)
+用SDE考虑这一过程就是考虑离散过程--> +连续过程的转化,使得这个过程更加的一般
+$t,->0 \ 正向:x_t-x_{t+}, \ 反向:x_{t+} - x_t \ $
+score-based diffusion +process
+forward process
+$dx = f_t(x) , dt + g_t , dw $
+对应的离散形式是
+\(x_{t+\Delta t} - x_t = f_t(x_t) \Delta t ++ g_t \sqrt{\Delta t} \, \varepsilon_t, \quad \varepsilon \sim +\mathcal{N}(0, I)\)
+reverse process:
+\(dx = \left[ f_t(x) - g_t^2 \nabla_x \log +p_t(x) \right] dt + g_t dw\)
+对应的离散形式是:
+\(x_t - x_{t+\Delta t} = - \left[ +f_{t+\Delta t}(x_{t+\Delta t}) - g_{t+\Delta t}^2 \nabla_{x_{t+\Delta +t}} \log p(x_{t+\Delta t}) \right] \Delta t + g_{t+\Delta t} +\sqrt{\Delta t} \, \varepsilon\)
+ddpm和score model的SDE视角
+VE-SDE: NCSN
+VP-SDE: DDPM
+这篇文章还比较粗糙,后面还会补充...
+参考:
+https://space.bilibili.com/13355688?spm_id_from=333.788.0.0
Like this article? Support the author with
Comments
-VAE:变分推断、MC估计和重要性采样
本文将从表征学习的角度以及隐变量模型的角度探讨VAE模型,重点讲述VAE的三个技术
- -隐变量的意义
-高斯混合模型
-VAE从概率密度估计的角度来说是一种mixture model
-基本的高斯混合模型写做:
-\(p(x) = \sum_{i=1}^{k} w_i \mathcal{N}(x | -\mu_i, \Sigma_i)\)
-其中的i是指第i个高斯分布,\(u_i\)和\(\Sigma_i\)指的是第i个高斯分布的均值和方差
-但是高斯混合模型的拟合能力是有限的,假如我们用一簇无穷多的高斯分布来拟合最终的分布, -那这个拟合能力不久非常好了吗?怎么去建模这个无穷多(infinite)的分布呢?
- -这图摘自S9868 Deep -learning课程,非常形象的展示了混合模型做了什么:用高斯分布把数据流形填满
-怎么做无限混合呢?VAE给出的解答是把累加变成了积分
-\(p_{\theta}(x) = \int_{z} \mathcal{N}(x; -g_{\theta}(z), \Sigma_{\theta}(z)) \mathcal{N}(z; 0, I) dz\)
-也即是假设混合高斯的权重符合一个分布,属于隐变量\(z\),并且我们的高斯分布是隐变量参数化的结果,即式中的条件分布,分别参数化了高斯分布的均值\(g_{\theta}\)和方差\(\Sigma_{\theta}(z))\)
- -S9868 也给出了无限混合的感性可视化,参数化帮助我们的mixture -model更加的flexible了,能自己学习怎么去填满这个数据流形。
-这里的\(P(z)\)和\(P_\theta(x|z)\)都假设的高斯分布,当然我们也能make -an infinite mixture of the autoregressive distribution and so on. -,从这个角度来说mixture分布是meta model 可以用其他的密度估计模型替代
-这个概率摸底建模是一个积分的无穷项,这里我们需要用到统计学的一个基本技术,用MC采样来估计这个积分
-\(p_{\theta}(x) = \int -p_{\theta}(x|z)p_z(z)dz = \mathbb{E}_{z \sim p_z(z)}[p_{\theta}(x|z)] -\approx \frac{1}{M} \sum_{i=1}^{M} p_{\theta}(x|z^{(i)}), \quad z^{(i)} -\sim p_z\)
---MC采样的直观理解是求平均值的这个过程本身就蕴含了采样过程
-
当我们概率建模有了,接下来就是计算极大似然来优化参数!
-\(E_{x \sim p_{data} }log -P_{\theta}(x)\)
---极大似然认为最优的分布参数是一个定值,因此我们把数据扔进去优化一个maximal的似然值
-
\(\theta^* = \underset{\theta}{\arg\min} -\frac{1}{M} \sum_{i=1}^{N} \log \left( \sum_{j=1}^{M} -\mathcal{N}\left(x^{(i)}; g_{\theta}^{\mu}\left(z^{(j)}\right), -g_{\theta}^{\Sigma}\left(z^{(j)}\right)\right) \right)\)
---以上都是在拟合概率,但是对于神经网络而言我们有的标签不是概率这太抽象了,我们只有从Pdata中获得的样本,如何优化这个混合模型?
-
把方差固定,优化这个似然值就变成优化\(||x-g_{\theta}^{\mu}||\),训练的步骤是我们采样一堆隐变量z,扔进网络\(g_{\theta}\)中产生一堆高斯分布的均值,然后在和一个batch的样本\(x\) 计算L2norm,这就是我们要的似然值.
-重要性采样
-我们在建模概率的时候是利用的MC采样来估计积分
-\(p_{\theta}(x) \approx \frac{1}{M} \left( -p_{\theta}(x|z^{(1)}) + p_{\theta}(x|z^{(2)}) + p_{\theta}(x|z^{(3)}) + -\ldots \right)\)
-遇到一个问题,往往高维空间MC采样的效率很低,往往会变成这样:
-\(p_{\theta}(x) \approx \frac{1}{M} \left( -0 + p_{\theta}(x|z^{(2)}) + 0 + \ldots \right)\)
-这意味着要想精确的估计概率,必须要大量的采样,采样效率很低
-这里引出本文的第二个技术,重要性采样:
-\(p_{\theta}(x) = \mathbb{E}_{z \sim -p_z}[p_{\theta}(x|z)] = \int p_z(z)p_{\theta}(x|z)dz = \int -\frac{p_z(z)}{q_z(z)} p_{\theta}(x|z)q_z(z)dz = \mathbb{E}_{z \sim -q_z}\left[\frac{p_z(z)}{q_z(z)} p_{\theta}(x|z)\right]\)
-重要性采样给出一种不用在原始分布p中采样,而在新的分布q中采样,这是一种减少方差的采样技术
-最优的\(q(z)\)正比于\(p(z)P_{\theta}(x|z)\) 后者正比于\(P(x,z)\) 它又正比于\(p_{\theta}(z|x)\),所以可以证明最优的\(q(z)\)等于\(p_{\theta}(z|x)\)
-\(p_{\theta}(x) \approx \frac{1}{M} -\sum_{j=1}^{M} \frac{p_z(z^{(j)})}{p_{\theta}(z^{(j)}|x)} -p_{\theta}(x|z^{(j)})\), \(z^{(j)} \sim -p_{\theta}(Z|x)\)
- -最开始的
- -在重要性采样的语境下,\(p_{\theta}(z|x)\) 这个z就是和建模\(p_{\theta}(x)\)最相关的z
-变分推断
-高斯混合模型的有点是隐变量分布是高斯分布,重要性采样的效率更高但是这里又出现了一个难以采样的分布\(P_{\theta}(z|x)\) -这个时候引入最后一个重要的技巧,变分推断(Variational inference)
--+顺便吐槽一句,很多的教程都从变分推断出发,丝毫不讨论生成的过程,这和我生成模型又有什么关系呢 -:D
-
VAE:变分推断、MC估计和重要性采样
本文将从表征学习的角度以及隐变量模型的角度探讨VAE模型,重点讲述VAE的三个技术
+ +隐变量的意义
+高斯混合模型
+VAE从概率密度估计的角度来说是一种mixture model
+基本的高斯混合模型写做:
+\(p(x) = \sum_{i=1}^{k} w_i \mathcal{N}(x | +\mu_i, \Sigma_i)\)
+其中的i是指第i个高斯分布,\(u_i\)和\(\Sigma_i\)指的是第i个高斯分布的均值和方差
+但是高斯混合模型的拟合能力是有限的,假如我们用一簇无穷多的高斯分布来拟合最终的分布, +那这个拟合能力不久非常好了吗?怎么去建模这个无穷多(infinite)的分布呢?
+ +这图摘自S9868 Deep +learning课程,非常形象的展示了混合模型做了什么:用高斯分布把数据流形填满
+怎么做无限混合呢?VAE给出的解答是把累加变成了积分
+\(p_{\theta}(x) = \int_{z} \mathcal{N}(x; +g_{\theta}(z), \Sigma_{\theta}(z)) \mathcal{N}(z; 0, I) dz\)
+也即是假设混合高斯的权重符合一个分布,属于隐变量\(z\),并且我们的高斯分布是隐变量参数化的结果,即式中的条件分布,分别参数化了高斯分布的均值\(g_{\theta}\)和方差\(\Sigma_{\theta}(z))\)
+ +S9868 也给出了无限混合的感性可视化,参数化帮助我们的mixture +model更加的flexible了,能自己学习怎么去填满这个数据流形。
+这里的\(P(z)\)和\(P_\theta(x|z)\)都假设的高斯分布,当然我们也能make +an infinite mixture of the autoregressive distribution and so on. +,从这个角度来说mixture分布是meta model 可以用其他的密度估计模型替代
+这个概率摸底建模是一个积分的无穷项,这里我们需要用到统计学的一个基本技术,用MC采样来估计这个积分
+\(p_{\theta}(x) = \int +p_{\theta}(x|z)p_z(z)dz = \mathbb{E}_{z \sim p_z(z)}[p_{\theta}(x|z)] +\approx \frac{1}{M} \sum_{i=1}^{M} p_{\theta}(x|z^{(i)}), \quad z^{(i)} +\sim p_z\)
+++MC采样的直观理解是求平均值的这个过程本身就蕴含了采样过程
+
当我们概率建模有了,接下来就是计算极大似然来优化参数!
+\(E_{x \sim p_{data} }log +P_{\theta}(x)\)
+++极大似然认为最优的分布参数是一个定值,因此我们把数据扔进去优化一个maximal的似然值
+
\(\theta^* = \underset{\theta}{\arg\min} +\frac{1}{M} \sum_{i=1}^{N} \log \left( \sum_{j=1}^{M} +\mathcal{N}\left(x^{(i)}; g_{\theta}^{\mu}\left(z^{(j)}\right), +g_{\theta}^{\Sigma}\left(z^{(j)}\right)\right) \right)\)
+++以上都是在拟合概率,但是对于神经网络而言我们有的标签不是概率这太抽象了,我们只有从Pdata中获得的样本,如何优化这个混合模型?
+
把方差固定,优化这个似然值就变成优化\(||x-g_{\theta}^{\mu}||\),训练的步骤是我们采样一堆隐变量z,扔进网络\(g_{\theta}\)中产生一堆高斯分布的均值,然后在和一个batch的样本\(x\) 计算L2norm,这就是我们要的似然值.
+重要性采样
+我们在建模概率的时候是利用的MC采样来估计积分
+\(p_{\theta}(x) \approx \frac{1}{M} \left( +p_{\theta}(x|z^{(1)}) + p_{\theta}(x|z^{(2)}) + p_{\theta}(x|z^{(3)}) + +\ldots \right)\)
+遇到一个问题,往往高维空间MC采样的效率很低,往往会变成这样:
+\(p_{\theta}(x) \approx \frac{1}{M} \left( +0 + p_{\theta}(x|z^{(2)}) + 0 + \ldots \right)\)
+这意味着要想精确的估计概率,必须要大量的采样,采样效率很低
+这里引出本文的第二个技术,重要性采样:
+\(p_{\theta}(x) = \mathbb{E}_{z \sim +p_z}[p_{\theta}(x|z)] = \int p_z(z)p_{\theta}(x|z)dz = \int +\frac{p_z(z)}{q_z(z)} p_{\theta}(x|z)q_z(z)dz = \mathbb{E}_{z \sim +q_z}\left[\frac{p_z(z)}{q_z(z)} p_{\theta}(x|z)\right]\)
+重要性采样给出一种不用在原始分布p中采样,而在新的分布q中采样,这是一种减少方差的采样技术
+最优的\(q(z)\)正比于\(p(z)P_{\theta}(x|z)\) 后者正比于\(P(x,z)\) 它又正比于\(p_{\theta}(z|x)\),所以可以证明最优的\(q(z)\)等于\(p_{\theta}(z|x)\)
+\(p_{\theta}(x) \approx \frac{1}{M} +\sum_{j=1}^{M} \frac{p_z(z^{(j)})}{p_{\theta}(z^{(j)}|x)} +p_{\theta}(x|z^{(j)})\), \(z^{(j)} \sim +p_{\theta}(Z|x)\)
+ +最开始的
+ +在重要性采样的语境下,\(p_{\theta}(z|x)\) 这个z就是和建模\(p_{\theta}(x)\)最相关的z
+变分推断
+高斯混合模型的有点是隐变量分布是高斯分布,重要性采样的效率更高但是这里又出现了一个难以采样的分布\(P_{\theta}(z|x)\) +这个时候引入最后一个重要的技巧,变分推断(Variational inference)
++顺便吐槽一句,很多的教程都从变分推断出发,丝毫不讨论生成的过程,这和我生成模型又有什么关系呢 +:D
+
Like this article? Support the author with
Comments
-ncsn原理解释
score maching模型的里程碑之作
- +ncsn原理解释
score maching模型的里程碑之作
+Like this article? Support the author with
Comments
-外参内参的推导
补充一些3D视觉的基础内容
- ---[!一个问题] 什么是坐标系
-
坐标系是观察世界的角度,不同坐标系是观察世界的不同角度,不同的点在不同坐标系下坐标不同
---[!一个问题] 存在哪几个坐标系
-
一共有像素坐标系,图像坐标系,摄像机坐标系,世界坐标系四个坐标系。 -对像素坐标系的研究是在摄像机坐标系下 -某个点投影到相机成像平面,我们需要它的坐标 -然而实际情况中比如在3D视觉里我们更加一般化的要考虑2D成像平面的坐标点,反投影的3D坐标,这个时候深度信息往往未知
---[!一个问题] 内参是什么
-
内参是3D到2D投影矩阵 -内参转换是说,在摄像机坐标系下,给定的空间点的坐标是齐次坐标A,求对应的图像坐标系下 -图像点 的齐次坐标坐标在哪个位置。
---[!一个问题] 为什么引入齐次坐标
-
齐次坐标下平移旋转这种仿射变换可以表示成线性变换(平移不是线性变换)
---[!一个问题] 外参是什么
-
相机坐标系并不是一个“稳定”的坐标系,其会随着相机的移动而改变坐标的原点和各个坐标轴的方向,用该坐标系下坐标进行计算,显然不是一个明智的选择
---(每个人都有自己的相机,小A在自己的坐标系下说这个点是(1,0,0)点,小B在自己的坐标系下说这个点是(0,1,0))点,显然乱套。
-
因此需要引进一个稳定不变坐标系:世界坐标系,该坐标系是绝对不变,SLAM中的视觉里程计就是求解相机在世界坐标系下的运动轨迹 -有了这个坐标系对于空间中的任意一个固定的点,我们都有他的绝对坐标(世界坐标系下的坐标),然后根据外参得到这个相机下的相机坐标,在根据该相机的内参,得到该点投影到相机成像平面的坐标。
-最后看一下齐次坐标矩阵推导,这里的推导比较简单,就是一些矩阵运算 -\(P' = \left[ \begin{array}{cccc} \alpha -& 0 & c_x & 0 \\ 0 & \beta & c_y & 0 \\ 0 & -0 & 1 & 0 \end{array} \right] \left[ \begin{array}{c} x \\ y \\ -z \\ 1 \end{array} \right] = \mathcal{MP} \\ = K \begin{bmatrix} I & -0 \end{bmatrix} P\)
-K就是内参矩阵 \(P' = K \begin{bmatrix} -I & 0 \end{bmatrix} P = K \begin{bmatrix} I & 0 \end{bmatrix} -\begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix} P_w = K -\begin{bmatrix} R & T \end{bmatrix} P_w = \mathcal{M} P_w\) -R和T是外参矩阵
-reference: 万字长文概述单目3D目标检测算法 -- 嵌入式视觉 - 博客园 面向量产的3D目标与车道线检测 -动驾驶中的单目 -3D 车道线检测——综述_3d车道线检测-CSDN博客 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)——1.摄像机几何_哔哩哔哩_bilibili -自动驾驶---Perception之IPM图和BEV图_bev -ipm-CSDN博客 Apply IPM in -Lane Detection from BEV | LeijieZhang
-https://leijiezhang001.github.io/lane-det-from-BEV/
+外参内参的推导
补充一些3D视觉的基础内容
+ +++[!一个问题] 什么是坐标系
+
坐标系是观察世界的角度,不同坐标系是观察世界的不同角度,不同的点在不同坐标系下坐标不同
+++[!一个问题] 存在哪几个坐标系
+
一共有像素坐标系,图像坐标系,摄像机坐标系,世界坐标系四个坐标系。 +对像素坐标系的研究是在摄像机坐标系下 +某个点投影到相机成像平面,我们需要它的坐标 +然而实际情况中比如在3D视觉里我们更加一般化的要考虑2D成像平面的坐标点,反投影的3D坐标,这个时候深度信息往往未知
+++[!一个问题] 内参是什么
+
内参是3D到2D投影矩阵 +内参转换是说,在摄像机坐标系下,给定的空间点的坐标是齐次坐标A,求对应的图像坐标系下 +图像点 的齐次坐标坐标在哪个位置。
+++[!一个问题] 为什么引入齐次坐标
+
齐次坐标下平移旋转这种仿射变换可以表示成线性变换(平移不是线性变换)
+++[!一个问题] 外参是什么
+
相机坐标系并不是一个“稳定”的坐标系,其会随着相机的移动而改变坐标的原点和各个坐标轴的方向,用该坐标系下坐标进行计算,显然不是一个明智的选择
+++(每个人都有自己的相机,小A在自己的坐标系下说这个点是(1,0,0)点,小B在自己的坐标系下说这个点是(0,1,0))点,显然乱套。
+
因此需要引进一个稳定不变坐标系:世界坐标系,该坐标系是绝对不变,SLAM中的视觉里程计就是求解相机在世界坐标系下的运动轨迹 +有了这个坐标系对于空间中的任意一个固定的点,我们都有他的绝对坐标(世界坐标系下的坐标),然后根据外参得到这个相机下的相机坐标,在根据该相机的内参,得到该点投影到相机成像平面的坐标。
+最后看一下齐次坐标矩阵推导,这里的推导比较简单,就是一些矩阵运算 +\(P' = \left[ \begin{array}{cccc} \alpha +& 0 & c_x & 0 \\ 0 & \beta & c_y & 0 \\ 0 & +0 & 1 & 0 \end{array} \right] \left[ \begin{array}{c} x \\ y \\ +z \\ 1 \end{array} \right] = \mathcal{MP} \\ = K \begin{bmatrix} I & +0 \end{bmatrix} P\)
+K就是内参矩阵 \(P' = K \begin{bmatrix} +I & 0 \end{bmatrix} P = K \begin{bmatrix} I & 0 \end{bmatrix} +\begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix} P_w = K +\begin{bmatrix} R & T \end{bmatrix} P_w = \mathcal{M} P_w\) +R和T是外参矩阵
+reference: 万字长文概述单目3D目标检测算法 +- 嵌入式视觉 - 博客园 面向量产的3D目标与车道线检测 +动驾驶中的单目 +3D 车道线检测——综述_3d车道线检测-CSDN博客 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)——1.摄像机几何_哔哩哔哩_bilibili +自动驾驶---Perception之IPM图和BEV图_bev +ipm-CSDN博客 Apply IPM in +Lane Detection from BEV | LeijieZhang
+https://leijiezhang001.github.io/lane-det-from-BEV/
Like this article? Support the author with
Comments
-扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse -problem?
-对于有measure process的逆问题和没有显示measure -process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分?
连续视角的扩散模型,用SDE描述
When you have eliminated the -impossible, whatever remains, however +
扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse +problem?
+对于有measure process的逆问题和没有显示measure +process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分?
连续视角的扩散模型,用SDE描述
When you have eliminated the +impossible, whatever remains, however improbable, must be the truth...
本文将从表征学习的角度以及隐变量模型的角度探讨VAE模型,重点讲述VAE的三个技术
Like this article? Support the author with
最近在看集成学习,集成学习中对基学习器的要求是和而不同,及满足两个条件:误差
-\(\epsilon
+ 扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse
-problem? 对于有measure process的逆问题和没有显示measure
+ 扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse
+problem? 对于有measure process的逆问题和没有显示measure
process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分? When you have eliminated the
-impossible, whatever remains, however
+ When you have eliminated the
+impossible, whatever remains, however
improbable, must be the truth...Like this article? Support the author with