【转载】创新的扩散:生成式学习的最新进展

原文地址:A Diffusion of Innovations: Recent Developments in Generative Learning,by Sebastian Raschka, on 2022-11-05

创新的扩散:生成式学习的最新进展

文章与趋势

生成式学习将走向何方?我们将去往何处?

前些年,生成式领域的核心是用于文本生成的大型语言Transformer模型。尽管文本与视觉方向的Transformer模型仍是众多研究者和AI公司的关注重点,但扩散模型近来已然抢占了它们的风头。

随着扩散模型(完整论文:https://arxiv.org/abs/2006.11239 )的出现,生成式学习领域近来掀起了一场重大变革。大约一年半前,也就是2021年5月11日,我们初次见识到扩散模型的表现超越了生成对抗网络(GAN)。而如今,扩散模型已然无处不在。

什么是扩散模型?

从本质上讲,扩散模型属于生成式模型。在训练过程中,模型会分多个步骤向输入数据中逐步添加随机噪声,对数据进行扰动。随后,模型通过逆向过程学习如何反转噪声、对输出进行去噪,从而还原出原始数据。在推理阶段,扩散模型便可以基于噪声输入生成全新的数据。

figure01
扩散模型示意图

扩散模型的应用

扩散模型首批真正广为人知的代表性应用,是一系列用于生成艺术作品与图像的大型模型;下面这些名字你大概率已经有所耳闻:

需要注意的是,尽管这些模型能够生成逼真且富有艺术感的图像,但相关争议也在不断发酵——这些模型的训练数据均爬取自互联网,并未征得原创艺术家的许可。此外,艺术家群体也对AI这一竞争者表达了担忧。我对知识产权相关法律了解有限,无法提供更多深入见解,但我记得去年GitHub Copilot(https://github.com/features/copilot)基于GitHub代码训练时,也引发过类似的批评。

我不确定这会将艺术家群体置于何种境地。就目前我们所知的情况来看,AI并不会取代程序员;更准确地说,是不会使用AI的程序员会被会使用AI的程序员取代——这和90年代“深蓝”战胜卡斯帕罗夫后国际象棋领域发生的变化类似。我不确定这对艺术家而言意味着什么,但既然精灵已经逃出瓶子,再也收不回去,或许我们只能顺势而为,学会利用这些新技术发挥其最大价值。

从图像到视频

继上述第一波图像生成扩散模型之后,各家公司近期开始向更高阶迈进,陆续推出能够根据文本提示生成视频片段的模型:

我猜再过几周,我们就能看到Stability.ai推出首个开源的同类视频生成模型了。另外值得一提的是,OpenAI目前还没有推出自己的视频生成扩散模型。(顺带一提,结合他们近期发布的字幕生成工具Whisper来看,我很好奇他们是否正在研发视频片段重新对齐的API。)

另外需要说明的是,目前的扩散模型数量远比这里列举的多得多。想要感受其数量之庞大,可以在这个网站中搜索“diffusion”关键词:https://scorebasedgenerativemodeling.github.io/ 。或者也可以查看这个仓库,截至本文撰写时,里面已经收录了超过300篇相关论文:https://github.com/heejkoo/Awesome-Diffusion-Models

我猜想下一波标志性的应用方向会聚焦于3D环境(比如VR领域)与运动生成。目前这一方向已经出现了一些值得关注的成果:

生物学领域的应用

我曾指导过一名博士生,他的研究方向是用图神经网络生成分子,因此我对扩散模型在生物学领域的应用也深有感触。例如:

figure02
Foldingdiff示意图。来源:https://arxiv.org/abs/2209.15171v1

再结合基于Transformer的模型,比如https://www.biorxiv.org/content/10.1101/2021.05.24.445464v1https://www.nature.com/articles/s41586-021-03819-2 中的成果,我不禁好奇图神经网络的未来会走向何方。一方面,去年微软的这档播客(https://www.microsoft.com/en-us/research/podcast/machine-learning-molecular-simulation-and-the-opportunity-for-societal-good-with-chris-bishop-and-max-welling/ )也探讨过相关话题。但迄今为止,AI在分子数据领域最亮眼的应用,并非基于图神经网络实现的。其中一种解释是,我们尚未找到让图神经网络突破小分子限制、实现规模化扩展的方法,但未来如何仍有待观察。就像投资者会分散投资一样,我们也不该把所有希望都寄托在单一技术方向上。

拓展学习资源

想要深入了解扩散模型?下面是一份精选的实用资源清单:


数值计算拥有开放的未来吗?

作为Python Conda工具(https://docs.conda.io/en/latest/ )的长期爱好者与使用者,我近期很荣幸受邀参加了Anaconda十周年的圆桌论坛,论坛主题围绕开源与科学计算展开,同台参与的还有https://twitter.com/teoliphanthttps://twitter.com/DynamicWebPaige 以及https://datascience.columbia.edu/people/ryan-abernathey/

数值计算的未来会是开放的吗?我们如今正处于开源2.0阶段。我还记得十年前,我们还只是把代码项目上传到GitHub而已。一路走来,我们已经进步了太多!而现在的第二阶段,我们要学习的是如何长期维护项目,构建可持续发展的社区。

近期一个很好的例子,就是PyTorch加入Linux基金会这件事:https://www.linuxfoundation.org/blog/blog/welcoming-pytorch-to-the-linux-foundation

本次圆桌论坛的完整录像可在下方查看。


研究深度解读

在这个部分,我会精选一篇研究论文进行解读。为了贴合本期通讯的“扩散主题”,我选的当然是一篇扩散模型相关的论文!这是一篇用于生成表格数据的扩散模型:https://arxiv.org/abs/2209.15421

首先,为什么要研发生成表格数据的模型?主要有两方面的应用价值:

  1. 生成规模更大的数据集,以及在类别不平衡场景下对少数类进行过采样。
  2. 在原始数据无法共享的场景下(比如出于隐私保护考虑),生成逼真的合成数据集。

TabDDPM绝非首个尝试生成逼真表格数据的模型。在它之前,生成对抗网络(GAN)和变分自编码器(VAE)早已被广泛用于这一领域,代表性的研究包括https://arxiv.org/abs/2204.00401https://arxiv.org/abs/1907.00503

而TabDDPM这篇论文的核心观点是:扩散模型的表现能够超越同类的GAN与VAE模型(这和本文前面提到的图像、视频领域的发展规律相似)。

TabDDPM的工作原理是什么?

对于类别型(以及二值型)特征,TabDDPM采用多项扩散,添加均匀噪声;对于数值型特征,则使用通用的高斯扩散过程。随后,模型通过全连接网络(MLP)学习逆向扩散过程。

figure03
特征分布对比。来源:https://arxiv.org/abs/2209.15421

需要注意的是,TabDDPM并非只是死记硬背训练数据中的样本。作者通过分析“最近样本距离”(DCR)分布得出了这一结论——分布中存在大量非零的距离值。

后续针对合成数据集质量的分析,量化了在生成数据上训练的多个分类器的性能。例如,在15个分类与回归数据集上,随机森林、逻辑回归、决策树、CatBoost等模型在TabDDPM生成的合成数据上的表现,均优于在GAN或VAE生成的合成数据上的表现。

如果你想要尝试使用TabDDPM,可以在这里获取它的源代码:https://github.com/rotot0/tab-ddpm


开源亮点

用Whisper生成高质量字幕

OpenAI近期发布了开源语言模型Whisper(https://github.com/openai/whisper ),可用于为音频文件生成字幕(隐藏式字幕)与内容摘要。我亲自测试了一下,效果惊艳。和YouTube自带的字幕生成功能,以及我这些年试过的好几款付费服务相比,Whisper生成字幕的准确率要高得多。它对我的口音,以及深度学习领域的专业术语都能很好地识别,这点让我印象格外深刻。

希望这个工具对你也有帮助。我用它给我博客上所有的深度学习课程视频(https://sebastianraschka.com/blog/2021/dl-course.html )重新生成了字幕,脚本在这里:https://gist.github.com/rasbt/0d09932c861851f177bd8f13dc93b354

Jupyter笔记本中的PyTorch多GPU支持

了解我的人都知道,我是Jupyter笔记本的忠实用户——它是我做原型开发和教学时最喜欢的环境。但Jupyter笔记本有个小局限:由于多进程限制,它无法支持大多数现代深度学习多GPU训练方案。我很高兴地告诉大家,PyTorch Lightning 1.7版本新增了在Jupyter笔记本中对PyTorch的多GPU支持。你可以在这里了解更多详情:https://lightning.ai/pages/community/tutorial/multi-gpu-jupyter-notebooks/

特征选择中的特征分组功能

自荐一下:我的mlxtend库(http://rasbt.github.io/mlxtend/CHANGELOG/ )现在在特征选择和排列重要性算法中支持特征分组功能了。用户可以将多个相关特征(比如独热编码生成的一组特征)在选择过程中当作一个整体分组来处理。

figure04
独热编码特征的特征分组支持


教学小贴士

这里分享5个从计算层面优化深度神经网络推理性能的技巧。

(注:为了限定讨论范围,本文只介绍不改变模型架构的方法。会改变架构的技术,比如模型剪枝,会在后续的推文中讨论。)

(1) 并行化

并行化指的是将训练数据的(小)批次拆分成多个分块,目标是并行处理这些更小的数据分块。

figure05
并行化示意图

(2) 向量化

向量化用批量运算取代了开销高昂的for循环,一次性对多个元素执行相同操作。

figure06
用点积实现加权和的for循环向量化

(3) 循环分块

改变循环中数据的访问顺序,以充分利用硬件的内存布局与缓存机制。

figure07
算子融合的概念示意图

(4) 算子融合

如果有多个循环,尽量将它们合并成一个。

figure08
两次遍历与一次遍历计算均值和方差的对比

(5) 量化

量化通过降低数值精度(通常将浮点数转为整数)来加快计算速度、降低内存占用,同时尽量保证精度不受损失。

figure09
PyTorch Lightning中量化感知训练的示例


机器学习面试题

你是在巩固知识点,还是在准备面试?这个板块的问题或许能帮到你(也可能帮不上)。

  1. 自然语言处理中的分布假说是什么?它应用在哪些场景?适用范围有多广?
  2. 无状态训练和有状态训练的区别是什么?分别在什么情况下使用?
  3. 递归和动态规划的区别是什么?

(答案将在下期通讯中公布。)


精彩引语

“我认为五年之后,我们就不再需要做提示工程了。” ——https://greylock.com/greymatter/sam-altman-ai-for-the-next-era/


近期活动

全球顶尖的机器学习与AI顶会NeurIPS(https://neurips.cc/ )很快就要召开了!2022年11月28日至12月1日。

如果你要去参会的话,欢迎过来打个招呼!我会联合主持一场主题为“业界、学界,以及两者之间”(即从学术到产业的转型)的工作坊社交活动。更多细节后续公布!


学习与效率技巧

我最喜欢的学习新事物的工具之一是Anki(https://apps.ankiweb.net/ )。这是一款用于间隔重复学习的开源闪卡软件。间隔重复的意思是,系统会根据你对问题难度的判断,在特定间隔后才重复出现该问题(比如,第一次间隔3天,之后是2周、3个月、1年,以此类推)。

我从本科时期就开始用它了。它帮我最大化地利用阅读和学习时间,牢牢记住知识点。我坚信,它是帮我度过大学初期时光的核心工具之一。到现在已经用了十多年,我积累了成千上万张卡片。

我是怎么用的呢?读文章或者教材的时候,我会针对那些想记住的重点内容,给自己提一些“有意思”的问题。有时候我还会把截图作为答案加进去。

figure10
Anki中一张闪卡问题的示例

我每天会新增5到15张新卡片。另外,我每天会花大概10到15分钟复习,避免卡片堆积。

figure11
我Anki卡组里待复习的内容,有数千张卡片。

我通常在晚上放松休息前完成每日复习。不过有时候我也会用手机版,利用碎片时间复习卡片——比如剪头发早到了几分钟,或者在机场等行李的时候。


这份通讯是我的个人兴趣项目,没有直接的商业收入。不过如果你愿意支持我的话,可以考虑购买我的书籍:https://sebastianraschka.com/books 。如果你觉得这些书有深度、有帮助,也欢迎推荐给你的朋友和同事。

figure12

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , and http://mng.bz/M96o

你的支持对我意义重大!非常感谢!

Leave a Reply

Your email address will not be published. Required fields are marked *

*