ChatGPT和AIGC:开启推荐系统的大模型时代
你好,我是王喆。
深度学习推荐系统实战这门课完结已经三年多了,在这段时间里,推荐系统一点也没有停止它发展的脚步,各种新技术、新模型层出不穷。但给推荐系统带来革命性影响的,还要数ChatGPT引爆的AI革命。这也是我时隔三年更新这门课的主要原因。希望这全新的推荐系统“大模型篇”能帮你更新自己的知识体系,并初步掌握大模型在推荐系统中的主要应用。
总的来讲,新一轮AI革命主要通过两种方式深刻影响了推荐系统。一是以ChatGPT为代表的大语言模型,它融合了世界知识,并通过对话的方式与用户进行交互,这为推荐系统带来了全新的知识输入和交互方式;二是以OpenAI的Sora和Google的Gemini为代表的一系列多模态大模型,它不仅可以理解文本知识,还能够理解图片、视频等多模态知识,甚至可以在不同模态之间进行转换,生成不同模态内容,这种全新的AIGC(人工智能内容生成)能力,为推荐系统打开了新的大门。
“大模型篇”会以大模型技术在推荐系统中的应用为主,虽然无意深入探讨ChatGPT和AIGC的实现细节,但了解它们的基本原理肯定有益于后面的学习,所以这一节,我们将简明扼要地介绍ChatGPT和AIGC的基本原理和主要技术,以此开始本篇的学习。
ChatGPT的相关概念
ChatGPT的全称是Chat Generative Pre-trained Transformer,可被翻译为“基于生成式预训练Transformer的聊天模型”。这其中,Chat代表该模型的应用场景是“对话”。Generative指“生成式”表明该模型能够“生成”新的内容。Pre-trained指“预训练”,代表该模型是在大量数据上进行了预训练,从而获取了强大的语言能力和广博的知识基础。最后的Transformer代表了模型的基本结构是基于Transformer搭建的。所以ChatGPT这个名字取得非常好,信息量很大,同时说明了模型的应用场景和基本原理。
虽然绝大部分同学已经使用过ChatGPT或类似的大模型产品了,但我们还是用一个例子来梳理一下ChatGPT的工作过程和相关概念,帮你加深记忆。
如下图所示,向ChatGPT提问“简要描述ChatGPT和AIGC的关系是什么”,它给出了非常正确且全面的回答。其中,问大模型的问题被称为Prompt,可被翻译为“提示词”。这些提示词可以是人类问的一个问题,可以是一个任务描述,也可以是希望大模型翻译的内容。大模型就是在与人类交互过程中,基于一系列的提示词,并基于自己通过预训练获得的强大知识储备,完成整个会话过程的。
ChatGPT的预训练过程
那么ChatGPT是如何获得与人类对话的能力的呢?这里分为两个主要步骤,一是通过预训练获得强大的知识储备并学习人类语言的结构、词汇和语法,二是通过微调(Fine Tuning)获得精准完成特定任务的能力。
我们首先介绍ChatGPT的预训练过程。
在ChatGPT能够“Chat”之前,它必须学会人类具备的大量知识和自然语言中的语法结构。这一过程是通过海量的语料库预训练实现的。整个训练任务并不复杂,就是给定模型一个词序列作为输入,要求模型预测序列中的下一个词。在实际的任务中,ChatGPT就是这样从Prompt起始,重复这一过程,从而完成整篇回答的。
举例来说,训练样本的语料库里有这样一句话:“大模型推荐系统是推荐系统发展的新方向”。经过分词,这句话变成了这样的词序列,也被称为token序列(以下称每个词为token):“大模型|推荐系统|是|推荐系统|发展|的|新方向”。
这时我们去掉最后一个token,把它作为训练标签,其余部分作为训练输入,一个完整的训练样本就生成了。此时的训练token序列:“大模型|推荐系统|是|推荐系统|发展|的|[预测词]”, 标签为“新方向”。
当然,为了更充分地利用语料库,生成更多训练样本,也让大模型能够掌握更全面的语法结构,我们也可以遮盖掉中间的某个token,生成一条新的训练样本。现在的训练token序列:“大模型|推荐系统|是|[预测词]|发展|的|新方向”, 标签为“推荐系统”
基于大语言模型GPT3的初代ChatGPT,所使用的语料库规模达到了570GB,来源涵盖维基百科、书籍、网页快照、新闻和文章、在线论坛和社交媒体对话数据等。由此保证了ChatGPT的知识丰富程度和语言学习的全面性。
为了让模型能够记住海量的知识,ChatGPT使用了结构非常复杂、参数量非常大的Transformer模型结构。这也是大模型之所以被称为大模型的原因。相比于之前语言模型和推荐模型几个亿级别的参数量,ChatGPT的参数量达到了惊人的1750亿,这让它拥有了惊人的记忆和推理能力。
下图给出了ChatGPT模型的主要结构,其中模型的输入是上面举例的token序列,经过Embedding层后,每个token的Embedding都加上了一个位置编码(Positional Encoding)。经过L层的Transformer Block后,模型的输出是一个经过Softmax层的概率分布,这个概率分布是模型预估的下一个token在整个词汇表上的概率分布。
还以上面的训练样本为例,假设词汇表里只有三个词:[新方向,阻碍,新基础],模型的输出是[0.5,0.3,0.2],那么模型最终选择概率最大的token作为下一个token,也就是“新方向”。
作为推荐系统的从业者,我们一般不会去改动大模型的结构,而是直接以API调用的方式应用大模型,因此这里不再详细讲解模型细节,只要你对ChatGPT的原理和使用方式有直观认识即可。
ChatGPT是如何听懂人类指令的?
通过预训练,ChatGPT虽然拥有了强大的语言模型,但这并不意味着它能够很好地完成人类输入的任务。就像一个学富五车但表达能力很弱的大学问家,肚里有货却说不出来。为了让预训练模型能够更好地完成不同的人类任务,需要经历大模型的微调(Fine Tuning)过程。
从技术上来说,模型的微调过程和大模型的训练过程是一致的,但训练样本的构造不再是随机从语料库中生成,而是严格地进行人工构造,构造由Prompt到预期输出的训练样本。ChatGPT的训练使用了由标注人员人工构造的12000到15000个训练样本,对模型进行微调。
但是人工生成微调所需的训练样本总量还是太少了,不足以让ChatGPT具有完备的回答能力。为了让ChatGPT能够在更大规模的数据集上微调,研究人员创建了另一个奖励模型(Reward Model),来评估ChatGPT的输出,打分后反馈给ChatGPT进行进一步微调。
那么现在问题来了,如何训练这样一个具备打分功能的奖励模型呢?
首先还是人工准备一个Prompt集合,让通过第一步微调后的ChatGPT模型产生多个输出(4个到9个),标注者将这些输出从最佳到最差排序,就形成了一个“奖励模型”训练所需的数据集。相比于人工构造Prompt的输出文本,标注者进行人工排序的工作量显然轻了很多,因此通过这种方式产生了10万到20万级别的标注数据,下一步的工作就是用这些标注数据训练奖励模型。
ChatGPT并没有披露奖励模型的具体结构,但它的原理是清晰的。它的输入是Prompt和对应的回答,输出是表明回答满意度的分数,所以本质上奖励模型是一个打分模型。经过奖励模型的进一步训练,ChatGPT才练成了对人类任务精准的理解能力。
经过几次迭代,ChatGPT也在逐渐改变打分的方式,目前ChatGPT对于无法决定最优回答的问题,会提供两个回答供用户选择,用户选择后自然给到ChatGPT一次有监督的反馈,从而进一步参与后续模型训练,逐渐优化模型。这样交互式的优化方式会给到ChatGPT海量的标注数据,从而大大提高ChatGPT回答的质量。
说了这么多,我们再回头总结一下ChatGPT的训练过程:
- 使用570GB的海量文本数据训练出具备1750亿参数的超大规模预训练模型GPT。
- 利用人工生成的约15000个 “Prompt -> 预期输出” 样本对GPT模型进行微调。
- 准备20万个Prompt集合,利用初步微调过的GPT模型对每个Prompt生成4-9个回答,再根据4-9个回答的质量、准确度进行人工排序,生成20万个奖励模型训练样本。
- 利用20万个排序样本进行奖励模型训练,使奖励模型具备判断回答优劣的能力,奖励模型中的文本编码器复用预训练好的GPT模型。
- 利用奖励模型和用户反馈微调GPT模型,最终成为具备精准回答不同人类问题的ChatGPT模型。
AIGC——多模态大模型的原理
初代的ChatGPT是一个纯语言的大模型,不具备理解和生成图片、视频、音频的能力。但认识到大模型威力的研究员们肯定不会止步于纯语言模型,如何处理和生成多模态的内容毫无疑问成为了下一步的研究热点,多模态内容的生成能力也将使AIGC技术的实现成为可能。
AIGC全称是Artificial Intelligent Generated Content,即人工智能内容生成。利用多模态大模型生成推荐内容,将是AIGC时代推荐系统的又一创新点,也必将为推荐系统创造更多个性化的内容。但多模态大模型相比大语言模型更复杂,具体表现在3方面:
- 数据表示与嵌入:多模态数据的Embedding生成需要利用不同模态的编码器,比如文本使用GPT,图片使用ResNet、Vision Transformer,音频使用RNN等适用于不同模态的模型架构,单一的模型结构不足以把不同模态的数据映射成Embedding。
- 模态对齐:在多模态任务中,不同模态的数据需要相互理解才能够互相识别和生成。所以多模态大模型必须有能力将不同模态的Embedding嵌入一个共同的空间,让它们可以互相对齐和理解。
- 多任务学习:多模态模型需要同时处理多个不同类型的任务,例如文本生成图像、理解图像生成文本、文本生成视频、语音识别等等。因此,相比文本大模型的单一任务,多模态大模型需要进行多任务学习。这就需要多模态大模型往往有多个任务输出头,而且在微调阶段,需要准备不同类型的微调样本和奖励模型来强化不同任务的完成效果。
下图展示了一个典型的多模态大模型的结构图。
我们可以看到,底层的多模态模块接受了图片、音频、视频等多种不同模态的输入,同时,每个模态的输入都有相应的编码器(Image Encoder、Audio Encoder、Video Encoder)。这就是为了解决数据表示与嵌入的问题,把所有数据转换成Embedding。
多模态编码器之上是Embedding对齐模块,这一模块也会采用深度学习的架构,比如Transformer、Cross Attention,或者对比学习的架构来解决不同模态Embedding的对齐问题。当把不同模态的内容“翻译”成大语言模型能够理解的token之后,剩下的事情就好办了,具体的任务交给ChatGPT这类大语言模型,输入给它Prompt,大模型给出相应的反馈就可以了。
比如最新的ChatGPT已经把它的底层大模型更新成了多模态GPT4模型,我问它“我写的《深度学习推荐系统》这本书的封面图案是什么”(如下图)。它不仅识别出了几何风格的鱼形图案,而且给出了相应的含义,甚至比我当初设计的时候还要好。这就是基于上面描述的多模态大模型的原理,首先理解图片内容,通过模态对齐层把图片转换成大语言模型能够识别的token,再让大语言模型利用我们输入的Prompt完成指定任务。
善于思考的同学肯定会问,上面描述的多模态模型能够理解多模态输入,但似乎没办法生成多模态内容,也就没法真正实现AIGC。这是非常正确且敏锐的观察,上面描述的大模型没有多模态内容的输出模块,确实不具备非文本内容的生成能力。要想多模态大模型能够生成多模态的内容,就需要给它增加输出头。
解决方法如下图所示,中间的LLM和左侧的多模态编码器部分跟上面描述的多模态大模型结构一致,右侧的多模态内容输出部分则是新加入的内容生成必备模块,LLM生成了多模态内容的描述之后,需要依赖这部分模块把内容描述描绘成相应的模态表达。
比如,需要生成图片的,就通过Image Diffusion模块渲染成图片;需要生成音频的,就通过Audio Diffusion模块生成音频。这里不同模态的Diffusion模块就相当于一个解码器或者渲染器,负责从抽象的内容表达到具体的模态表达的“翻译”工作。
具备了内容生成能力的ChatGPT就可以完成图片、视频等多模态内容的生成任务,比如我让最新版的ChatGPT为我新书的英文版设计一个新封面(任务如下图所示),它圆满地完成了任务,设计出一款科技感十足的技术书封面。
多模态大模型还有很多技术细节没有展开来讲,作为一名应用者,我们能够了解其基本原理就足够了。
小结
这一节我们主要介绍了ChatGPT和多模态大模型的基本原理,内容的关键点包括以下几点:
- ChatGPT是一个基于Transformer结构的生成式训练模型。
- ChatGPT的训练过程主要分两步,一是通过预训练获得强大的知识储备并学习人类语言的结构、词汇和语法,二是通过微调获得精准完成特定任务的能力。
- AIGC指的是人工智能内容生成技术,多模态大模型是实现AIGC的主要途径。
- 相比大语言模型,多模态大模型要在三个方面进行优化才能具备多模态内容识别和生成的能力,分别是多模态数据的表示和嵌入、多模态Embedding对齐和多任务学习。
毫无疑问的是,大语言模型和多模态大模型的出现为推荐系统的下一步发展提供了极其多的可能性。我们不妨在此畅想一下大模型和AIGC在推荐系统中的应用前景。
首先是推荐系统的知识获取能力。传统推荐系统的知识和信息获取能力其实是局限于系统内部的,它的推荐能力绝大部分来源于系统内用户的行为历史。而当前的大模型是基于全网的信息训练而成的,某种意义上来说,它具备了整个互联网的知识,这就为推荐系统融合开放世界的海量知识提供了可能。
更让人兴奋的是大模型AIGC的能力。曾经的推荐系统推荐的内容全都是自然人创作的内容,在AIGC出现后,系统创造内容的能力大幅提高,甚至具备了根据用户喜好个性化生成内容的能力。未来的推荐系统还是不是推荐系统,会不会演变成一个生成系统?或者一个推荐和生成相结合的全新形态?这是AIGC给我们带来的想象力。
大模型时代的推荐系统发展是振奋人心的,下一节我们将探讨大模型在推荐系统中的三种主流应用方向,期待继续与你一同学习。