前几天,Meta首席人工智能科学家Yann LeCun的一段对于ChatGPT的点评迅速传遍圈内外,引发了大波讨论。
在Zoom的媒体和高管小型聚会上,LeCun给出了一段令人惊讶的评价:「就底层技术而言,ChatGPT并不是多么了不得的创新。」
「虽然在公众眼中,它是革命性的,但是我们知道,它就是一个组合得很好的产品,仅此而已。」
ChatGPT不算什么创新
ChatGPT作为这几个月的聊天机器人「顶流」,早就红遍全世界,甚至切实改变了一部分人的职业生涯,以及学校教育的现状。
全世界为它惊叹的时候,LeCun对ChatGPT的点评居然如此「轻描淡写」。
但其实,他的言论不无道理。
像ChatGPT这种数据驱动的人工智能系统,许多公司和研究型实验室有。LeCun表示,OpenAI在这个领域并没有多么独树一帜。
「除了谷歌和Meta之外,还有六家初创公司,基本上都拥有非常相似的技术。」LeCun 补充道。
接着,LeCun小酸了一把——
「ChatGPT用的是以自监督方式进行预训练的Transformer架构,而自监督学习是本人长期以来一直提倡的,那会儿OpenAI还没诞生呢。」
其中,Transformer是谷歌的发明。这种语言神经网络,正是GPT-3等大型语言模型的基础。
而第一个神经网络语言模型,Yoshua Bengio早在20年前就提出了。Bengio的注意力机制后来被谷歌用于Transformer,之后更是成为了所有语言模型中的关键元素。
另外,ChatGPT用的是人类反馈强化学习(RLHF)的技术,也是由谷歌DeepMind实验室开创的。
在LeCun看来,ChatGPT与其说是一个科学突破,不如说是一项成功的工程案例。
OpenAI的技术「在基础科学方面并没有什么创新性,它只是设计得很好而已。」
「当然啦,我不会为此批评他们。」
我不是在批评OpenAI的工作,也不是在批评他们的主张。
我是想纠正公众和媒体的看法,他们普遍认为ChatGPT是一种创新且独特的技术突破,然而事实并非如此。
在纽约时报记者Cade Metz的座谈会上,LeCun感受到了好事者的疑问。
「你可能想问,为什么谷歌和Meta没有类似的系统呢?我的回答是,如果谷歌和Meta推出这种会胡说八道的聊天机器人,损失会相当惨重。」他笑着说。
无独有偶,OpenAI被微软等金主看好、身价飙升至290亿美元的新闻一出,马库斯也连夜在博客上写了一篇文章嘲讽。
在文中,马库斯爆出一句金句:你OpenAI能做啥谷歌做不到的事,值290亿美元天价?
谷歌、Meta、DeepMind、OpenAI大PK!
话不多说,咱们把这几家AI巨头的聊天机器人都拉出来遛遛,用数据说话。
LeCun说许多公司和实验室都有类似ChatGPT的AI聊天机器人,此言不虚。
ChatGPT并不是第一个基于语言模型的AI聊天机器人,它有很多「前辈」。
在OpenAI之前,Meta、谷歌、DeepMind等都发布了自己的聊天机器人,比如Meta的BlenderBot、谷歌的LaMDA、DeepMind的Sparrow。
还有一些团队,也公布了自己的开源聊天机器人计划。比如,来自LAION的Open-Assistant。
在Huggingface的一篇博客中,几位作者调查了关于RLHF、SFT、IFT、CoT(它们都是ChatGPT的关键词)这些主题的重要论文,对它们进行了分类和总结。
他们制成了一个表,根据公开访问、训练数据、模型架构和评估方向等细节,对BlenderBot、LaMDA、Sparrow和InstructGPT这些AI聊天机器人进行了比较。
注意:因为ChatGPT没有记录,所以他们使用的是InstructGPT的细节,InstructGPT是一个来自OpenAI的指令微调模型,可以被认为是ChatGPT的基础。
LaMDA | BlenderBot 3 | Sparrow | ChatGPT/ InstructGPT | |
组织机构 | Meta | DeepMind | OpenAI | |
访问权限 | 封闭 | 公开 | 封闭 | 有限 |
参数规模 | 1370亿 | 1750亿 | 700亿 | 1750亿 |
基础模型 | 未知 | OPT | Chinchilla | GPT-3.5 |
语料库规模 | 2.81万亿 | 1000亿 | 1.4万亿 | 未知 |
访问网络 | ✔️ | ✔️ | ✔️ | ✖️ |
监督微调 | ✔️ | ✔️ | ✔️ | ✔️ |
微调数据规模 | 高质量:6.4K 安全性:8K 落地性:4K IR: 49K | 20个NLP数据集,范围从18K到1.2M | 未知 | 12.7K(ChatGPT可能更多) |
RLHF | ✖️ | ✖️ | ✔️ | ✔️ |
人工安全规则 | ✔ | ✖️ | ✔ | ✖️ |
不难发现,尽管在训练数据、基础模型和微调方面存在许多差异,但这些聊天机器人都有一个共同点——遵循指令。
比如,你可以通过指令让ChatGPT写一首关于微调的诗。
可以看到,ChatGPT非常「识相」,写诗都不忘拍一下LeCun和Hinton两位祖师爷的马屁。
随后激情洋溢地赞颂道:「微调啊,微调,你是一支美丽的舞蹈。」
从预测文本到遵循指令
通常情况下,基础模型的语言建模,是不足以让模型学会如何遵循用户指令的。
在模型的训练中,研究人员除了会采用经典的NLP任务(比如情感、文本分类、总结等),还会使用指令微调(IFT),也就是在非常多样化的任务上通过文字指令对基础模型进行微调。
其中,这些指令示例由三个主要部分组成:指令、输入和输出。
输入是可选的,有些任务只需要指令,如上面ChatGPT示例中的开放式生成。
当一个输入和输出出现时,就形成了一个示例。对于一个给定的指令,可以有多个输入和输出示例。比如下面这个例子:
IFT的数据,通常是人类编写的指令和使用语言模型引导的指令示例的集合。
在引导过程中,LM在few-shot(小样本)的设置中被提示(如上图),并被指示生成新的指令、输入和输出。
在每一轮中,模型会被提示从人工编写和模型产生的样本中选择。
人类和模型对创建数据集的贡献量像一个光谱一样(见下图)。
一端是纯粹的模型生成的IFT数据集,如Unnatural Instructions,另一端是大量人工生成的指令,如Super-natural instructions。
介于这两者之间的,是使用一套规模较小但质量更高的种子数据集,然后进行引导的工作,如Self-instruct。
为IFT整理数据集的另一种方式是,利用现有的关于各种任务(包括提示)的高质量众包NLP数据集,并使用统一的模式或不同的模板将这些数据集转换成指令。
这方面的工作包括T0、自然指令数据集(Natural instructions dataset)、FLAN LM和OPT-IML。
自然指令数据集相关论文:https://arxiv.org/abs/2104.08773
对模型进行微调
另一方面,OpenAI的InstructGPT、DeepMind的Sparrow和Anthropic的Constitutional AI都采用了基于人类反馈的强化学习(RLHF),也就是人类偏好的注释。
在RLHF中,一组模型响应根据人类反馈进行排序(例如,选择一个更受欢迎的文字简介)。
接下来,研究人员在这些注释过的响应上训练一个偏好模型,为RL优化器返回一个标量奖励。
最后,通过强化学习训练聊天机器人来模拟这个偏好模型。
思维链(CoT)提示,是指令示例的一个特例,它通过诱导聊天机器人逐步推理,以此来产生输出。
用CoT进行微调的模型,会使用带有人类注释的分步推理的指令数据集。
这就是那句著名的prompt——「let's think step by step」的起源。
下面的例子取自「Scaling Instruction-Finetuned Language Models」。其中,橙色突出了指令,粉色显示了输入和输出,蓝色是CoT推理。
论文指出,采用CoT微调的模型,在涉及常识、算术和符号推理的任务中表现得更好。
此外,CoT微调在敏感话题方面也非常有效(有时比RLHF做得更好),尤其是可以避免模型摆烂——「对不起,我无法回答」。
安全地遵循指令
正如刚才提到的, 指令微调的语言模型并不能永远产生有用且安全的响应。
比如,它会通过给出无用的回答来逃避,例如「对不起,我不明白」;或者对抛出敏感话题的用户输出不安全的响应。
为了改善这种行为,研究人员通过监督微调(SFT)的形式,在高质量的人类注释数据上对基础语言模型进行微调,从而提升模型的有用性和无害性。
SFT和IFT的联系非常紧密。IFT可以看作是SFT的一个子集。在最近的文献中,SFT阶段经常用于安全主题,而不是用于在IFT之后完成的特定指令主题。
在将来,它们的分类和描述应该会有更清晰的用例。
另外,谷歌的LaMDA也是在一个有安全注释的对话数据集上进行微调的,该数据集有基于一系列规则的安全注释。
这些规则通常由研究人员预先定义和开发,包含了一系列广泛的主题,包括伤害、歧视、错误信息等。
AI聊天机器人的下一步
关于AI聊天机器人,目前仍有许多开放性问题有待探索,比如:
1. RL在从人类反馈中学习方面有多重要?我们能在IFT或SFT中通过更高质量的数据训练获得RLHF的性能吗?
2. Sparrow中的SFT+RLHF,与LaMDA中仅仅使用SFT,两者的安全性如何比较?
3. 鉴于我们已经有了IFT、SFT、CoT和RLHF,那么还有多少预训练是必要的?有哪些权衡因素?最好的基础模型是哪个(包括公开的和非公开的)?
4. 现在这些模型都是精心设计的,其中研究人员会专门搜索故障模式,并根据揭露的问题影响未来的训练(包括提示和方法)。我们如何系统地记录这些方法的效果并进行复现?
总结一下
1. 与训练数据相比,只需拿出非常小的一部分用于指令微调(几百个数量级即可)。
2. 监督微调利用人类注释,可以让模型的输出更加安全和有用。
3. CoT微调提高了模型在逐步思考任务上的表现,并使模型不会总是逃避敏感问题。
参考资料:
https://huggingface.co/blog/dialog-agents