赞
踩
生成模型的目标是在给定了数据集D,并且假设这个数据集的底层分布(underlying distribution)是Pdata,我们希望够近似出这个数据分布。如果我们能够学习到一个好的生成模型,我们就能用这个生成模型为下游任务做inference 推理。
下面我们简单回顾一下生成模型和判别模型,读者可以自行选择跳过这小节。
对于判别模型(discriminative model),像逻辑回归模型,是对给定的数据点预测一个标签label,但是对于生成模型,它学习的是整个数据的联合分布(joint distribution)。当然判别模型也可以理解为是给定了输入数据后,标签label的生成模型。但一般生成模型指的是高维数据。
那么如果我们的建模方式不一样,对应的模型也是不一样的。假设我们希望求 p(Y|X),对于左边的模型,我们需要用贝叶斯规则计算 p(Y) 和 p(X|Y)。而对于右边的模型,它已经可以直接用来计算 p(Y|X), 因为 p(X) 是给定的,所以我们可以不用给它建模。
我们将随机变量在图上显示出来:
对于生成模型的联合分布: p(Y,X)=p(Y)p(X1|Y)p(X2|Y,X1)...p(Xn|Y,X1,…,Xn−1)我们需要考虑的是怎么确定 p(Xi|(X)pa(i),Y)的参数,这里的 pa(i)指的是指向随机变量 Xi的随机变量集合。
对于判别式模型的联合分布: p(Y,X)=p(X1)p(X2|X1)p(X3|X1,X2)...p(Y|X1,…,Xn)
朴素贝叶斯(Naive Bayes),它是生成模型的一个特例,它假设在给定了label之后,各个随机变量之间是独立的,这就是它 naive 的原因吧,如下图:
用训练数据估计参数,用贝叶斯规则做预测:
逻辑回归并不要求随机变量之间独立。
但是生成模型依然很有用,根据链式法则:
p(Y,X)=p(X|Y)p(Y)=p(Y|X)p(X)
假设 X的部分随机变量是可观测的,我们还是要计算 p(Y|Xevidence),那么我们就可以对这些看不到的随机变量marginalize(积分求和)。
生成模型的学习(learning)是指在给定一个数据分布 pdata和一个模型家族 (model family)的情况下,我们要从这个模型家族中找到一个近似分布pθ,使得它和数据分布尽可能的近。
但是要怎么衡量这个近呢?我们用距离来衡量, 写成数学表达式:
minθ∈d(pdata,pθ)
因此,我们自然而然会对三个问题感兴趣:
模型家族M的表达式是神马?
目标函数 d(⋅) 是什么样子的?
最小化 d(⋅) 的优化过程是什么?
一个生成模型应该是一个联合概率分布 p(x),假设这个概率分布是从一堆狗狗的图片上学习到的,那么这个概率分布应该可以:
生成(Generation), 即采样(sampling) xnew∼p(x),并且采样 xnew图片应该很像狗狗。
密度估计(Density estimation),如果给了一张狗狗的图片 x,那么这个概率分布 p(x) 的值应该很高。或者给了一张不相关的图片,p(x)的值很低,这可以用来做异常检测。
无监督表示学习(unsupervised representation learning), 我们可以学习到这些图片的一些公共信息,像是一些特征,耳朵,尾巴…
但我们也发现量化评估上面的任务1和任务3其实是很难的;其次,并不是所有的模型家族在这些任务上都推理速度都快且精准,也正是因为推理过程的折中和权衡,导致了各种不同的方法。
数学建模为随机分布,忽略了输入数据分布逐步转化到最后生成图片的随机过程,只关心输入数据分布到生成数据分布的转化分布。
自回归模型
变分自编码器
正则化流模型
生成对抗网络
数学建模为随机过程,输入数据分布经历了一个过程逐步转化成最终生成图片,对转化的随机过程也考虑进去,用T步随机噪声过程来模拟(扩散模型家族)。
1.DDIM
2.SDE
3.stable diffusion
深度隐变量模型(Deep Latent Variable Models)通常长什么样子呢?
假设隐变量 z服从正态分布 z∼N(0,I)
p(x|z)=(μθ(z),Σθ(z)) 其中 μθ和 Σθ都是神经网络
我们希望在训练完之后,z可以有一定的意义,能表示有意义的特征,这些特征可以用在无监督学习里面。
特征的计算可以通过 p(z|x)
当且仅当 q=p(z|x;θ) 的时候,等号成立。证明略,读者可以带入得到,也可以参考 VI 这节的证明。
因此,我们需要找到一个分布 q(z) 它必须和 p(z|x;θ)尽可能相近的时候,才能让等式的右边的证据下界和左边的likelihood越接近。另外左边的likelihood,也被称之为evidence。
熟悉 KL divergence的读者应该已经发现,当我们把右边的式子移到左边,其实就是分布q(z)和 分布p(z|x;θ)的KL散度:
DKL(q(z)||p(z|x;θ))=logp(x;θ)−∑zq(z)logp(x,z;θ)−H(q)≥0
当然,q=p(z|x;θ)的时候,KL散度为 0。
这个时候我们就将问题转到了如何找到这样的分布 q(z)?
在开始学习VAE的参数之前,我们看看这里有两组参数需要我们优化,一组是对应于分布q 的参数 ϕ, 另一组是对应分布 p 的参数 θ,见下面的式子:
我们再来看一张学习 VAE,经常会看到的图,很好的解释了 ELBO,KL散度和likelihood之间的关系:
注意上面图片中的q是conditioned在x 上的,暂时可以理解为给了我们一些 x 的信息后,我们的分布 q 才能更容易接近 p(z|x;θ),或者理解为 q的空间可以限定的小一些,这样更容易采样到有意义的样本。
从上面的推导中,我们可以看到最大化likelihood这个问题被转换为最大化证据下界ELBO。接下来,我们来看一下要怎么联合优化参数 ϕ 和 θ来最大化 ELBO。
根据前面的论述,我们知道我们的目标是要让证据下界尽可能的大,这里再贴一下 ELBO:
从这个式子中,我们可以看到如果我们想求 ∇θ(x;θ,ϕ)和 ∇ϕ(x;θ,ϕ)。如果这个期望函数有对应的closed-form解自然是很好的,比如我们在 VI-变分推理里举的那个例子,但是如果没有,对于前者我们求起来很方便,假设q(z;ϕ)是容易采样的,我们可以用采样的方法:
但是要怎么求 ∇ϕ(x;θ,ϕ) 呢?我们的期望是依赖 ϕ 的,这个求解过程瞬间就变复杂了,当然其实也是可以用蒙特卡洛采样的方法来求解的,这里先不讲了。我们来看看另一个方法先。
我们将上面的式子简化一下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。