原文地址:Launching Large Language Models and Open Source Software, on 2022-12-08
大语言模型的发布与开源软件
兼论Galactica的兴衰
让我以两则声明开启第三期《Ahead of AI》:
感谢大家迄今为止对这份通讯的积极反馈。我已经联系了部分读者,询问可以改进的方面。最主要的一点是内容很棒,但篇幅稍长。我同意这一点,也会尽量精简(如果做得到的话!)。删减内容其实很难。因此,往后我们会每月交替推出“机器学习问答”和“研究深度解读”板块。
如果你是《Revue》的老订户,可能已经注意到这份通讯已经迁移到Substack平台,原因参见:https://www.theinformation.com/briefings/twitter-will-shut-down-newsletter-product-revue-by-year-end 。好在(在我看来)Substack的排版效果要好得多。现在也新增了评论区,欢迎大家留下反馈或问题!
文章与趋势
大语言模型的发布
由Papers With Code与Facebook母公司Meta联合推出的Galactica(https://arxiv.org/abs/2211.09085v1)在上个月引发了巨大轰动。

Galactica 演示页面,https://galactica.org/
什么是Galactica?
Galactica是一款基于Transformer架构的大语言模型(LLM),定位是撰写科研论文与维基百科条目。它和此前其他文本生成类大语言模型的区别在于,其训练数据是4800万篇科研论文与教科书,而非从互联网抓取的各类通用文本语料。
有意思的是,尽管训练数据全部为科学著作,它在通用语言建模基准测试(如https://github.com/google/BIG-bench )中的表现却优于GPT-3(https://en.wikipedia.org/wiki/GPT-3)等更大规模的模型,相关对比参见:https://arxiv.org/abs/2211.05100。

GAL = Galactica。资料来源:Galactica研究论文,https://arxiv.org/abs/2211.09085v1
Galactica为何被下架?
在社交媒体的强烈抵制与激烈讨论中,Meta与Papers With Code仅上线三天就关停了https://galactica.org/ 网站。
核心担忧在于,Galactica可能会降低生成伪科学的门槛,放大学术不端行为。凸显这一问题的典型案例是一篇鼓吹“食用碎玻璃有益”的文章,相关推文参见:https://twitter.com/mrgreene1977/status/1593274906707230721?s=20&t=k5AFVj-GI1xO5km_pBAAYA 。

Galactica生成的一篇维基百科风格的文章
公平地说,这类文章人类也能写出来并传播。但争议的核心在于,Galactica会降低这类内容的生成门槛,并放大问题的规模。
支持与反对Galactica的观点,在这两条Twitter线程中总结得最为到位:https://twitter.com/ylecun/status/1593293058174500865?s=20&t=dkoG4zWYeMGSM0KqN5shLQ 与 https://twitter.com/Michael_J_Black/status/1594945693524938752?s=20&t=dkoG4zWYeMGSM0KqN5shLQ 。
我如何看待Galactica?
一方面,出于科学发展的考量(无论是象征意义还是实际层面),我支持开放大语言模型。另一方面,作为arXiv计算机科学分类(https://arxiv.org/list/cs.LG/recent)的前版主,我也认同这些担忧。尽管arXiv不进行同行评审,但版主们每天都在牺牲自己的业余时间,处理上传到平台的问题文章——从剽窃到伪科学,各类问题都有。
双方的观点可能都过于极端。我不反对技术进步,也认为存在妥协的空间。比如,技术进步本身是好事,但大语言模型的宣传与营销方式还有改进空间。举个例子:与其开发号称能写完一整篇文章、连事实都能自动生成的系统,为什么不做一个论文模板生成器供科研人员使用呢?
大语言模型的局限性
大语言模型擅长生成读起来像人类手笔的流畅文本。但在文本理解任务上,这些模型仍有很大提升空间。原因在于,很难设计出直接针对理解能力优化的训练目标。
比如Galactica之所以会被滥用来生成虚假事实,问题就在于其训练目标并没有明确优化生成内容的事实准确性。
作为对话代理的大语言模型未能抓住沟通的核心要义
在最新论文《大语言模型不是零样本沟通者》(https://arxiv.org/abs/2210.14986)中,Ruis等人探讨了大语言模型作为对话代理存在的问题。参考论文中给出的例子:
用户:“你看到我的手机了吗?”
InstructGPT:“是的,我看到你的手机了。”
InstructGPT这类大语言模型可能会给出语法正确的答案,但却没什么实际用处(相比之下,有用的回答应该是“看到了,在厨房桌子上”)。此外,当测试大语言模型通过文本进行二元是非推断的能力时,其表现接近随机水平。

论文《大语言模型不是零样本沟通者》截图,https://arxiv.org/abs/2210.14986
GPT-4进展如何?
说到大语言模型的局限性,热门模型GPT-3的继任者GPT-4会带来哪些突破,值得期待。据报道(https://analyticsindiamag.com/gpt-4-is-almost-here-and-it-looks-better-than-anything-else/),GPT-4将于2022年12月至2023年2月之间发布。
值得注意的是,OpenAI近期发布了基于GPT-3的text-davinci-003模型(https://beta.openai.com/docs/models/overview),相比初代GPT-3,它的写作质量更高,还支持长文本生成。(这会不会是GPT-4的预热?)
ChatGPT
在text-davinci-003发布之后,OpenAI几天前又推出了ChatGPT(https://openai.com/blog/chatgpt/)。你可以在这里试用演示版:https://chat.openai.com/ 。ChatGPT是一款聊天机器人,能够以真实自然的对话方式与用户互动。它生成的回复质量极高,以至于有人认为它足以和主流搜索引擎抗衡。在某种程度上,它正在解决前文提到的InstructGPT存在的问题。该模型刚发布不久,还需要更多时间来全面了解其能力与局限。

ChatGPT的查询与输出示例
没错,ChatGPT也在不到一周的时间里引发了(甚至更大的)轰动,相关推文参见:https://twitter.com/sama/status/1599668808285028353?s=20&t=u1o-jYqar9BDTb1GwgB2pQ 。
更多生成式模型
用Stable Diffusion 2.0生成更高质量的图像
Stability AI为其Stable Diffusion模型发布了2.0版本(官方博客:https://stability.ai/blog/stable-diffusion-v2-release),该模型我们曾在两个月前的文章中讨论过(https://magazine.sebastianraschka.com/p/ahead-of-ai-1-a-diffusion-of-innovations)。
https://stability.ai/blog/stable-diffusion-v2-release
- 采用了全新的文本编码器OpenCLIP(https://github.com/mlfoundations/open_clip),替代了此前的OpenAI CLIP文本编码器(https://github.com/openai/CLIP);
- 可生成更高分辨率的图像;
- 在经过NSFW内容过滤后的美学数据集子集上进行了预训练;
- 内置防护机制,避免用户直接模仿特定艺术家的风格。
更多细节可参见GitHub仓库:https://github.com/Stability-AI/stablediffusion 。
https://twitter.com/karpathy/status/1595954036498649088?s=20&t=-rHWvx-3AGB8va-Ky7_bFg 提到,生成效果看起来比前代模型稍差。这可能是因为“数据清理”力度更大。就我个人而言,用任意查询同时运行Stable Diffusion 1.5和2.0,我也认同这一看法。如下图所示,Stable Diffusion 2.0的图像质量(分辨率层面)更高,但内容质量(与提示词的匹配度)有所下降。

公平地说,不少用户反馈,使用负向提示词(negative prompt)时Stable Diffusion的表现会更好,相关介绍参见:https://minimaxir.com/2022/11/stable-diffusion-negative-prompt/ 。
开源亮点
PyTorch 2.0
PyTorch 2.0于上周在PyTorch大会上正式公布(大会介绍:https://pytorch.org/blog/announcing-pytorch-conference-2022/)。
那么,新版本有哪些变化?首先,让我松了口气的是核心API保持不变。其次,新版本的核心目标是进一步提升PyTorch的运行效率。与此同时,PyTorch团队正在将代码从C++向Python迁移,让框架对开发者更友好。
好消息是PyTorch的速度将大幅提升。更好的消息是,不会出现破坏性变更!太棒了!
改动主要集中在底层,新增了一个可选的torch.compile函数,用于计算图编译,从而提升模型效率。后续还将支持把整个训练循环都包裹在torch.compile中。
基于对来自TIMM、Huggingface和TorchBench的163个开源模型的测试,torch.compile已经可以兼容其中93%的模型,无需修改任何代码。当然,用户依然可以使用PyTorch的动态图(eager)模式。但需要注意,对于某些模型,动态图模式会成为性能瓶颈——尤其是使用高带宽GPU时。这种情况下,通过编译可以获得额外的速度提升。想试试吗?只需要一行代码:
compiled_model = torch.compile(model)
torch.compile已在PyTorch每日构建版中提供,并将纳入即将发布的PyTorch 1.14版本。PyTorch 2.0正式稳定版计划于2023年3月发布。
PyTorch团队的详细解读参见:https://pytorch.org/get-started/pytorch-2.0/ 。

PyTorch大会现场截图,https://www.youtube.com/watch?v=vbtGZL7IrAw
Lovely tensors——更适合人类阅读的张量
神经网络一年比一年庞大、复杂。调试代码的时候,谁不希望能有点帮手呢?我最近偶然发现了一个面向PyTorch的库:https://github.com/xl0/lovely-tensors/ ,它能让庞大的张量对人类更友好。

lovely tensors库截图,https://github.com/xl0/lovely-tensors/
研究深度解读
大语言模型如此成功的原因之一是自注意力机制,另一个则是自监督学习。除了自然语言处理领域,自监督学习也已经成为计算机视觉的基石。但如果是表格数据集,自监督学习的表现又如何呢?
再探表格数据深度学习的预训练目标
正如Rubachev等人2022年的论文《再探表格数据深度学习的预训练目标》(https://arxiv.org/abs/2207.03208)中所述,自监督学习同样能为深度表格模型带来增益。

资料来源:https://arxiv.org/abs/2207.03208
自监督学习与预训练
和大多数基于树的方法(比如梯度提升机的默认实现)不同,深度神经网络可以迭代训练,并且支持通过自监督学习进行预训练。
自监督学习指的是训练目标标签从数据集本身获取的训练方式。自然语言处理领域的典型例子是掩码语言模型——模型的任务是预测被掩码的单词。在计算机视觉领域,我们也有类似的做法:掩码像素——模型需要预测缺失的像素。
自监督学习通常用于在微调目标任务之前对模型进行预训练。其逻辑在于,我们有大量未标注数据集,可以通过自监督学习加以利用。和用于预训练的未标注数据集相比,有标注的目标数据集通常规模很小——往往小到不足以从零训练一个深度神经网络。
无需额外数据的预训练
研究人员可以很轻松地从互联网收集未标注的图像和文本,因此预训练在计算机视觉和自然语言处理领域已经成为标准操作。但对于表格数据方法,预训练还不那么普遍。这可能是因为表格数据集往往很难获取额外数据(哪怕是未标注的)。
在这项研究中,作者没有使用额外的未标注数据,而是直接用目标数据集本身进行预训练。(这模拟了无法获取未标注表格数据的场景。)预训练阶段,作者将目标数据集视为无标注数据,同时也探索了利用目标标签的方案——我们稍后会详细讨论这一点。
总体而言,这项研究涵盖了11个不同的数据集,训练样本量从6000到72.3万不等,特征数量从6到136个不等。数据集同时覆盖分类与回归任务,以及数值型与类别型特征。

实验所用数据集。资料来源:https://arxiv.org/abs/2207.03208
自预测与对比学习
自监督学习主要分为两大类:自预测(self-prediction)和对比学习(contrastive learning)。
在对比学习中,我们对训练样本进行扰动(比如通过数据增强),模型的任务是学习一个相似度函数。原始样本x和扰动(“损坏”)后的样本x’之间应该具有高相似度;同时,x和任意其他不同训练样本之间的相似度应该很低。

对比学习简化示意图
在自预测中,标签从数据集本身获取,比如前文提到的掩码单词预测任务。

两种自预测过程的简化示意图。左:模型从扰动后的样本预测原始训练样本。右:模型根据扰动后的样本预测扰动掩码。

资料来源:https://arxiv.org/abs/2207.03208
在计算机视觉领域,自预测的效果通常优于对比学习,这一点从下表2中加粗的最优结果数量也能看出来:自预测预训练任务(“rec”和“mask”)的表现优于对比预训练任务(“contrastive”)。
注:MLP指普通的(“香草版”)多层感知机。MLP-PLR和MLP-T-LR指的是基于数值特征嵌入而非原始特征运行的多层感知机。
预训练中引入目标信息
由于作者在预训练时使用了原始训练集,这就引出了一个问题:如果预训练时就使用目标信息,预测性能会不会进一步提升?
为了回答这个问题,作者进行了多组实验。为简洁起见,我仅介绍其中一部分实验设置。
- “sup”:以监督方式在扰动数据集上进行预训练,然后在未扰动数据集上微调。
- “rec + target”:对之前基于重构的自预测任务的改进版本。首先对目标标签进行独热编码;然后将编码后的目标与模型主干输出的嵌入向量拼接;最后模型头需要从拼接后的向量中预测原始(未扰动)的训练样本。

改进后的、感知目标的“sup”与“rec + target”预训练目标示意图
从下表3的结果来看,没有哪一种组合能在所有数据集上都取得最优效果。不过,虽然没有明确的最优解,但基于嵌入的多层感知机(即MLP-PLR和MLP-T-LR)整体表现优于普通多层感知机。并且,感知目标的预训练效果要优于不感知目标的预训练。

表2的标注版,来自https://arxiv.org/abs/2207.03208
注:“mask + target”和“rec + target”原理类似。区别在于,它是把目标信息加入到基于掩码的自预测任务中,而非重构任务。
与梯度提升的对比
前述结果表明,预训练对多层感知机有增益,引入目标信息还能进一步提升效果。接下来的问题是:这些基于深度学习的方法和传统机器学习方法(也就是梯度提升)相比表现如何?

表4的标注版,来自https://arxiv.org/abs/2207.03208
大多数情况下,采用感知目标的掩码式(自预测)预训练、基于数值嵌入的多层感知机表现最优。仅有两个数据集上,梯度提升方法(XGBoost和CatBoost)的表现超过了预训练多层感知机。
核心结论
- 深度神经网络通常都能从预训练中获益。根据论文呈现的结果,在处理表格数据集时同样如此。
- 普通多层感知机从预训练中获益最大(表2)。但我们通常更关注最优的预测性能,这种情况下,应该考虑基于数值嵌入运行的多层感知机:MLP-PLR和MLP-T-LR。并且在大多数数据集上,感知目标的掩码式自预测(“mask + target”)表现最佳。
如果你想动手实验代码,作者已经在GitHub上开源了相关代码:https://github.com/puhsu/tabular-dl-pretrain-objectives 。
名言精选
“科研经费并不充裕,社会和科学家都不该浪费资源去追逐基于伪论文的死胡同。”
——https://twitter.com/Michael_J_Black/status/1594945705721974785?s=20&t=O_8J3dJdtgownS_er_gOUw
学习与效率技巧
一个简单技巧,解放你的大脑
我最喜欢的效率技巧之一就是把事情写下来。我说的“写下来”是什么意思呢?很多时候,当我在工作、散步、学习,或者只是读小说的时候,会突然冒出一个很棒的想法,或者想到某件该做的事。如果不立刻写下来,这个念头就会一直在脑子里打转,干扰我当下做的事。
眼不见,心不烦
把想法写下来能让大脑停止反复回想,但前提是你得把它记在一个你会定期查看的地方。否则,你可能会把“回复杰克婚礼的出席邀请”这种事,换成“去翻翻我冬装里的口袋笔记本”(而那本里刚好也写着要回复杰克婚礼的事)。
把你的想法和念头写在你每天至少会看一次的地方。因为随机冒出来的想法也可能有时间敏感性,比如“在今晚截止前催一下合著者给新摘要的反馈”,或者“晚上7点前去趟超市买咖啡豆”。我学习的时候,也会把之后想用到或想查阅的关键点记下来,这样能保持阅读的流畅度。
工具重要,也不重要
你需要把想法记在一个你会定期回头处理的地方。但同时,记录想法的工具和设备其实并不重要,只要是你常看的东西就行。比如,如果你有每日日程清单,可以在右下角留出一块地方专门记这些。
如果你是个经常查收邮件的人,可以用一个给自己发邮件的应用。iOS和macOS上的“给自己记笔记”(https://apps.apple.com/us/app/note-to-self-mail/id113553707)就很好用——当然安卓和Windows肯定也有类似的应用。它的好处是散步的时候也能拿出来随手记,不会显得奇怪。(当然,你也可以用系统自带的备忘录应用。我试过,但可惜我回到电脑前的时候,通常都会忘了去看那个应用。)

随手给自己发的笔记截图
索尼的数码录音笔(https://www.sony.com/en-ly/electronics/voice-recorders/icd-ux560f)也是长途散步的好伴侣。开车或者散步的时候也特别好用(尤其是如果你喜欢开着“勿扰模式”散步、专注当下的话)。
长话短说,你需要找到最适合自己的方式,而且也不必全程只用同一种工具。
我在办公桌前的时候,喜欢把想法写在每日日程页上(这个以后再聊)。出门在外的时候,我通常用手机上的“给自己记笔记”应用。而散步或者开车的时候,我更偏爱录音笔。
这份杂志是我的个人兴趣项目,不提供直接报酬。但如果您愿意支持我的创作,可以考虑购买我的一本著作:https://sebastianraschka.com/books 。如果您觉得这些书有见地、有帮助,也欢迎推荐给您的朋友和同事!

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 ,以及http://mng.bz/M96o
您的支持对我意义重大!非常感谢!