diff --git a/2024/DDIM/index.html b/2024/DDIM/index.html index 827b018..3b83494 100644 --- a/2024/DDIM/index.html +++ b/2024/DDIM/index.html @@ -34,12 +34,12 @@ window.addEventListener('hashchange', switchTab, false); })(); -

DDIM

开始学习一些扩散模型的加速采样算法

- -

这里的加速采样主要是reverse -process中不用逐步进行概率的transformation

-

回顾之前的要逼近的概率分布:

-

$p(x_{t-1}|x_t,{}) = $

+

DDIM

开始学习一些扩散模型的加速采样算法

+ +

这里的加速采样主要是reverse +process中不用逐步进行概率的transformation

+

回顾之前的要逼近的概率分布:

+

$p(x_{t-1}|x_t,{}) = $

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:

-
    -
  1. 为什么学到了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\)​那一个点,而不是分布里采样得到的

  2. -
-
-
-
    -
  1. 扩散模型加噪音改为渐变成纯色(纯黑或白、灰)还有效果吗

    -

    变成纯黑或者纯白,意味着网络在生成的时候接受一样的输入,这样网络倾向于输出每个label的平均值(这样loss最小),生成效果会不好。 -从分布的映射角度思考会更好,最好输入是一个随机的分布,然后靠算法实现分布的transformation

  2. -
-
-
-
    -
  1. 为什么reverse -process的时候不是学的单步噪声,为什么实际网络训练的时候直接学一个\(x_0\)到任意\(x_t\)的多样的的噪声
  2. -
-

学这个跨步噪声一方面公式推出来是这个样子,另一方面因为我们在计算时为了计算后验分布引入了\(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:

+
    +
  1. 为什么学到了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\)​那一个点,而不是分布里采样得到的

  2. +
+
+
+
    +
  1. 扩散模型加噪音改为渐变成纯色(纯黑或白、灰)还有效果吗

    +

    变成纯黑或者纯白,意味着网络在生成的时候接受一样的输入,这样网络倾向于输出每个label的平均值(这样loss最小),生成效果会不好。 +从分布的映射角度思考会更好,最好输入是一个随机的分布,然后靠算法实现分布的transformation

  2. +
+
+
+
    +
  1. 为什么reverse +process的时候不是学的单步噪声,为什么实际网络训练的时候直接学一个\(x_0\)到任意\(x_t\)的多样的的噪声
  2. +
+

学这个跨步噪声一方面公式推出来是这个样子,另一方面因为我们在计算时为了计算后验分布引入了\(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.

Comments

-

GAN

+

GAN

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

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

+

Comments

-

ncsn原理解释

score maching模型的里程碑之作

- +

ncsn原理解释

score maching模型的里程碑之作

+

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/

Comments

-

DDIM

开始学习一些扩散模型的加速采样算法

Read more

扩散模型如何做inverse problem

扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse -problem?

-

对于有measure process的逆问题和没有显示measure -process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分?

Read more

能量模型是分类器

本片要讲的是论文《Your Diffusion Model is Secretly a Zero-Shot Classifier》

Read more

ncsn原理解释

score maching模型的里程碑之作

Read more

DDPM

这一章要开始讲DDPM了

Read more

GAN

-

贝叶斯的两个理解角度

When you have eliminated the -impossible, whatever remains, however +

DDIM

开始学习一些扩散模型的加速采样算法

Read more

扩散模型如何做inverse problem

扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse +problem?

+

对于有measure process的逆问题和没有显示measure +process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分?

Read more

能量模型是分类器

本片要讲的是论文《Your Diffusion Model is Secretly a Zero-Shot Classifier》

Read more

ncsn原理解释

score maching模型的里程碑之作

Read more

DDPM

这一章要开始讲DDPM了

Read more

GAN

+

贝叶斯的两个理解角度

When you have eliminated the +impossible, whatever remains, however improbable, must be the truth...

Read more

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-
+

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-

深度学习中的正则化

最近在看集成学习,集成学习中对基学习器的要求是和而不同,及满足两个条件:误差 -\(\epsilon +

深度学习中的正则化

最近在看集成学习,集成学习中对基学习器的要求是和而不同,及满足两个条件:误差 +\(\epsilon <0.5\)且具有多样性,由此引出一系列多样性方法,其和正则化非常类似。借助课上提到的框架对正则化进行梳理。并且试图统一绝大部分ml和dl的正则化方法

Read more

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-
+

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-

扩散模型如何做inverse problem

扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse -problem?

-

对于有measure process的逆问题和没有显示measure +

扩散模型如何做inverse problem

扩散模型怎么做超分,inpainting,MRI reconstruction...这些inverse +problem?

+

对于有measure process的逆问题和没有显示measure process的逆问题如何区分?linear的可逆问题和non-linear的可逆问题如何区分?

Read more

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-

贝叶斯的两个理解角度

When you have eliminated the -impossible, whatever remains, however +

贝叶斯的两个理解角度

When you have eliminated the +impossible, whatever remains, however improbable, must be the truth...

Read more

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019

-

深度学习中的正则化

最近在看集成学习,集成学习中对基学习器的要求是和而不同,及满足两个条件:误差 -\(\epsilon +

深度学习中的正则化

最近在看集成学习,集成学习中对基学习器的要求是和而不同,及满足两个条件:误差 +\(\epsilon <0.5\)且具有多样性,由此引出一系列多样性方法,其和正则化非常类似。借助课上提到的框架对正则化进行梳理。并且试图统一绝大部分ml和dl的正则化方法

Read more

© 2024 Rick Wang  Powered by Hexo & Icarus
Visited by 0 users

© 2019