当前位置:   article > 正文

生成模型技术发展过程

生成模型

生成模型

生成模型和判别模型的差异

生成模型的目标是在给定了数据集D,并且假设这个数据集的底层分布(underlying distribution)是Pdata,我们希望够近似出这个数据分布。如果我们能够学习到一个好的生成模型,我们就能用这个生成模型为下游任务做inference 推理。

下面我们简单回顾一下生成模型和判别模型,读者可以自行选择跳过这小节。

生成模型 VS 判别模型

对于判别模型(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

生成模型的学习(learning)是指在给定一个数据分布 pdata和一个模型家族 (model family)的情况下,我们要从这个模型家族中找到一个近似分布pθ,使得它和数据分布尽可能的近。

但是要怎么衡量这个呢?我们用距离来衡量, 写成数学表达式:

minθ∈d(pdata,pθ)

因此,我们自然而然会对三个问题感兴趣:

模型家族M的表达式是神马?

  1. 目标函数 d(⋅) 是什么样子的?

  1. 最小化 d(⋅) 的优化过程是什么?

推理-Inference

一个生成模型应该是一个联合概率分布 p(x),假设这个概率分布是从一堆狗狗的图片上学习到的,那么这个概率分布应该可以:

  1. 生成(Generation), 即采样(sampling) xnew∼p(x),并且采样 xnew图片应该很像狗狗。

  1. 密度估计(Density estimation),如果给了一张狗狗的图片 x,那么这个概率分布 p(x) 的值应该很高。或者给了一张不相关的图片,p(x)的值很低,这可以用来做异常检测。

  1. 无监督表示学习(unsupervised representation learning), 我们可以学习到这些图片的一些公共信息,像是一些特征,耳朵,尾巴…

但我们也发现量化评估上面的任务1和任务3其实是很难的;其次,并不是所有的模型家族在这些任务上都推理速度都快且精准,也正是因为推理过程的折中和权衡,导致了各种不同的方法。

数学建模为随机分布,忽略了输入数据分布逐步转化到最后生成图片的随机过程,只关心输入数据分布到生成数据分布的转化分布。

  1. 自回归模型

  1. 变分自编码器

  1. 正则化流模型

  1. 生成对抗网络

数学建模为随机过程,输入数据分布经历了一个过程逐步转化成最终生成图片,对转化的随机过程也考虑进去,用T步随机噪声过程来模拟(扩散模型家族)。

1.DDIM

2.SDE

3.stable diffusion

VAE

深度隐变量模型(Deep Latent Variable Models)通常长什么样子呢?

假设隐变量 z服从正态分布 z∼N(0,I)

  1. p(x|z)=(μθ(z),Σθ(z)) 其中 μθ和 Σθ都是神经网络

  1. 我们希望在训练完之后,z可以有一定的意义,能表示有意义的特征,这些特征可以用在无监督学习里面。

  1. 特征的计算可以通过 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。

学习Learning

根据前面的论述,我们知道我们的目标是要让证据下界尽可能的大,这里再贴一下 ELBO:

从这个式子中,我们可以看到如果我们想求 θ(x;θ,ϕ)ϕ(x;θ,ϕ)。如果这个期望函数有对应的closed-form解自然是很好的,比如我们在 VI-变分推理里举的那个例子,但是如果没有,对于前者我们求起来很方便,假设q(z;ϕ)是容易采样的,我们可以用采样的方法:

但是要怎么求 ϕ(x;θ,ϕ) 呢?我们的期望是依赖 ϕ 的,这个求解过程瞬间就变复杂了,当然其实也是可以用蒙特卡洛采样的方法来求解的,这里先不讲了。我们来看看另一个方法先。

再参数化-Reparameterization

我们将上面的式子简化一下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/379765
推荐阅读
相关标签