wordpress网站如何提速,怎么建网站 手机版,湖南网页设计培训网站建设,网站如何防止恶意注册各位佬看文章之前#xff0c;可以先去看看这个视频#xff0c;并给这位up主点赞投币#xff0c;这位佬讲解的太好了#xff1a;大白话AI
1.前置知识的学习
1.1 正态分布特性
#xff08;1#xff09;正态分布的概率密度函数 f ( x ) 1 2 π σ e − ( x − μ ) …各位佬看文章之前可以先去看看这个视频并给这位up主点赞投币这位佬讲解的太好了大白话AI
1.前置知识的学习
1.1 正态分布特性
1正态分布的概率密度函数 f ( x ) 1 2 π σ e − ( x − μ ) 2 2 σ 2 , 记为 N ( μ , σ 2 ) f(x) {1 \over \sqrt{2 \pi } \sigma} e^{-{{(x-\mu)^2} \over {2 \sigma^2}}} ,记为N(\mu, \sigma^2) f(x)2π σ1e−2σ2(x−μ)2,记为N(μ,σ2)
当 μ 0 , σ 2 1 \mu 0, \sigma^21 μ0,σ21时则记为标准正态分布记为 N ( 0 , 1 ) N(0, 1) N(0,1), 又称为高斯分布。
2正态分布的基本性质 N ( μ 1 , σ 1 2 ) N ( μ 2 , σ 2 2 ) N ( μ 1 μ 2 , σ 1 2 σ 2 2 ) a ∗ N ( μ , σ ) N ( a ∗ μ , ( a ∗ σ ) 2 ) N(\mu_1, \sigma_1^2) N(\mu_2, \sigma_2^2) N(\mu_1\mu2, \sigma_1^2\sigma_2^2) \\ a*N(\mu, \sigma) N(a*\mu, (a*\sigma)^2) N(μ1,σ12)N(μ2,σ22)N(μ1μ2,σ12σ22)a∗N(μ,σ)N(a∗μ,(a∗σ)2)
1.2 贝叶斯定理
A , B A, B A,B是两个随机事件 P ( A ) P(A) P(A)表示 事件 A 事件A 事件A发生的概率 P ( B ∣ A ) P(B|A) P(B∣A)表示A事件发生的情况下B事件发生的概率则贝叶斯定理如下 P ( A ∣ B ) P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B) {{P(B|A) * P(A)} \over P(B)} P(A∣B)P(B)P(B∣A)∗P(A)
2. 前向过程加噪 如图所示前向过程则是一个加载过程在每个时间步都从正态分布中随机采样一个和图片等大的噪声也可以理解为噪声图片则加噪过程 x 1 β 1 ∗ ϵ 1 1 − β 1 ∗ x 0 x_1 \sqrt{\beta_1} * \epsilon_1 \sqrt{1-\beta_1} * x_0 x1β1 ∗ϵ11−β1 ∗x0 其中 x 0 x_0 x0表示原始图片 ϵ 1 \epsilon_1 ϵ1 表示随机噪声 β 1 \beta_1 β1表示扩散速度 T T T表示扩散的次数则可以一次推导 x 1 β 1 ∗ ϵ 1 1 − β 1 ∗ x 0 x 2 β 2 ∗ ϵ 2 1 − β 2 ∗ x 1 x 3 β 3 ∗ ϵ 3 1 − β 3 ∗ x 2 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ x T β T ∗ ϵ T 1 − β T ∗ x T − 1 前后关系就可以记为 x t β t ∗ ϵ t 1 − β t ∗ x t − 1 x_1 \sqrt{\beta_1} * \epsilon_1 \sqrt{1-\beta_1} * x_0 \\ x_2 \sqrt{\beta_2} * \epsilon_2 \sqrt{1-\beta_2} * x_1 \\ x_3 \sqrt{\beta_3} * \epsilon_3 \sqrt{1-\beta_3} * x_2 \\ ······ \\ x_T \sqrt{\beta_T} * \epsilon_T \sqrt{1-\beta_T} * x_{T-1} \\ 前后关系就可以记为 \\ x_t \sqrt{\beta_t} * \epsilon_t \sqrt{1-\beta_t} * x_{t-1} \\ x1β1 ∗ϵ11−β1 ∗x0x2β2 ∗ϵ21−β2 ∗x1x3β3 ∗ϵ31−β3 ∗x2⋅⋅⋅⋅⋅⋅xTβT ∗ϵT1−βT ∗xT−1前后关系就可以记为xtβt ∗ϵt1−βt ∗xt−1 为简化后续运算令 α t 1 − β t \alpha_t 1 - \beta_t αt1−βt, 则有 x t 1 − α t ∗ ϵ t α t ∗ x t − 1 x_t \sqrt{1- \alpha_t} * \epsilon_t \sqrt{\alpha_t} * x_{t-1} xt1−αt ∗ϵtαt ∗xt−1
思考如何能更快的得到 x T x_T xT因为如果加噪1000步岂不是要计算1000次上述的运算好的下面介绍怎样依赖正态分布的可加性来简化运算从而推导出 x 0 x_0 x0到 x t x_t xt的关系 由 x t 1 − α t ∗ ϵ t α t ∗ x t − 1 x t − 1 1 − α t − 1 ∗ ϵ t − 1 α t − 1 ∗ x t − 2 把 x t − 1 代入到 x t 中可以推导出 x t 1 − α t ∗ ϵ t α t ∗ ( 1 − α t − 1 ∗ ϵ t − 1 α t − 1 ∗ x t − 2 ) a t ( 1 − a t − 1 ) ∗ ϵ t − 1 1 − a t ∗ ϵ t a t a t − 1 ∗ x t − 2 其中 ϵ t − 1 和 ϵ t 是两个随机噪声且两者是两个独立的随机变量。 打个比喻我们有一个骰子掷两次分别得到 ϵ t − 1 和 ϵ t 完全可以等效 于我们有两个骰子掷一次。即一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布所以 , 如果我们知道两个骰子掷一次的概率分布然后进行一次采样即可。 由 \\ x_t \sqrt{1- \alpha_t} * \epsilon_t \sqrt{\alpha_t} * x_{t-1} \\ x_{t-1} \sqrt{1- \alpha_{t-1}} * \epsilon_{t-1} \sqrt{\alpha_{t-1}} * x_{t-2} \\ 把x_{t-1}代入到x_t中可以推导出 \\ x_t \sqrt{1- \alpha_t} * \epsilon_t \sqrt{\alpha_t} * (\sqrt{1- \alpha_{t-1}} * \epsilon_{t-1} \sqrt{\alpha_{t-1}} * x_{t-2}) \\ \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} \sqrt{1-a_t} * \epsilon_t \sqrt{a_t a_{t-1}} * x_{t-2} \\ 其中\epsilon_{t-1} 和 \epsilon_{t} 是两个随机噪声且两者是两个独立的随机变量。\\ 打个比喻我们有一个骰子掷两次分别得到\epsilon_{t-1} 和 \epsilon_{t}完全可以等效\\ 于我们有两个骰子掷一次。即一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布所以,\\ 如果我们知道两个骰子掷一次的概率分布然后进行一次采样即可。 \\ 由xt1−αt ∗ϵtαt ∗xt−1xt−11−αt−1 ∗ϵt−1αt−1 ∗xt−2把xt−1代入到xt中可以推导出xt1−αt ∗ϵtαt ∗(1−αt−1 ∗ϵt−1αt−1 ∗xt−2)at(1−at−1) ∗ϵt−11−at ∗ϵtatat−1 ∗xt−2其中ϵt−1和ϵt是两个随机噪声且两者是两个独立的随机变量。打个比喻我们有一个骰子掷两次分别得到ϵt−1和ϵt完全可以等效于我们有两个骰子掷一次。即一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布所以,如果我们知道两个骰子掷一次的概率分布然后进行一次采样即可。 由正态分布的基本性质可知 ϵ t 和 ϵ t − 1 服从 N ( 0 , 1 ) , 即 ϵ t ∼ N ( 0 , 1 ) , ϵ t − 1 ∼ N ( 0 , 1 ) 可以推导出 1 − a t ∗ ϵ t ∼ N ( 0 , 1 − α t ) a t ( 1 − a t − 1 ) ∗ ϵ t − 1 ∼ N ( 0 , a t − a t ∗ a t − 1 ) ) 由正态分布的基本性质可知\\ \epsilon_t和\epsilon_{t-1}服从N(0, 1),即\epsilon_t \sim N(0,1), \epsilon_{t-1} \sim N(0,1) \\ 可以推导出 \sqrt{1-a_t} * \epsilon_t \sim N(0, 1- \alpha_t) \\ \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} \sim N(0, a_t-a_t*a_{t-1})) 由正态分布的基本性质可知ϵt和ϵt−1服从N(0,1),即ϵt∼N(0,1),ϵt−1∼N(0,1)可以推导出1−at ∗ϵt∼N(0,1−αt)at(1−at−1) ∗ϵt−1∼N(0,at−at∗at−1)) 从而推导出 a t ( 1 − a t − 1 ) ∗ ϵ t − 1 1 − a t ∗ ϵ t ∼ N ( 0 , 1 − a t ∗ a t − 1 ) 从而推导出 \\ \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} \sqrt{1-a_t} * \epsilon_t \sim N(0, 1-a_t*a_{t-1}) 从而推导出at(1−at−1) ∗ϵt−11−at ∗ϵt∼N(0,1−at∗at−1) 进而推导出 x t 1 − a t ∗ a t − 1 ∗ ϵ a t ∗ a t − 1 ∗ x t − 2 , 其中 ϵ ∼ N ( 0 , 1 − a t ∗ a t − 1 ) 进而推导出\\ x_t \sqrt{1-a_t*a_{t-1}} * \epsilon \sqrt{a_t*a_{t-1}}*x_{t-2}, 其中\epsilon \sim N(0, 1-a_t*a_{t-1}) 进而推导出xt1−at∗at−1 ∗ϵat∗at−1 ∗xt−2,其中ϵ∼N(0,1−at∗at−1) 这里就可到了 x t 和 x t − 2 之间的关系然后依靠上面的方法就可以一次推导出 x t 到 x 0 的关系 ( 数学归纳法证明 ) 具体如下 x t 1 − a t a t − 1 a t − 2 . . . a 1 ∗ ϵ a t a t − 1 a t − 2 . . . a 1 ∗ x 0 其中 ϵ ∼ N ( 0 , 1 − a t a t − 1 a t − 2 . . . a 1 ) 这里就可到了x_t和x_{t-2}之间的关系然后依靠上面的方法就可以一次推导出x_t到x_0的关系(数学归纳法证明)具体如下 \\ x_t \sqrt{1 - a_ta_{t-1}a_{t-2}...a_1} * \epsilon \sqrt{a_ta_{t-1}a_{t-2}...a1} * x_0 \\ 其中\epsilon \sim N(0, 1 - a_ta_{t-1}a_{t-2}...a_1) 这里就可到了xt和xt−2之间的关系然后依靠上面的方法就可以一次推导出xt到x0的关系(数学归纳法证明)具体如下xt1−atat−1at−2...a1 ∗ϵatat−1at−2...a1 ∗x0其中ϵ∼N(0,1−atat−1at−2...a1) 为了方便表示 , 记 a ˉ t a t a t − 1 a t − 2 . . . a 1 则 x t 1 − a ˉ t ∗ ϵ a ˉ t x 0 为了方便表示,记 \bar{a}_t a_ta_{t-1}a_{t-2}...a_1 \\ 则 x_t \sqrt{1 - \bar{a}_t} * \epsilon \sqrt{\bar{a}_t} x_0 为了方便表示,记aˉtatat−1at−2...a1则xt1−aˉt ∗ϵaˉt x0
至此前向过程就记录完成了我们得到 x 0 到 x t x_0到x_t x0到xt的关系并且可以只通过一次采样就能得到。
3. 反向过程去噪 去噪过程就是从 x T x_T xT一步步反推回 x 0 x_0 x0。
3.1 反向原理推导
由贝叶斯定理 P ( A ∣ B ) P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B) {{P(B|A) * P(A)} \over P(B)} P(A∣B)P(B)P(B∣A)∗P(A) 我们可以令 由于 x t 到 x t − 1 是一个随机过程则令 P ( x t − 1 ∣ x t ) : 表示在给定 x t 的情况下 x t − 1 的概率。 套用贝叶斯定理得 P ( x t − 1 ∣ x t ) P ( x t ∣ x t − 1 ) ∗ P ( x t − 1 ) P ( x t ) 其中 P ( x t ) 和 P ( x t − 1 ) 分别表示 x t 和 t t − 1 的概率 , 也就是从 x 0 原图得到它们的概率。 由于x_t到x_{t-1}是一个随机过程则令 \\ P(x_{t-1}|x_t): 表示在给定x_t的情况下x_{t-1}的概率。 \\ 套用贝叶斯定理得 \\ P(x_{t-1} | x_t) { P(x_t | x_{t-1}) * P(x_{t-1}) \over P(x_t)} \\ 其中P(x_t)和P(x_{t-1})分别表示x_t和t_{t-1}的概率,也就是从x_0原图得到它们的概率。 由于xt到xt−1是一个随机过程则令P(xt−1∣xt):表示在给定xt的情况下xt−1的概率。套用贝叶斯定理得P(xt−1∣xt)P(xt)P(xt∣xt−1)∗P(xt−1)其中P(xt)和P(xt−1)分别表示xt和tt−1的概率,也就是从x0原图得到它们的概率。 所以可以在每个式子后面添加一个先验 x 0 , 即 P ( x t − 1 ∣ x t , x 0 ) P ( x t ∣ x t − 1 , x 0 ) ∗ P ( x t − 1 ∣ x 0 ) P ( x t ∣ x 0 ) 所以可以在每个式子后面添加一个先验x0,即 \\ P(x_{t-1} | x_t,x_0) { P(x_t | x_{t-1},x_0) * P(x_{t-1} | x_0) \over P(x_t | x_0)} \\ 所以可以在每个式子后面添加一个先验x0,即P(xt−1∣xt,x0)P(xt∣x0)P(xt∣xt−1,x0)∗P(xt−1∣x0) 有 P ( x t ∣ x t − 1 , x 0 ) 给定 x t − 1 到 x t 的概率。 前向过程中可知 x t 1 − α t ∗ ϵ t α t ∗ x t − 1 x t 1 − a ˉ t ∗ ϵ a ˉ t x 0 ϵ t 和 ϵ 分别服从 N ( 0 , 1 ) 从而推导出 x t ∼ N ( a t x t − 1 , 1 − a t ) 或 x t ∼ N ( a ˉ t x 0 , 1 − a ˉ t ) 以及 x t − 1 ∼ N ( a ˉ t − 1 x 0 , 1 − a ˉ t − 1 ) 有 \\ P(x_t|x_{t-1}, x_0) 给定x_{t-1}到x_t的概率。 \\ 前向过程中可知 \\ x_t \sqrt{1- \alpha_t} * \epsilon_t \sqrt{\alpha_t} * x_{t-1} \\ x_t \sqrt{1 - \bar{a}_t} * \epsilon \sqrt{\bar{a}_t} x_0 \\ \epsilon_t和\epsilon分别服从N(0, 1) \\ 从而推导出 \\ x_t \sim N(\sqrt{a_t} x_{t-1}, 1-a_t) \\ 或 \\ x_t \sim N(\sqrt{\bar{a}_t} x_0, 1-\bar{a}_t) \\ 以及 \\ x_{t-1} \sim N(\sqrt{\bar{a}_{t-1}} x_0, 1-\bar{a}_{t-1}) \\ 有P(xt∣xt−1,x0)给定xt−1到xt的概率。前向过程中可知xt1−αt ∗ϵtαt ∗xt−1xt1−aˉt ∗ϵaˉt x0ϵt和ϵ分别服从N(0,1)从而推导出xt∼N(at xt−1,1−at)或xt∼N(aˉt x0,1−aˉt)以及xt−1∼N(aˉt−1 x0,1−aˉt−1)
然后就可以把他们分别写成概率密度形式 然后将概率密度函数带入到贝叶斯定理中就可以得到 化简成高斯分布得
P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt−1∣xt,x0) 由此推导出 我们的目的是通过 x t 求出 x t − 1 , 然后由 x t − 1 推导出 x t − 2 ⋅ ⋅ ⋅ 直到求出 x 0 但现在的式子中出现了 x 0 , 怎么办 没关系我们之前由 x t 和 x 0 的关系 x t 1 − a ˉ t ∗ ϵ a ˉ t x 0 我们的目的是通过x_t求出x_{t-1},然后由x_{t-1}推导出x_{t-2}···直到求出x_0\\ 但现在的式子中出现了x_0,怎么办 \\ 没关系我们之前由x_t和x_0的关系 \\ x_t \sqrt{1 - \bar{a}_t} * \epsilon \sqrt{\bar{a}_t} x_0 \\ 我们的目的是通过xt求出xt−1,然后由xt−1推导出xt−2⋅⋅⋅直到求出x0但现在的式子中出现了x0,怎么办没关系我们之前由xt和x0的关系xt1−aˉt ∗ϵaˉt x0 变换可以得到 将它带入到 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt−1∣xt,x0)的概率密度函数中可得 它表示的是对于任意 x t x_t xt的图像都可以用 x 0 x_0 x0加载而来而只要知道了从 x 0 x_0 x0到 x t x_t xt加入的噪声 ϵ \epsilon ϵ就能得到它前一时刻 x t − 1 x_{t-1} xt−1的概率分布即 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt−1∣xt,x0) 。
这里我们就需要使用神经网络输入 x t x_t xt时刻的图像预测此图像相对于某个 x 0 x_0 x0原图加入的噪声 ϵ \epsilon ϵ。
如图所示也就是说 Step1: 在神经网络中输入 x t x_t xt时刻图像训练得到此图像相对于某个 x 0 x_0 x0原图加入的噪声 ϵ \epsilon ϵ。
Step2 将噪声 ϵ \epsilon ϵ带入到 x t − 1 x_{t-1} xt−1的概率密度函数 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt−1∣xt,x0)中
Step3: 从 x t − 1 x_{t-1} xt−1的概率密度函数 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt−1∣xt,x0)中随机采样得到 x t − 1 x_{t-1} xt−1(即t-1时刻对应的图像)
Step4: 将 x t − 1 x_{t-1} xt−1作为神经网络的输入带入到Step1中循环Step1 ~ Step3知道得到 x 0 x_0 x0
DDPM中的神经网络选用的UNet.
至此结束