【花师小哲】当代炼金术(神经网络)前沿(8)——Diffusion
虽然最近ChatGPT大火,但是似乎AI绘画仍然还是一个讨论热点,不过Diffusion的基本原理早就席卷整个互联网了,但是对我来说还是新的。
我之前是不太想碰整个话题的,但是Diffusion这项技术本身也没有做错什么,而且指不定我之后的研究是有可能借用Diffusion的(例如Diffusion可以用来做压缩),还是去研究了下Diffusion是个什么东西,以及和ChatGPT做下对比,说明我理解下Diffusion为什么会这么流行。

0.Diffusion是很数学的
这点还是要事先说明,即Diffusion是一种很数学的方法。当然,这不是说AI的其他技术不数学,像机器学习要是从原理学习而不是从代码学习的话基本就是高高等数学课(高数+线代+概统+应用)

1.什么是Diffusion,Diffusion怎么生成图像
如果是看到封面的朋友应该看到了这句话:

当然,Diffusion我们一般译作“扩散”,好像和硫酸没太大关系,但是放张图就很清楚了:

如图,从左边走向右边,这就是一次扩散过程,看起来确实和扔进硫酸里很像。
当然,从右到左的话就是逆扩散过程,没错,可能有朋友已经注意到了,如果我能把逆过程打通,不就可以从一个噪声图片中生成一张图片了吗?
Diffusion模型就是这么想的。当然,具体怎么实现这个过程就不展开(实际上因为我自己也不想去看那些数学证明)

2.马尔可夫过程
有些其他的东西还是要稍微讲一下的。我们上面所定义的过程是个马尔可夫过程,这个概念非常重要,在强化学习、语音识别、基础机器学习算法等众多领域都有应用,也是研究可解释性的一个重要基础概念。
这里插播一下,我本科第一次学马尔可夫过程的时候是在语音识别课上学到的,语音识别前几年在AI领域还提的比较多,最近好像是完全销声匿迹了(难道不是因为语音识别的难度上限也就那样吗)
马尔可夫过程也比较简单,就是说我们做事是一步步做的,下一步的结果仅仅和当前状态有关。也就是说,我们走一遍扩散的过程中,是一点点地往里面加噪声的,这样,逆扩散的难度就不会像GAN那样一步登天了,这可能就是Diffusion成功的原因。
(顺便,GAN的介绍看这里:【花师小哲】面向一般大众的神经网络科普(3)-CV图像和其他)

3.与GPT比较与瞎扯
(1)为什么Diffusion能够流行呢?能够衍生出各种各样的方法呢?一个很重要的原因是Diffusion基础。我们可以有很多方法实现逆扩散的训练,或者说,Diffusion是一个方法族。而GPT这样的大模型不是每个人都能用得起的,或者说,基本上没多少人能用得起(指的是从头训练而不是直接调用API),所以对其的基础研究自然就少,很多东西也只能基于推断。
(2)Diffusion要实际应用当然是要训练的,这也是AI绘画一个很有争议的点。因为所选用的训练数据都是一些高赞作品,和GPT-2的训练思路如出一辙(选择reddit上的高赞文章),后面的故事大家都清楚了。
这其实暴露出了一个非常基础的问题,并且是多少年来在图像生成领域依然没有解决、甚至几乎没有任何进展的问题:我们仍然不知道如何评价一个图像的好坏,也完全无法避免图像生成的失控情况。
这些问题在GAN的时候就已经存在的,今天仍然没有任何的解决。当然,即使这样,AIGC也依然算是取得了突破。
哎,这不,隔壁ChatGPT就在这方面给出了自己的答案:RLHF。不过这东西适不适合图像生成还是未知数。

不管,怎么说,Diffusion至少还是挺优雅的一种方法,Diffusion有望在卷积之后成为第二个基础性的概念,当然,现在写Diffusion代码似乎也比较轻松来着,都封装了不少东西了。