从算法工程看ChatGPT的原理与应用一、ChatGPT的背景以及简单介绍 ChatGPT属于AIGC领域,即人工智能生成内容,与之相对应的是用户生成内容。在AIGC领域它可以分为以下几种:文本的生成;音频、图像的生成;视频生成以及多模态生成。 AIGC的技术发展路径:2014年,GAI模型提出,被用来做图片的风格迁移以及图片的生成,当时效果非常好;2017年,谷歌提出Transformer模型,从此深度学习的领域就开始都走向了大的预训练模 型;2022年7月,StableDiffusion扩散模型提出并且开源,它是用来做文本生成图片的模型,给模型输入一个提示,模型会输出一张图片,它具备快速出图并且质量很高的特点,引发了AIGC的热潮。 目前的AIGC海外公司的发展明显领先于国内,比如Jasper公司,他是面向内容创作者的,可以帮助分享想法、修改媒体上的内容。还比如TracksterAI7.49公司,用户可以制定一个角色,比如你喜欢的明星,与AI对话可以营造出与真人对话的感觉。还比如Tommy公司,它可以根据输入的主题自动生成PPT,写出大纲描述以及配上图片,这属于多模态生成的领域。目前国内企业的人力和算力都投入不足,又由于语料等等原因,技术基础技术的进展会比较慢。语料方面,互联网上中文数据的质量比较低,一些模型虽然上线,但缺乏对真实世界数据的调用和迭代。由于GPU等芯片问题,国内的算力一定程度上不如国外,还存在模型训练不够充分等等问题。另外就是大公司目前更重视短期内可以盈利的业务,缺乏长期主义,一些项目缺乏生长土壤。 ChatGPT是根据文本生成文本的模型,OpenAI在2022年的11月底发布了聊天机器人模型,他能够学习理解人类的语言来进行对话,根据聊天的上下文进行互动,像真人一样进行交流。目前它的每月用户数已经达到了一个亿,成为了史上增长最快的互联网应用。从NLP的领域来说,模型可以分为以下三个层次:感知、理解和推理,目前ChatGPT可以在推理任务上有非常好的效果。 下面我们可以看几个例子,首先是一个自定义的文本分类任务,比如我跟他对话中告诉他,我现在需要对文本进行分类,分类只能是说订机票、通讯录、打电话、发短信这四种中的一种,然后给他说一段话,它可以学习到并且对这句话进行文本分类。后面是我给了他另一句话,告诉他说帮我预约一个会议室,然后他会告诉你说你刚才的这句话并不能分在刚才的四种技能中,你可以去添加技能等,他在文本分类的任务上比传统的需要大量语料的训练来得更快。另外可以做一些比如风格迁移或者是代码编写的任务,然后这里的话是给了一个例子,就是说让他去仿照李清照的风格去写注释,并且解决一个问题,然后求解一元一次方程。可以看一下下面的他给出的代码,代码没有问题,并且它的注释仿照了李清照的风格,另外还可以用它来做一个故事创作,给它一个主题,并且一些限制条件,然后它会根据这个条件来生成一个故事。还有就是一些知识问答的领域,比如说可以去问他这个菜怎么做,他会把他学习到的信息反馈出来,然后给我们答案。 二、模型的训练原理 ChatGPT是属于OpenAI公司GPT系列模型中的一个,目前已经公布的有GPT1、GPT2和GPT3,接下来会公布GPT4,它是一个多模态的模型,ChatGPT和InstructGPT是一对孪生模型,目前会被称作GPT3.5,二者在模型的结构和训练方式上完全一致,不同之处在于数据采集上会有差别。GPT的网络结构是以TransformerEncoder结构为基础,把很多的Transformer的编码层串起来,然后一层一层地叠加,最后输出,它是一个生成式的模型,比如说我现在给他一个问题,他输入以后会逐字地把答案 预测出来,就类似于文字接龙的游戏。GPT1、GPT2、GPT3都是大规模的预训练模型,都只用了无监督学习,基于海量的互联网上的文本数据直接输入到模型中,让模型不断学习接龙的过程,不断的预测下一个字,以此来迭代模型的参数。 GPT3比GPT1、GPT2用了更多的预训练数据,并且参数量是大两个数量级的,但是这样的大模型可能对于正常使用很难去用,因为它预测得非常慢。另外的话还有一个问题,由于这些模型都是用无监督学习学出来的,还存在着输出不对齐的问题。在模型的训练语料中可能会有大量的互联网上扒取的文本,比如这里有一个tripleAI的会议主题是什么,这段文本介绍了tripleAI是人工智能领域的顶级会议等等,确实是介绍了他这个会议主题。但是训练语料中还有很多的文本,比如说关于联合国大会,我们收集了同学们提出的很多问题,包括大会主题是什么,大会在哪里举行等等更多的语料。那么在问模型tripleAI会议的主题是什么的时候,我们希望得到的是VCL主题的介绍,但实际上模型可能学习到的VCL的会议在哪里举行,什么时候举行等等,这就是模型的输出与我们的期望不对齐的问题。InstructGPT以及ChatGPT中就使用了基于人工反馈的强化学习的方式来解决模型输出与期望不对齐的问题。 人工反馈的强化学习的方法主要分三个步骤: 第一步先由人工来选取一些提示以及人工希望得到的答案,并组成样本队,然后用这些样本队来微调GPT3或者GP3.5,在这个基础上得到了一个SFT模型,这个模型可以看作是一个有监督学习的过程,即让模型学习到人类希望得到的一些输入。 第二步是继续给模型输入一些提示,模型可以输出不同的几种答案,人工对这几个答案进行排序,选出这些答案中哪些更好、哪些更坏,然后把答案和样本对输入到打分模型RewardModel中,如果用户不喜欢答案,得分就会更低,用这些数据来训练模型,于是产生了打分模型。 第三步就是说首先用微调过的SFT模型的参数去初始化强化学习的模型,对于任何给定的提示,让PPO模型回答,于是得到了一个答案,把这个答案输入到打分模型中,打分模型会给刚才的答案打分。打分如果高,它就会反馈给PPO模型并让其继续强化,更容易输出这样的回答;反之,原来的模型就会去学习,尽量不要给出这种答案。以此迭代模型,这样就把人工的选择以及喜好都让模型学习到。 简单理解,首先有一个初始的模型去学习文字接龙游戏,它可以产生任何文字序列。第一步就是让人类去引导文字接龙的方向。第二步就是给了他很多的样本队,让奖励模型去模仿人类的喜好,能够知道人类喜欢哪些答案,不喜欢哪些答案。第三步就是用这个模型去教初始的模型,进行增强式学习,让模型尽量输出用户喜欢的内容。经过这样的方式,使用了少量的人工标注的数据和少量的人工答案排序的工作,引入了额外的知识,明显减少了模型输出不对齐的情况,使得ChatGPT以及InstructGPT的输出更接近人类。 由此可见,单纯扩大模型参数并不是未来发展的唯一的方向,让模型去收集人类的反馈数据可能更有利于模型迭代。目前ChatGPT使用的数据集大小并没有发布,但是其孪生模型InstructGPT的数据集总共使用了77k的样本数,其中46k的样本是经过人工标注的,对于大模型训练来说,这个数据量还是很少的,但是这已经产生了非常好的效果。 三、ChatGPT优劣优势: ①模型参数量非常少,InstructGPT是只有ChatGPT1/300的参数量,但是它的性能会比GPT3更好。 ChatGPT略多于InstructGPT,它的效果会比InstructGPT更接近人类一些。②打分模型的训练样本是经过人工偏好排序的,模型生成带有有害、歧视、偏见等情况的输出概率更 低,即模型的价值观更正确。 ③具有超强的文本处理能力,比如视频的脚本编写,旅游的行程计划,写论文等模式化的文本工作。问题: ①调用慢。原因一是官方目前的请求量非常大;其次,模型本身是一个生成式模型,每次只能预测一个字,再根据上文的内容来预测下一个字,所以从其原理上讲会计算慢一些。在OpenAI的官网上一般都会采用逐字输出的形式,以免用户等很久才能看到完全的输出。 ②回答可能会出错,它缺乏逻复杂的逻辑和推理能力,比如这里给了他一道小学的应用题,看起来是一本正经的,实际上里面的逻辑都是错的。它的训练语料是来自于2021年之前的,所以对于之后的世界的了解是有限的。 ③模型是一个黑盒模型,输出内容不可控,存在一定的法律风险。四、ChatGPT的应用 首先是在搜索领域,微软近期已经宣布会把ChatGPT用在微软的套件中,比如bing用它来做搜索引擎的辅助等。谷歌和百度都宣布接下来会发布自己的类ChatGPT的项目,谷歌正式发布Bard给测试人员使用,百度将于3月上线ChatGPT产品,名为ErnieBot。 在对话系统方面,比如智能客服上可以去做客户热线,理财方面的营销以及满意度调查,还有任务型对话例如酒店预订、查天气、医院挂号、政务服务等等。另外在开放式的游戏中,可以为NPC提供更真实的对话能力,例如虚拟数字人或者是闲聊机器人上可以看护小孩、对一些人进行心理辅导等等。文本类创作相关的工作辅助,比如新闻广告业的营销文案的生成,商品描述生成,新闻撰写,教育行业中的智能笔记或者是辅助语言学习,法律方面的文书撰写,互联网中的自动测试脚本的编写,编码辅助,bug检测等等。 在金融行业中的应用,可以通过以下三个方向来看:搜索方面,进行行情的检索;对话系统方面,个性定制领域内的在线客服以及工单处理,用户回访等等对话系统;辅助工作,包括智能文案的生成,理财营销的文案生成,核实用户信息,逾期催收文案,内容质检等文本相关的工作都可以用这个模型。 以下是应用的例子,这里是代码生成的例子,告诉他用Java来帮我写一个异步的爬虫,他会完整地告诉你怎么写,以及每一步要做什么事情。另外比如可以做一些艺术类的创作,比如写歌词,这里可以看到他帮岳云鹏续写一下五环之歌的歌词,他写的其实还是挺好的,之前的模型可能会非常地生硬断句,这里其实都看不出来的。另外比如说生成短视频的脚本,我们给了他一个主题,让他写关于职场的搞笑的短视频脚本,然后它生成出来。这是PPT的大纲生成,同样也是让他去介绍环境保护相关的,然后它生成了PPT的大纲,此外他具有一些语法纠错的能力。另外还可以让它来写营销的文案,比如写一个基金营销广告,或者为奔驰写一个商品描述和广告,如果人工来写可能会需要一些时间,特别是要写大量的文案,但是模型可以快速生成大量的文案。 五、ChatGPT开发者的使用方法 在他的官网上提供了文档,开发者可以选择场景,这是一个Java的示例,它会给你各种语言调用的样例,开发者可以据此进行一些开发。 六、Q&AQ:ChatGPT类似的模型还有哪些?如何量化模型之间的差距? A:类似于ChatGPT模型是只有OpenAI开放了,谷歌之前做过一个模型,但是可能达不到这种效果,并没有发布。谷歌今天发布的是上次模型的升级版——Bard,这个模型会很快整合到谷歌搜索中,目前先开放给测试人员来测试。Meta目前还没有相关的模型发布。如果想量化这些模型的差距,需要整理一些问题去提问,人工对这些答案进行评分,才能真正地量化模型的好坏,不然感性上没办法直接量化评价。 Q:GPT4可以实现什么样的功能?A:目前不是很清楚。 Q:金融机构或第三方企业去借助ChatGPT或者类似的模型,或者相关的AI生成的平台,获取渠道和方式是怎么样的?付费方式是怎样的? A:目前基本上都是直接购买,比如OpenAI或是谷歌的模型服务,因为他们提供的产品叫做模型级服务,类似于PaaS、SaaS,他不会把这套大模型提供给你让你完全去训练,包括GPT1、GPT2和GPT3目前也只提供了接口,你只能通过他们的接口来使用这个模型,你想去自己拿数据去训练,他们也没 有提供方式。这些模型其实非常大,会需要大量的数据、大量的算力GPU,即使他告诉了我们方法,我们可能也没有那么多资源能够自己去训练,所以目前的方式都是采用购买他们的模型服务的形式。Q:购买一般怎么定价,他那边怎样收费? A:目前GPT3和GPT3.5的定价大概是按token即字数来算,每1000个token大