diffusion精讲(唐宇迪)_哔哩哔哩_bilibili
这篇文章主要用于自己后面复习使用,我的建议是大家在看完视频前尽量少看csdn等文章,很难理解,可以边看视频或者看完视频将本文配套使用。文章仅供学习。
正向过程
李宏毅中提到的的α如何取值
李宏毅中提到的â其实是累乘,是经过一系列递推后得到的结果,宇哥666。
第六行和最后一行的噪音上面没有一
正向过程可以直接推导出最后,但是反向过程需要一步一步向前还原。上一篇中李宏毅管这叫auto-regressive。
逆向过程
总体来说
就是我们要通过Xt的分布求Xt-1的分布,但是无法直接求出来。但由于通过Xt-1的分布可以求出Xt的分布,那么就可以借助贝叶斯公式求出Xt-1的分布。
因此
这里并不是等号,而是正比例符号;并且1-αt=βt;
前三行先将之前的式子进行化简;
第五行是将正态分布计算公式化简,这里说可以得到均值和方差的意思是可以将第五行化简的式子与第三行的式子一一对应,可以从第三行红色的部分计算出方差,再将得到的方差带入第三行蓝色的式子计算出均值,就是这里说得到均值和方差。
逆向过程的目的就是求出X0,所以X0不可知。所以这里用Xt来表示X0,目前的均值仅与Xt有关。
倒数第二行Zt上没有一
在原始论文中直接使用β作为Xt-1的方差。真实方差应该是:(1-ât-1)βt/1-ât。
这里Zt是求不出来的,因此训练模型来预测Zt。相关论文中的模型采用UNet。模型输入参数有两个,Xt和step t。t是用来得到真实噪音Zt,然后用预测的噪音Zt和真实的噪音Zt计算损失。
原始论文中直接使用βt-1作为Xt-1的方差
宇哥这里灵魂发问:为什么要用UNet网络,而不用更复杂的网络?
前向过程:
2:从数据集中采样batch_size张图片
3:t属于[1,T],并且batch_size内每张图片对应的T是不一样的!
4:生成噪声。
5:训练UNet参数。
逆向过程:
1:在标准正态分布中随机采样XT
2:for循环
3:除了最后一步,都采样一个Z
4:推导出Xt-1