VAE与扩散模型 - 概率学入门与初始
- 我写这个是因为我自己在进行模型搭建的过程中,意识到自己对于扩散模型和VAE的认识是远远不够的。于是在网络上进行了对别人产出内容的消化,并且将自己的思考记下。
1 . 概率学入门
随机变量\(X\) : 本质上是一个函数,将每个结果映射为实数的函数。比如设随机变量 \(X\) 为扔硬币2次出现正面的次数,那么\(X\in\{0,1,2\}\)。
\(P(X)\):随机变量的概率分布。比如\(P(X=A)=0.5\)。大写 \(X\) 表示随机变量,小写 \(x\) 表示一次采样得到的具体结果。
\(N(\mu,\sigma^2)\):高斯分布
- \(\mu\):均值,决定分布中心在哪里。
- \(\sigma^2\):方差,决定分布有多分散。越大越分散。
- \(\sigma\):标准差,等于方差的平方根。
条件概率公式:\(P(A\cap B)=P(A{\mid}B)P(B)=P(B{\mid}A)P(A)\)
- \(P(A\mid B)\):已知 B 发生时,A 发生的概率。
- \(P(A\cap B)\):事件 A 和事件 B 同时发生的概率。\(P(A\cap B) 也可以写作 P(AB)\)
- \(P(B)\):事件 B 发生的概率,要求 \(P(B)>0\)。
概率密度 \(p(x)\):一个连续随机变量的取值,在不同位置附近出现的可能性有多集中。
注意我重标的词语:连续随机。对于具有概率密度的连续随机变量,我们是取不到的,因为我们可以取\(170,\ 170.1,\ 170.01,\ 170.001,\cdots\) 这就是概率密度出场的时候了。我们可以问:\(P\) 在 170 ~ 180 的概率有多少?
\(P(a\le X\le b)=\int_a^b p(x)\,dx\)
我们可以说:概率 = 概率密度在区间上的积分
边缘概率:只关心某一个随机变量的概率分布,不考虑其他随机变量具体取什么值。我们把它叫做边缘化,也就是把其他变量所有可能的情况加起来,或者积分掉。
举个例子:\(P(X=1)=P(X=1,Y=1) + P(X=1,Y=2)\)
也就是说 \(p_X(x)=\int_{-\infty}^{+\infty}p_{X,Y}(x,y)\,dy\)
期望:
设:
| X的取值 | 概率 |
|---|---|
| 1 | 0.2 |
| 2 | 0.3 |
| 3 | 0.5 |
\(E[X]=1\times0.2+2\times0.3+3\times0.5=2.3\)
如果要求的是 \(f(X)=X^2\) 的期望呢?
\(E[f(X)]=1^2\times0.2+2^2\times0.3+3^2\times0.5\)
可以说:\(E[f(X)]=\int p(x)f(x)\,dx\)
假设存在两个随机变量:\(X_1,X_2\)
它们的联合概率密度是:\(p(x_1,x_2)\)
现在我们想计算:\(E[f(X_1)]\)
注意!函数 \(f\) 只与 \(X_1\) 有关,和 \(X_2\) 没有直接关系。
如果按照联合概率密度计算期望,可以写成:
\(E[f(X_1)] = \int\int p(x_1,x_2)f(x_1)\,dx_2\,dx_1\)
但是\(p_X(x)=\int_{-\infty}^{+\infty}p_{X,Y}(x,y)\,dy\) ,也就是\(p(x_1)=\int p(x_1,x_2)\,dx_2\)
中间合起来,变为\(E[f(X_1)] = \int p(x_1)f(x_1)\,dx_1\),很神奇吧。
Jensen不等式: \(\log\mathbb E[X]\geq\mathbb E[\log X]\) 注:Jensen 不等式只把 \(\log\) 作用到期望内部的函数上
2 . 初识
扩散模型,比如DDPM,原名Denoising Diffusion Probabilistic Models。全名译文是去噪 · 扩散 · 概率 · 模型。所以这是一个概率生成式模型。模型要学习什么样的图片更可能出现。
一张图有很多像素,我们可以把图像概括成\(x\in\{x_1,x_2,x_3\cdots\}\),对于连续像素图像(近似建模),\(p_\theta(x)\)就是指模型预测的这张图像素的分布的概率密度函数。(概率分布 \(p_\theta(x)\) 在参数确定后,模型如何描述数据的出现规律?)模型的目标就是使预测的\(p_\theta(x)\)尽可能接近真实数据分布 \(p_{\text{data}}(x)\),也就是\(p_\theta(x)\approx p_{\text{data}}(x)\)。
这就引出了一个概念:似然函数。当我们投10次硬币,8次正面,2次反面,那么这个硬币是正面的概率是多少?比如我们有两个选择:0.5 或者 0.8 。在这些候选参数中,正面概率为 80% 的模型最能解释已经观察到的这 10 次结果。似然函数就是这个问题的解答:根据已有的信息,寻找一个最能解释当前信息的参数。
设 \(D\in\{1,0,1,1,1,1,1,0,1,1\}\),10 个数字里有 8 个是 1 ,2 个是 0 。
\(P(X=x\mid\theta)= \begin{cases} \theta,&x=1\\ 1-\theta,&x=0 \end{cases}\) 这是概率分布。
在已经知道\(\theta\)的情况下,我们求出发生\(D\)事件的概率:\(P(D\mid\theta)=\theta^8(1-\theta)^2\)
这就是似然函数\(L(\theta)=P(D\mid\theta)=\theta^8(1-\theta)^2\), 我们就是要求这个函数最大时的参数\(\theta\)
\(\hat\theta=\arg\max_\theta L(\theta)\)
在图像里也是一样的。我们可以求出联合概率 \(P_\theta(x)=p_\theta(x_1)p_\theta(x_2)p_\theta(x_3)\cdots=L(\theta)\)
求出 \(\theta\) 使得 \(L(\theta)\) 最大。为了计算方便,我们通常取对数使得乘法变成加法。\(\log L(\theta)=\sum_{i=1}^{N}\log p_\theta(x_i)\)
它要求模型调整参数 \(\theta\) ,使训练数据的对数似然尽可能大。问题来了,我们并不知道 \(x\) 的概率密度 \(p(x)\)。

浙公网安备 33010602011771号