逆采样便是要知道逆过程对应的条件概率,p theta xt-1xt,以是在KL divergence的表达式当中自然就想到要把分母按照逆过程的形式展开,毕竟逆过程的条件概率便是哀求的东西。
把稳展开实质上实在是一个假设,也便是逆过程并不一定假如马尔可夫链(Markov chain),蛮横无理的认为它就该当符合马尔可夫链的展开形式,然后再进一步求解,以是它是一个假设。
这种假设对应的天生办法叫做DDPM(Denoising Diffusion Probabilistic Model),比如在设置stable diffusion参数的时候个中有一个叫采样方法,它的有个选项便是DDPM。如果对p theta的展开形式做其他假设就会得到其他的采样方法,比如DDIM便是对应的其他的一种形式的展开方法。
在教程里只先容DDPM,由于一方面DDPM这种方法是最基本也是最直不雅观的一种采样方法,另一方面只要对DDPM理解足够透彻,其他采样方法只要看看论文,相信想把它搞懂也不是那么难,毕竟它们的实质的思想是同等的,只不过在一些数学的细节的处理方法上有些不同而已。
下面就来按照DDPM的展开形式来接着往下推导,还记得在良久良久以前给出了这个,正向马尔可夫列的展开形式吗?对。现在终于派上用场了,把展开形式带入到分子当中来,稍加整理就得到了下面这样一个表达式。
大家把稳到后面这个因子实在有一点像kldivergence,但是它不是,由于这里的分母是PC,XT减1XT,描述的是呃逆采样的过程。以是如果它的分子也是逆过程,比如它是qXT-1XT,那么它便是定义良好的KLdivergence。可惜它不是,由于这里的qxtxt减一顺序反了,看来它不是。
有什么办法可以填补吗?还真有,通过一通"骚操作"之后可以得到下面这个表达式。把稳橙色的分子箱虽然多了一个X0,但好在这里的XT减一和XT的顺序对了,也便是这个时候它的分子确实是描述逆过程了。并且还"意外地"创造这里的qxtxt减1x0居然是已知的,便是这里站在阁下等了良久的橙色的表达式。
当然了,前面这一项彷佛有点啰嗦,但是可以证明只要选定B1=0,那么前面这一项就和待拟合的参数theta是无关的。以是便是这么霸气,就直接把它给忽略掉了。以是丢失函数("loss function")也便是这里最小化的目标Ltheta,也就简化成了这样一种形式。
个中这里的每一项把它标记为Lthetat,把稳可以证明这里的每一项It都是非负的,是不是又是熟习的味道?之前讲KLdivergence含义的时候,就提到KLdivergence有一个非常好的性子,便是它一定是非负的。以是对付挤压Ltheta让丢失函数最小化的目标就可以通过最小化这里的每一项L thetat来实现。也便是把最小化丢失函数的问题就给进一步拆解成最小化每一项这样一个问题了。
这里要强调的是能做拆解的条件便是这里的每个Lthetat都是非负的。实在这个证明我在论文里实在是没有找到的,以是我就自己推了一下。以是如果对这个证明感兴趣,自己又
既然现在问题已经拆解了,只须要集中把稳力来剖析L theta t就可以了。这里的分子便是刚才提到的最右边的橙色表达式,分母ptheta是用来拟合的条件概率函数。由于想把期望的表达式直接给推导出来,以是进一步假设条件概率还是有一个高斯分布的形式。
p thteta所有待拟核的参数theta都被接管在这里的分布中央mu theta因子当中了。有没有创造这里推的彷佛就赖上高斯分布了,碰着任何处理不了的奇葩就把它引向高斯分布。这个实在是diffusion算法推导过程当中的一个小伎俩。由于其他概率函数形式实质上是不知道怎么处理的,只会处理高斯分布,以是不赖你赖谁?这就叫一招鲜,吃遍天。
假设也便是PC取高斯分布的假设在什么条件下是合理的?实在古人已经在论文当中已经证明了,当造点水平不大的时候,也便是在正向采样的过程当中,Xt和Xt-1差别不大的时候,逆过程也符合高斯分布,它便是一个合理的假设。
这个证明就不详细展开讲了,由于太过噜苏了,这也是为什么在采样参数的选择过程当中,每个p theta的取值都不会取太大,比如取值一样平常都是零点零几,零点零零几这个样子,也便是这个缘故原由导致的,由于须要这样一个假设。
有了关于p theta假设往后,就可以直接去积分求解这样一个期望值了,由于这里的数学步骤有一点繁琐,就不把这里的详细的数学步骤给写出来了。同样,如果你感对详细的数学推导比较感兴趣,也可以留言直接问我要这个推导。
总之,终极积分出来的结果是非常大略的,便是这样一个类似方差的表达式。阁下紫色的公式已经站了半天了,现在就把紫色的公式给它带进来,同时把绿色的miu theta写成这种和紫色公式类似的形式,可以把这个公式就看作是关于ipsum随它这个函数的定义,便是这么样规定的。
然后就得到了下面这样一个表达式,把稳前面提到epsilont的时候,它的含义是表示的是朝X0添加的噪点,以是这里最小化L thetat的含义也就变得非常直不雅观了,便是让epsilon theta和噪点epsilont越靠近越好。
因此epsilont可以看作是噪点epsilont的预测函数,便是要来预测这样一个添加的噪点,噪点的预测函数在编程环节会把它用一个神经网络来给它表示出来。总之根据前面的数学推导就可以把全体演习过程给它描述出来了。也便是这里表述的这样的形式,这里我就不读了,大家可以自己去看。
同样的推理过程可以表示成这样一种形式,在这一节里我已经把数学方面能够细化的地方也只管即便细化了,但是相信大多数没有打仗过Defusion算法同学看到这里可能还是会有点懵对不对?这很正常,我第一遍看Defusion算法论文的时候也有点看天书的觉得,碰着这种情形我的建议一样平常便是你再多看几遍就自然能够看懂了。
以是这个视频如果你一遍没看懂可以先把这个教程收藏起来,然后我可以担保的是diffusion算法最核心的思想和数学公式在这个视频里已经全部包含了,以是收藏往后你可以边看边思考,然后再多看几遍,相信你就能够彻底理解diffusion算法了。
如果你还是以为有些地方我没有讲清楚也欢迎留言,我们一起谈论,下一集就可以正式开始讲解编程了。末了再打个广告,如果喜好我的视频欢迎关注,带你理解最硬核的AI知识,我们下节课见。