Skip to content

Commit bf8fcd9

Browse files
20251211
1 parent add50ab commit bf8fcd9

11 files changed

Lines changed: 423 additions & 2 deletions

source/_posts/DDIM.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
title: 扩散模型(二)DDIM 学习
3+
katex: true
4+
date: 2025-08-10 20:10:31
5+
tags:
6+
---
7+
8+
还记得我们在 DDPM 学习的最后讨论了“采样时为什么需要加入高斯噪声”,当时我们提到这是由 DDPM 扩散过程的定义决定的,如果不加则相当于令噪声项的方差等于 0,在这种情况下所有的公式都要重写。那么,要是令噪声的方差为 0 到底能不能行呢?凑巧的是,DDIM 就是这么做的。它重新定义了 DDPM 的扩散过程(不是一步一步加噪声,而是直接给原图像加不同级别的噪声),从而使得噪声项的方差变成了一个可调的参数!实验发现让这个可调的方差等于 0 的时候效果反而是最好的,速度也比 DDPM 更快。并且,当方差等于 0 的时候,图像扩散过程实际上可以表示为一个常微分方程,其中扩散模型预测的是噪声图像向原始图像移动的“速度”矢量,图像就是在这个速度的牵引下从一个噪声变成了有意义的图像。
9+
10+
本文主要参考自苏剑林老师的博客:[生成扩散模型漫谈(四):DDIM = 高观点DDPM](https://spaces.ac.cn/archives/9181)
11+
12+
## 背景设置
13+
14+
DDPM 里面对于扩散过程的约束,是给定 $x_{t-1}$ 输出 $x_t$,即 $x_t$ 与 $x_{t-1}$ 的关系 $p(x_t|x_{t-1})$:
15+
16+
$$
17+
x_t = \alpha_tx_{t-1} + \beta_t\varepsilon, \varepsilon \sim \mathcal N(0, I)\\
18+
\alpha_t^2 + \beta_t^2 = 1
19+
$$
20+
21+
然而,在 DDPM 的训练过程中,我们并没有用到这个公式一步步生成加噪图像。我们直接给原图 $x_0$ 混合一个高斯噪声一步到位得到 $x_t$,这样速度更快。这是等价的,上述方程不断迭代就得到了 $x_t$ 与 $x_0$ 的关系 $p(x_t|x_0)$:
22+
23+
$$
24+
x_t = \bar\alpha_tx_{0} + \bar\beta_t\varepsilon, \varepsilon \sim \mathcal N(0, I)\\
25+
\bar\alpha_t^2 + \bar\beta_t^2 = 1\\
26+
\bar\alpha_t = \alpha_t\alpha_{t-1}\dots\alpha_0
27+
$$
28+
29+
推理过程,我们想从 $x_t$ 还原出上一步 $x_{t-1}$,但是 $p(x_{t-1}|x_{t})$ 求不出来,用 $p(x_{t-1}|x_t,x_0)$ 估计它:
30+
31+
$$
32+
p(x_{t-1}|x_{t}) \approx p(x_{t-1}|x_t,x_0)
33+
$$
34+
35+
训练过程,模型学习的是直接从 $x_t$ 预测 $x_0$(或者其噪声),跟扩散过程的定义 $p(x_t|x_{t-1})$ 没有任何关系!然而推理过程却需要一步步反推扩散过程得到结果,凭什么训练和推理过程不一致呢?
36+
37+
对于这个问题,DDIM 可能会给我们一些启发。它做了一件疯狂的事情:推理可以扔掉扩散过程,让训练和推理过程更一致,不仅速度快,而且效果更好。
38+
39+
现在,最基本的关系不再是 $x_t$ 与 $x_{t-1}$ 的关系,而是 $x_{t}$ 与 $x_{0}$ 的关系。为此,我们要把 $\bar\alpha_t$ 和 $\bar\beta_t$ 作为最基本的参数,而 $\alpha_t$ 和 $\beta_t$ 不再重要:
40+
41+
$$
42+
x_t = \bar\alpha_tx_{0} + \bar\beta_t\varepsilon, \varepsilon \sim \mathcal N(0, I)\\
43+
\bar\alpha_t^2 + \bar\beta_t^2 = 1\\
44+
\alpha_t = \frac{\bar\alpha_t}{\bar\alpha_{t-1}}, \beta_t = \sqrt{1 - \alpha_t^2}
45+
$$
46+
47+
$x_1, x_2, \dots, x_t$ 不再是一条马尔科夫链,而是相互独立的加噪过程,随着 $t$ 的增大,噪声的强度越来越大。
48+
49+
## 推理过程
50+
51+
DDIM 并不改变训练过程,它只是加速了推理过程。推理过程中,我们仍然需要从 $x_t$ 还原出“上一步” $x_{t-1}$,即计算 $p(x_{t-1}|x_t)$,根据贝叶斯公式:
52+
53+
$$
54+
p(x_{t-1}|x_t) = \frac{p(x_t|x_{t-1})p(x_{t-1})}{p(x_t)}
55+
$$
56+
57+
和 DDPM 一样,上面这个 $p(x_{t-1}|x_{t})$ 求不出来,改成用 $p(x_{t-1}|x_t,x_0)$ 估计它:
58+
59+
$$
60+
p(x_{t-1}|x_{t}) \approx p(x_{t-1}|x_t,x_0) = \frac{p(x_t|x_{t-1})p(x_{t-1}|x_0)}{p(x_t|x_0)}
61+
$$
62+
63+
但是,DDPM 里面我们是知道 $p(x_t|x_{t-1})$ 就是扩散过程,表达式是已知的,现在我们把它扔掉,左边这个概率就算不出来了吧?
64+
65+
实则不然,把 $p(x_t|x_{t-1})$ 扔掉之后,我们反而更加自由了,直接设
66+
67+
$$
68+
p(x_{t-1}|x_t,x_0) = \mathcal N(x_{t-1};\kappa_tx_t + \lambda_tx_0, \sigma^2_tI)
69+
$$
70+
71+
是否感觉非常奇怪?DDPM 里面,这三个待定系数 $\kappa, \lambda, \sigma$ 是可以用贝叶斯公式全部求出来的。然而因为扔掉了 $p(x_t|x_{t-1})$ 的表达式,实际上会多出来一个可变参数。让我们看看:
72+
73+
$$
74+
\begin{align*}
75+
x_{t-1} &= \kappa_tx_t + \lambda_tx_0 + \sigma_t\varepsilon_0 \\
76+
&= \kappa_t(\bar\alpha_tx_{0} + \bar\beta_t\varepsilon_1) + \lambda_tx_0 + \sigma_t\varepsilon \\
77+
&= (\kappa_t\bar\alpha_t + \lambda_t)x_{0} + \kappa_t\bar\beta_t\varepsilon_1 + \sigma_t\varepsilon_0\\
78+
&= (\kappa_t\bar\alpha_t + \lambda_t)x_{0} + \sqrt{\kappa_t^2\bar\beta_t^2 + \sigma_t^2}\varepsilon_2\\
79+
\end{align*}
80+
$$
81+
82+
第二行用到了背景设置中的“基本等式” $x_{t} = \bar\alpha_tx_{0} + \bar\beta_t\varepsilon$。根据基本等式我们还知道 $x_{t-1} = \bar\alpha_{t-1}x_{0} + \bar\beta_{t-1}\varepsilon$,因此和上面的结果比较一下系数可得到:
83+
84+
$$
85+
\kappa_t\bar\alpha_t + \lambda_t = \bar\alpha_{t-1}\\
86+
\sqrt{\kappa_t^2\bar\beta_t^2 + \sigma_t^2} = \bar\beta_{t-1}
87+
$$
88+
89+
三个待定系数,两个方程,所以说会有一个可变参数。我们设方差项 $\sigma_t^2$ 为可变参数,把 $\kappa$ 和 $\lambda$ 解出来:
90+
91+
$$
92+
\kappa_t = \frac{\sqrt{\bar\beta_{t-1}^2 - \sigma^2_t}}{\bar\beta_t}\\
93+
\lambda_t = \bar\alpha_{t-1} - \frac{\bar\alpha_t\sqrt{\bar\beta_{t-1}^2 - \sigma^2_t}}{\bar\beta_t}
94+
$$
95+
96+
> DDPM 里面这三个参数都可以求,怎么求出来的?其实就是多了一个方程可以把 $\sigma_t$ 求出来。这个方程就是我们刚刚扔掉的扩散过程的方程,代表 $p(x_t|x_{t-1})$:
97+
> $$
98+
> \begin{align*}
99+
> x_{t-1} &= \kappa_tx_t + \lambda_tx_0 + \sigma_t\varepsilon_1 \\
100+
> x_t &= \alpha_tx_{t-1} + \beta_t\varepsilon_0\\
101+
> &= \alpha_t(\kappa_tx_t + \lambda_tx_0 + \sigma_t\varepsilon_1) + \beta_t\varepsilon_0\\
102+
> &= \alpha_t\kappa_tx_t + \alpha_t\lambda_tx_0 + \alpha_t\sigma_t\varepsilon_1 + \beta_t\varepsilon_0\\
103+
> &= \alpha_t\kappa_tx_t + \alpha_t\lambda_tx_0 + \sqrt{\alpha_t^2\sigma_t^2 + \beta_t^2}\varepsilon_2\\
104+
> (1 - \kappa_t\alpha_t)x_{t} &= \alpha_t\lambda_tx_0 + \sqrt{\alpha_t^2\sigma_t^2 + \beta_t^2}\varepsilon_2\\
105+
> \end{align*}
106+
> $$
107+
> 由于 $x_{t} = \bar\alpha_tx_{0} + \bar\beta_t\varepsilon$,比较系数可得
108+
> $$
109+
> (1 - \kappa_t\alpha_t)\bar\alpha_{t} = \alpha_t\lambda_t\\
110+
> \sqrt{\alpha_t^2\sigma_t^2 + \beta_t^2} = \bar\beta_{t}\\
111+
> $$
112+
> 第一个方程重复了,实际上就是多了一个方程
113+
> $$
114+
> (1 - \kappa_t\alpha_t)\sqrt{\alpha_t^2\sigma_t^2 + \beta_t^2} = \bar\beta_{t}
115+
> $$
116+
> 因此求得
117+
> $$
118+
>
119+
> $$

source/_posts/最优化方法.md

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2073,4 +2073,198 @@ $$
20732073

20742074
为 $\bar x$ 的可行方向锥。
20752075

2076+
$$
2077+
\begin{aligned}&\text{min }f(x)\\&s.t.\quad Ax\geq b\\&Ex=e\end{aligned}\tag{1}
2078+
$$
2079+
20762080
定理 1:设 $\bar x$ 是问题 (1) 的可行解,在 $\bar x$ 点处,有 $A_1\bar x = b_1, A_2 \bar x \gt b_2$,其中 $A = \binom{A_1}{A_2}, b = \binom{b_1}{b_2}$,则非零向量 $d$ 是 $\bar x$ 处可行方向的充要条件为 $A_1d \ge 0, Ed = 0$。
2081+
2082+
2083+
$$
2084+
\begin{aligned}&\text{min }\nabla f(x)^Td\\&\text{s.t.}\quad A_1d\geq0\\&Ed=0\\&\mid d_j\mid\leq1,j=1,2,\cdots,n\end{aligned}\tag{2}
2085+
$$
2086+
2087+
定理2:在问题 (1) 中,设 $x$ 为可行解,在点 $x$ 点处,有 $A_1x = b_1, A_2 x \gt b_2$,其中 $A = \binom{A_1}{A_2}, b = \binom{b_1}{b_2}$,则 $x$ 为 KKT 点的充要条件是问题 (2) 的目标函数最优值为 0。
2088+
2089+
假设 $x^{(k)}$ 是 (1) 的可行解,$d^{(k)}$ 是下降可行方向,需要求
2090+
2091+
$$
2092+
\begin{aligned}\min\:f(x^{(k)}+\lambda d^{(k)})&=f(x^{(k)}+\lambda_kd^{(k)})\\x^{(k+1)}&=x^{(k)}+\lambda_kd^{(k)}\end{aligned}
2093+
$$
2094+
2095+
转化为一维搜索问题:
2096+
2097+
$$
2098+
\begin{aligned}&\min\:f(x^{(k)}+\lambda d^{(k)})\\&s.t.\quad A(x^{(k)}+\lambda d^{(k)})\geq b\\&E(x^{(k)}+\lambda d^{(k)})=e\\&\lambda\geq0\end{aligned}\tag{3}
2099+
$$
2100+
2101+
由于 $d^{(k)}$ 是可行方向,因此必然有 $Ed^{(k)} = 0, Ex^{(k)} = e$,第二个约束多余的。
2102+
2103+
考虑第一个约束,假设 $A_1x^{(k)}=b_1\text{,}A_2x^{(k)}>b_2$,即
2104+
2105+
$$
2106+
\begin{pmatrix}A_1x^{(k)}+\lambda A_1d^{(k)}\\A_2x^{(k)}+\lambda A_2d^{(k)}\end{pmatrix}{\geq}\binom{b_1}{b_2}
2107+
$$
2108+
2109+
$d^{(k)}$ 满足 $A_1d^{(k)} \ge 0$,因此可以将第一个约束简化为
2110+
2111+
$$
2112+
A_2x^{(k)}+\lambda A_2d^{(k)}\geq b_2
2113+
$$
2114+
2115+
因此问题 (3) 等价于
2116+
2117+
$$
2118+
\begin{aligned}&\text{min }f(x^{(k)}+\lambda d^{(k)})\\&\text{s.t.}\quad A_2x^{(k)}+\lambda A_2d^{(k)}\geq b_2\\&\lambda\geq0\end{aligned}
2119+
$$
2120+
2121+
令 $\hat{b}=b_{2}-A_{2}x^{(k)},\hat{d}=A_{2}d^{(k)}$,则 (4) 可以得到
2122+
2123+
$$
2124+
\lambda_{\mathrm{max}}=\begin{cases}\min\left\{\frac{\hat{b}_{i}}{\hat{d}}|\hat{d}_{i}<0\right\}&\hat{d}\not\geq0\\\infty&\hat{d}\geq0\end{cases}
2125+
$$
2126+
2127+
如何确定问题 (1) 的初始可行解?
2128+
2129+
引入人工变量,求解辅助问题:
2130+
2131+
$$
2132+
\begin{cases}\min&\left(\sum_{i=1}^{m}\xi_{i}+\sum_{i=1}^{l}\eta_{i}\right)\\s.t.&Ax+\xi\geq b\\&Ex+\eta=e\\&\xi,\eta\geq0&&\end{cases}
2133+
$$
2134+
2135+
如果有最优解 $(\bar x, \bar \xi, \bar \eta) = (\bar x, 0 , 0)$,则 $\bar x$ 为 (1) 的一个可行解。
2136+
2137+
可行方向法步骤如下:
2138+
2139+
![1765419551237](../images/最优化方法/1765419551237.png)
2140+
2141+
![1765419557492](../images/最优化方法/1765419557492.png)
2142+
2143+
![1765419568259](../images/最优化方法/1765419568259.png)
2144+
2145+
对于非线性约束的情形:
2146+
2147+
$$
2148+
\begin{aligned}&\min\:f(x)\\&s.t.\quad g_i(x)\geq0,i=1,2,\cdots,m\end{aligned}\tag{A}
2149+
$$
2150+
2151+
定理:设 $x$ 是问题 $A$ 的可行解,$I = \{i|g_i(x) = 0\}$ 是在 $x$ 处起作用的约束下标集,又设 $f(x), g_i(x) (i \in I)$ 在 $x$ 处可微,$g_i(x)(i \not\in I)$ 在 $x$ 处连续,如果 $\nabla f(x)^Td \lt 0, \nabla g_i(x)^Td \gt 0 (i \in I)$,则 $d$ 是可行下降方向。
2152+
2153+
因此可以通过下面的方式求解下降可行方向:
2154+
2155+
$$
2156+
\begin{aligned}&\text{min }z\\&s.t.\quad\nabla f(x)^Td-z\leq0\\&\nabla g_i(x)^Td+z\geq0,\quad i\in I\\&-1\leq d_i\leq1,\quad i=1,2,\cdots,n\end{aligned}\tag{B}
2157+
$$
2158+
2159+
设这个问题的最优解为 $(\bar z, \bar d^T)$,若 $\bar z \lt 0$,则 $\bar d$ 为在 $x$ 处的可行下降方向。
2160+
2161+
定理:设 $x$ 是问题 $(A)$ 的可行解,$I = \{i|g_i(x) = 0\}$,则 $x$ 为 Fritz John 点的充要条件为问题 $(B)$ 的目标函数最优值 = 0.
2162+
2163+
因此步骤如下:
2164+
2165+
![1765420028682](../images/最优化方法/1765420028682.png)
2166+
2167+
![1765420035867](../images/最优化方法/1765420035867.png)
2168+
2169+
Zoutendijk算法的收敛问题
2170+
2171+
Zoutendijk算法映射A=MD,其中D是确定方向的映射,M是一维搜索。
2172+
2173+
结论:D和M不一定是闭映射。
2174+
2175+
Zoutendijk可行方向法缺陷:不收敛
2176+
2177+
### Topkis-Veinott可行方向法
2178+
2179+
Zoutendijk可行方向法不收敛原因分析:起作用的约束集迭代过程中会发生突变,从而引起搜索方向的陡变
2180+
2181+
改进措施: x处的下降可行方向d由如下线性规划问题来确定.
2182+
2183+
$$
2184+
\begin{aligned}&\text{min }z\\&s.t.\quad\nabla f(x)^Td-z\leq0\\&\nabla g_i(x)^Td+z\geq-g_i(x)\quad i=1,2,\cdots,m\\&-1\leq d_i\leq1\quad i=1,2,\cdots,n\end{aligned}
2185+
$$
2186+
2187+
定理:考虑如下问题:
2188+
2189+
$$
2190+
\begin{aligned}&\min\:f(x)\\&s.t.\quad g_i(x)\geq0,i=1,2,\cdots,m\end{aligned}\tag{A}
2191+
$$
2192+
2193+
其中 $f(x), g_i(x)$ 均为可微函数,又设 $\{x^{(k)}\}$ 是Topkis-Veinott算法产生的序列,则 $\{x^{(k)}\}$ 的任一聚点是 Fritz John 点。
2194+
2195+
收敛速率:线性收敛
2196+
2197+
### Rosen梯度投影法
2198+
2199+
$$
2200+
\begin{aligned}&\text{min }f(x)\\
2201+
&\text{s.t.}\quad Ax\geq b\\
2202+
&Ex=e\end{aligned}\tag{1}
2203+
$$
2204+
2205+
基本思想: 当迭代点在可行域内部时,沿迭代点的负梯度方向搜索;当迭代点达到约束区域的边界上时,用起作用约束系数矩阵的行向量生成一个子空间,沿负梯度方向在该子空间的正交补中的投影方向搜索.
2206+
2207+
正交投影矩阵:$Q = M^T(MM^T)^{-1}M$,满足 $Q^T=Q, QQ=Q$,并且 $Q$ 是半正定的。
2208+
2209+
定理 1:设 $x$ 为问题 (1) 的可行解,在 $x$ 处有 $A_1x = b_1, A_2x \gt b_2$,其中
2210+
2211+
$$
2212+
A=\begin{bmatrix}A_1\\A_2\end{bmatrix}\quad b=\begin{bmatrix}b_1\\b_2\end{bmatrix}
2213+
$$
2214+
2215+
又设 $M = \binom{A_1}{E}$ 为满秩矩阵,令
2216+
2217+
$$
2218+
P=I-M^T\left(MM^T\right)^{-1}M
2219+
$$
2220+
2221+
若 $P\nabla f(x) \ne 0$,令 $d = -P\nabla f(x)$,则 $d$ 为下降可行方向。
2222+
2223+
定理 2:设 $x$ 为问题 (1) 的可行解,在点 $x$ 处,有 $A_1x = b_1, A_2x \gt b_2$,其中
2224+
2225+
$$
2226+
A=\begin{bmatrix}A_1\\A_2\end{bmatrix}\quad b=\begin{bmatrix}b_1\\b_2\end{bmatrix}
2227+
$$
2228+
2229+
又设 $M = \binom{A_1}{E}$ 为满秩矩阵,令
2230+
2231+
$$
2232+
\begin{aligned}&P=I-M^T\left(MM^T\right)^{-1}M\\&W=\left(MM^T\right)^{-1}M\nabla f(x)=\begin{bmatrix}u\\v\end{bmatrix}\end{aligned}
2233+
$$
2234+
2235+
其中 $u$ 和 $v$ 分别对应于 $A_1$ 和 $E$ 。则
2236+
2237+
(1) 若 $u \ge 0$ 则 $x$ 为 KKT 点;
2238+
2239+
(2) 若 $u$ 中含有负分量,设 $u_j \lt 0$,此时从 $A_1$ 中去掉 $u_j$ 对应的行,得到 $\hat A_1$,令
2240+
2241+
$$
2242+
\begin{aligned}\hat{M}=&\begin{bmatrix}\hat{A}_1\\E\end{bmatrix}&\hat{P}=I-\hat{M}^T\left(\hat{M}\hat{M}^T\right)^{-1}\hat{M}\\&d=-\hat{P}\nabla f(x)\end{aligned}
2243+
$$
2244+
2245+
则 $d$ 为 $x$ 处的下降可行方向。
2246+
2247+
步骤:
2248+
2249+
![1765422713952](../images/最优化方法/1765422713952.png)
2250+
2251+
![1765422782977](../images/最优化方法/1765422782977.png)
2252+
2253+
![1765422882972](../images/最优化方法/1765422882972.png)
2254+
2255+
收敛性
2256+
2257+
优点:是非线性规划的一个基本方法.方法简单,实际应用的数值效果好.方法的重要性还在于,一些更有效的近代算法继续采用了它的基本思想。
2258+
2259+
收敛速度至多是线性的!
2260+
2261+
### Wolfe既约梯度法
2262+
2263+
$$
2264+
\begin{aligned}&\min f(x)\\&s.t.\quad Ax=b,\quad x\geq0\\&A_{m\times n},r(A)=m,b_{m\times1},f\text{是}E^{n}\text{上的连续可微函数}\end{aligned}
2265+
$$
2266+
2267+
基本思想:借鉴求解线性规划的单纯形算法,选择某些变量为基变量,其它的作为非基变量,将基变量用非基变量表示,并从目标函数中消去基变量,得到以非基变量为自变量的简化的目标函数,进而利用此函数的负梯度构造下降可行方向。
2268+
2269+
既约梯度: 简化目标函数关于非基变量的梯度。
2270+

0 commit comments

Comments
 (0)