全文目录:
1. ChatGPT 相关技术
技术演进:GPT->InstructGPT->ChatGPT
存在什么样的问题?
学习三阶段
数据组织和效果评估
背景与问题
解决思路
效果与实践
中文开源模型
基于自有数据训练出本地模型
可能的问题、差距和如何进一步提升效果
分享嘉宾|徐亮 元语AI 负责人
编辑整理|王来奇
出品社区|DataFun
01
ChatGPT 是一个通用功能型助手。2022 年 12 月 5 日,OpenAI 首席执行官 Sam Altman 在社交媒体上发文称,ChatGPT 推出五天,已突破 100 万用户。AI 聊天机器人 ChatGPT 爆火出圈,已成为一个标志性事件。微软正洽谈 100 亿美元增持股份,并很快将其整合到微软云中。
上图中展示了两个例子,展现出了惊人的效果。
ChatGPT 之所以这么受欢迎,一方面是由于其理解用户意图的能力和生成的效果比较好;另一方面,通过对话机器人的形式,使得人人都能使用。
下面将从模型演进、最初模型存在的问题、ChatGPT 模型学习的三个阶段、训练 ChatGPT 模型的数据组织和效果几个方面进行介绍。
1. 模型演进
ChatGPT 技术也经过了几代模型的演进,最初的 GPT 模型是在 2018 年提出的,模型参数只有 1.17 亿;2019 年的时候 GPT-2 模型参数是 15 亿;到了 2020 年 GPT-3 模型参数达到了 1750 亿;通过几代的模型更新迭代,到 2022 年出现了 ChatGPT 模型。
2. 之前的模型存在什么样的问题
在 ChatGPT 模型出来之前的模型存在什么样的问题呢?通过分析发现存在的一个比较显著的问题是对齐问题,虽然大模型的生成能力比较强,但是生成的答案有时候不符合用户意图。通过研究发现造成对齐问题出现的主要原因是语言模型训练的训练目标是预测下一个词,而不是按照用户意图来生成。为了解决对齐问题,在训练 ChatGPT 模型过程中加入了基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)过程。
3. 学习三阶段
ChatGPT 模型的训练过程是按照三步骤走的形式进行的。
第一步是在 GPT 模型基础上使用真实用户的输入进行监督学习,在这个过程中数据来自真实用户,数据质量比较高也比较宝贵。
第二步是训练一个奖励模型,对于一个 query 通过不同模型会产生不同的输出结果,标记者对所有模型的输出结果进行一个排序,用这些排序后的数据训练奖励模型。
第三步是把模型生成的初步答案输入到奖励模型当中,奖励模型会对这个答案进行一个评价,如果生成的答案符合用户的意图就给一个正向的反馈,否则就给一个负向的反馈,从而把模型调教的越来越好,这就是引入强化学习的目的,使得生成的结果更符合人类的需要。训练 ChatGPT 模型过程中三步走的过程如下图所示。
4. 数据组织和效果评估
在训练模型之前我们需要准备好所用的数据集,在这个过程中就会遇到数据冷启动的问题,可以通过以下三个方面来解决:
(1)搜集旧系统用户使用的数据集
(2)让标注人员根据之前真实用户输入的问题标注一些相似的 prompt 和输出
(3)数据标注人员从问答、写故事、生成等自己想的一些 prompt。
训练 ChatGPT 模型的数据包含三部分数据集(77k 真实数据):
(1)基于真实用户 prompt 的监督学习数据,用户 prompt,模型 response,数据量有 13k。
(2)用于训练奖励模型的数据集,这部分数据对于一个 prompt 对应多个response 的排序,数据量有 33k。
(3)基于奖励模型使用强化学习技术进行模型训练的数据集,只需要用户prompt,数据量有 31k,对质量要求较高。
完成 ChatGPT 模型训练后,对于模型的评价也是比较充分的,主要从以下几个方面来评价:
(1)模型生成的结果是否符合用户的意图
(2)生成的结果能不能满足用户提到的约束
(3)模型在客服领域能否有好的效果
通过和 GPT 基础模型进行对比的详细实验结果如下图所示。
02
下面将从背景与问题、解决思路、效果与实践三个方面介绍我们进行 ChatGPT 技术国产化的内容。
1. 背景与问题
为什么要进行国产化,主要考虑了以下几个方面:
(1)ChatGPT 技术本身是比较先进的,在许多任务上效果比较好,但是不对*提供服务。
(2)可能不能满足国内企业级客户的需求,无法提供本地化技术支持和服务。
(3)价格是以欧美为主要市场的美元进行计价的,价格比较昂贵,国内多数用户可能承受不起。通过测试发现对于每条数据约需要花费 0.5 元人民币,对于拥有大量数据的客户无法进行商业化。
由于以上三个问题,我们尝试了 ChatGPT 技术国产化。
2. 解决思路
我们在进行 ChatGPT 技术国产化过程中,采用了分布走的策略。
首先训练了一个具有百亿参数的中文预训练模型;其次在亿级别任务数据上使用 Prompt 的形式进行任务监督学习;然后把模型对话化,即以对话或人机交互的形式和人进行交互;最后我们再引入奖励模型和用户反馈的强化学习 RLHF 技术。
Prompt 多任务学习模型(PromptCLUE)是一个支持全中文任务零样本学习的模型。该模型实现了三大统一:统一模型、统一数据形式(所有任务都转化为 prompt 形式)、统一使用方式(零样本的形式进行使用)。该模型是基于 1000 亿中文字词级别 token 进行无监督学习,在亿级下游任务数据上进行训练,累积学习了 1.5 万亿中文字词级别 token。支持 20 多种任务上的零样本使用(文本理解类、抽取类、生成类任务)。
如何把模型进行对话化,即转化为人机交互形式的模型,我们主要做了如下几方面的工作:
首先为了使模型具有比较好的生成效果,我们移除了文本理解类和抽取类的任务,这样就加强了问答、对话和生成类任务的学习;其次,转变成对话模型后,生成结果会受到上下文的干扰,针对这个问题,我们加入了抗干扰数据,使得模型可以在必要时忽略无关的上下文;最后,我们基于真实用户的反馈数据加入了学习过程,使得模型能够更好地理解用户的意图。下图是和模型进行单轮和多轮测试的形式。
3. 效果与实践
下面是针对模型进行测试的效果,通过比较当前与 ChatGPT 模型相比还有1~2 年的差距,不过这种差距是可以逐步弥补的,目前我们进行了一些有益的尝试,也有了一定的效果,目前可以进行一些对话、问答、写作等交互。下图展示了测试结果。
03
国产开源大模型
1. 中文开源模型
我们最近刚发布的元语功能型对话大模型(ChatYuan)参数量有 7.7 亿,线上的版本是具有 100 亿参数量的模型,已经上线了多个平台,包括 Huggingface、ModelScope、Github、paddlepaddle 都可以使用。模型可以下载到本地,根据自己的用户数据集进行微调。它是基于 PromptCLUE-large 结合数亿条功能对话多轮对话数据进一步训练得到。
上面以 Huggingface 平台为例,展示了模型本地使用方法。在平台搜索ChatYuan,加载模型,进行简单的包装。使用中有一些比较重要的参数,比如是否采样 sample,如果需要生成的比较多样就需要采样。
2. 基于自有数据训练本地模型
首先需要将数据组织成统一的形式,由两部分构成:输入(Input)和输出(Output)。对于单轮问答或生成输入(Input):任务描述+输入文本(如:“用户:你好\n小元:”),输出(Output)是指系统需要预测的文本(如:“您好!我是元语AI...”)。对于多轮对话输入(Input):任务描述+上文+输入文本,输出是指系统需要预测的文本,如下图中"小元"后的内容。
下图展示了基于自有数据进行训练本地模型的一个示例。这一示例涵盖了整个过程,从数据的准备,到开源数据的下载、转化,还包括模型的训练、预测和评估。其基础使用的是 pCLUE 多任务数据集。用户可以使用自己的数据进行训练,也可以使用 pCLUE 进行初步的训练,来测试效果。
ChatYuan 和 ChatGPT 都是通用型功能型对话大模型,都能够在闲聊或法律、医疗等专业领域进行问答、交互和生成。通过和 ChatGPT 模型相比较,目前还有一定的差距,主要体现在是以下几个方面:
模型大小方面,ChatGPT 参数量是千亿级别的,ChatYuan 是百亿级别的;
学习到的数据量方面也存在很大差距,ChatYuan 模型还在学习过程中;
在强化学习方面,ChatGPT 模型已经引入了基于用户反馈的强化学习,我们的模型还在引入过程中。
在使用模型过程中可能遇到生成效果和文本长度方面的问题,取决于数据格式是否正确,在生成过程中是否采样 sample,输出结果的长度控制 max_length 等。
要进一步提升模型效果,可以从如下几个方面入手:
(1)结合行业数据进行进一步训练,包括无监督预训,以及使用大量高质量的数据进行有监督学习。
(2)使用真实用户反馈数据的学习可以弥补分布差异。
(3)引入强化学习,对齐用户意图。
(4)选用更大的模型,一般来说模型越大,模型能力越强。
ChatGPT 带来的新技术和使用场景,让人们看到了 AI 的巨大潜力。更多应用都将得到升级,也为一些新应用创造了可能。
元语智能,作为大模型 Model-as-a-Service 服务商,在这一领域也在不断探索中。欢迎感兴趣的伙伴关注我们的网站和公众号。