本文作者:hangye,腾讯前端工程师,MoonWebTeam团队成员
1. 前言
12月1日,旧金山的人工智能实验室 OpenAI 发布了一个名为 ChatGPT 的自然语言生成式模型,迅速风靡世界,短短5天内用户数量已经突破100万。许多大佬都来尝试,例如马斯克都说到,我们已经离强大到危险的人工智能不远了。
马斯克还向他请教了如何更好的设计推特,得到的结论还挺有意思:
优化用户的聊天界面,由一维转向二维,以便用更直观的方式查找聊天内容。
并且,它还采用了注重道德水平的训练方式,按照预先设计的道德准则,不会回答不怀好意的提问。
有人让 ChatGPT 参加了智商测试,得分83; SAT测试得分1020,对应人类考生52%分位,已经达到平均人的智商水平,要知道 ChatGPT 并没有对数学方面做过优化,已经是相当不错的结果了
不少人体验后都惊呼,它可能会让一大批人失业。
那么, ChatGPT 到底是什么呢?为什么这么火呢?笔者阅读了不少资料并亲身体验了一下,最后总结起来,通过此次分享带大家更深入的了解它。
2. chatGPT 是什么?
2.1 GPT-3
GPT-3 是 ChatGPT 的前身,是基于自然语言生成的一种基本技术。它基于一种叫做 Transformer 的模型,通过多个层和头来学习文本之间的关系,并生成高质量的文本内容。
在 GPT-3 中,Transformer 通过学习大量的文本来预训练模型,从而了解语言的基本结构和语法。当用户输入一些文本时,GPT-3会使用自注意力机制来理解文本中的信息,并根据这些信息来生成新的文本。这种技术可以用来进行各种自然语言处理任务,包括文本生成、翻译、问答和文本分类等。
它有一些不足之处:
1. 它的生成文本质量可能不够高,GPT-3是一种基于概率的模型,它会根据概率预测下一个单词的概率,并选择概率最高的单词作为输出。这种方法的优点在于它可以生成多种不同的文本,但同时也可能导致生成的文本质量不够高。
2. 它存在语言偏差。GPT-3是通过在大量文本上进行预训练来学习语言的,因此它所学习到的语言可能会受到文本数据的偏差的影响。这意味着GPT-3可能会对某些人群或某些语言产生偏见,并在生成文本时体现出这种偏见。
3. 它难以应用于比较复杂的领域。由于它的预训练是基于大量通用文本数据,因此它可能很难深入对话,只能做一些基本的对话和翻译
总的来说就是头脑简单,对话通顺,但脱离了实际。
2.2 ChatGPT
ChatGPT 是一种基于 GPT-3 技术的聊天机器人,相比之下它能更容易在特定的应用场景中进行微调和训练,以提升对特定领域语言的理解能力。它可以更灵活地与用户对话,并自动理解用户的问题,提供更精确、更有价值的信息。
ChatGPT 官方说明:
这一模型可以与人类进行谈话般的交互,可以回答追问,连续性的问题,承认其回答中的错误,指出人类提问时的不正确前提,拒绝回答不适当的问题。
3. 应用场景
3.1 搜索引擎
目前的搜索引擎都是在你搜索了任何一个问题后,列出一大堆的结果,这其中一些好的答案可能会排在前面,但也可能会是很多广告排在前面。如果需要真正解决问题,可能还需要多次查找不同关键词才能得到最终答案。
而 ChatGPT 一个非常核心的功能点就是它会把大家普遍认为最好的答案直接告诉你,并且可以一直对话下去,就像找老师问问题一样,体验很好,例如:
对此,有技术人员已经连夜开发出了 ChatGPT 浏览器插件。例如:
只要你在在搜索引擎搜索栏输入问题,搜索引擎给出答案的同时,ChatGPT 在右边也给出了它的答案。这里我们可以想象一下,未来会不会有专门以这种问答方式的搜索引擎出现?
3.2 敲代码
告诉他用什么语言实现什么功能,它就可以写出一段有质量的代码,并且会告诉你是怎么实现
对于程序员来说,在日常工作中它还能给我们提供不少的帮助,主要是帮助解决开发中遇到的问题
例如:
1. 检查一段代码是否有 bug,防止一些肉眼不容易发现的错误
2. 提供代码思路,人在思考时会脑子短路,但机器不会
3. 编写测试代码,提高效率
4. 解释一段代码的含义,特别是对于一些没有注释又复杂的代码,它能快速帮助我们读懂这段代码
5. 通过业务场景问问题,可以得到比搜索引擎更具针对性和连续性的回复
……
有人已经开发出了 vscode 插件,集成了以下功能:
3.3 提供产品思路甚至方案
当你想做一件产品时,可以找他聊一聊
如果聊的够深入,甚至可以帮你输出一份完整的 PRD
3.4 写文章
告诉他题目和条件,就可以生成一篇完整的小作文
我们工作中也会常写一些文章,例如技术文章、知识分享等,我们都可以用它来辅助我们完成,例如润色语句、知识点总结、名词的字典查询等,也可以模仿某人的风格撰写文章,来帮助我们写出来的文章偏向到某种风格
3.5 训练成一台虚拟机
经过一些简单对话,ChatGPT 甚至可以训练成了一台虚拟机,运行各种 Linux 指令,甚至可以使用 curl 来让 ChatGPT 和自己做交互。
详细原文见:
Building A Virtual Machine inside ChatGPT
3.6 其他应用场景
除了日常对于个人应用,ChatGPT 的成熟也可带来广泛的应用场景甚至替代一个岗位,目前下游相关行业可能包括代码机器人、小说衍生器、对话类搜索引擎、语音工作助手、对话虚拟人(客服、外呼、营销)等。从上游需求的增加来看,受益行业可能包括算力、数据标注、自然语言处理等。总之,它的应用场景还是很具有想象力的
4. 实现原理
笔者非该领域的专业人士,理解有限。部分引用他人文章,文末见参考文章。
4.1 基于深度学习技术
它基于深度学习技术,通过构建多层神经网络来模拟人类大脑的学习过程,从而使计算机可以完成许多复杂的任务,例如语音识别、图像分类和自然语言理解等。
它会通过对大量文本数据进行训练,来学习语言知识和推理能力。这些文本数据可能包括新闻文章、小说、维基百科等内容。通过不断地训练,它的神经网络可以学会提取文本中的信息,并使用这些信息来回答问题
4.2 训练方法
OpenAI 的开发人员是这么解释的:
“我们使用与 InstructGPT 相同的方法,以从人类反馈中强化学习(Reinforcement Learning from Human Feedback,RLHF)的方法训练该模型,人工智能训练者扮演对话的双方,即用户和人工智能助手,提供对话样本。在人类扮演聊天机器人的时候,会让模型生成一些建议,辅助训练师撰写回复,训练师会对回复选项打分排名,将更好的结果输回到模型中,通过以上奖励策略对模型进行微调并持续迭代。”
4.2.1 监督学习
监督学习就是在“有答案”的数据集上学习。例如我们要用监督学习 (supervised learning) 训练一个中文到英文的机器翻译模型,我们就需要有中文以及其对应的英文。整个训练过程就是不断地将中文送入到模型中,模型会给出一个英文的输出,这个时候我们对比一下英文的输出与标准答案的差距远不远,如果差距比较大,那我们就调整模型参数。这也成为早期针对机器翻译模型的主要训练方法。
4.2.2 迁移学习
“有答案”的数据终究是有限的。这也是限制之前很多自然语言学习的模型设计复杂度的原因。如果想提高模型的表达能力,那参数太多了,我们没有足够的“有答案”的数据来训练这个模型。
迁移学习就是使用已训练的模型来解决更复杂的任务。这种方法的基本思想是,如果两个任务相关,那么可以使用已解决第一个任务的模型来加速解决第二个任务。迁移学习通常使用在数据和计算资源有限的情况下,因为可以使用已经训练好的模型的知识,而不是从头开始训练新的模型。再使用监督学习来对模型进行针对性的微调(fine-tune)。
例如,假设你想要训练一个模型来识别狗的品种。你可以使用一个已经训练好的图像分类模型作为迁移学习的起点,因为这个模型已经学会了识别不同种类的动物。你可以在这个模型的基础上再训练一些特定于狗品种的数据,以便调整模型以更好地识别狗的品种。
简单来说,ChatGPT 通过构建一些聊天的 Prompt(指令或问题),让人类标注一些想要的回复,并用这些数据进行监督学习来微调。
4.2.3 强化学习
ChatGPT 在使用进行微调之外,还使用了一种叫做 reinforcement learning from human feedback (RLHF)的技术。这个技术在 ChatGPT 的主要作用是将预训练的模型的目标对齐到聊天这一具体的下游应用上。
强化学习可以理解为让智能体在给定环境中学习如何执行最优决策,以获得最大回报(reward)。最大回报意味着此时的回复最符合人工的选择取向。例如,在游戏中的机器人,可以通过执行不同的动作来尝试获得最大的分数。每一次动作后,机器人都会根据得分的提升或下降来调整自己的策略,以便在未来尽可能地获得最大的回报。
这种训练方式较大地提升了 ChatGPT 的聊天能力。其总体流程如下图所示
第一阶段:冷启动阶段的监督策略模型。
GPT 3.5 尽管很强,但是它很难理解人类不同类型指令中蕴含的不同意图,也很难判断生成内容是否是高质量的结果。为了让GPT 3.5初步具备理解指令中蕴含的意图,首先会从测试用户提交的 prompt 中随机抽取一批,靠专业的标注人员,给出指定 的高质量答案,然后用这些人工标注好的数据来微调模型。经过这个过程,我们可以认为 GPT 3.5 初步具备了理解人类 prompt 中所包含意图,并根据这个意图给出相对高质量回答的能力,但仅仅这样做是不够的。
第二阶段:训练回报模型(Reward Model,RM)。
这个阶段的主要目的是通过人工标注训练数据,来训练回报模型。具体而言,随机抽样一批用户提交的 prompt(大部分和第一阶段的相同),使用第一阶段微调好的冷启动模型,对于每个prompt,生成 K 个不同的回答,于是模型产生出了<prompt,answer1>,<prompt,answer2>….<prompt,answerK>数据。之后,标注人员对 K 个结果按照很多标准(例如相关性、富含信息性、有害信息等诸多标准)综合考虑进行排序,给出K个结果的排名顺序。这一步的目的是引导 GPT 回答人类想听到的答案,使得 ChatGPT 从命令驱动转向了意图驱动。
第三阶段:增强预训练模型的能力。
本阶段无需人工标注数据,而是利用上一阶段学好的 RM 模型,靠 RM 打分结果来更新预训练模型参数。具体而言,首先,从用户提交的 prompt 里随机采样一批新的命令(与第一第二阶段不同的新的 prompt),且由冷启动模型来初始化 PPO(Proximal Policy Optimization) 模型的参数。然后,对于随机抽取的 prompt,使用 PPO 模型生成回答, 并用上一阶段训练好的 RM 模型给出质量评估的回报分数,由此产生的策略梯度可以更新 PPO 模型参数。这一步目的是产生符合 RM 标准的高质量回答。
5. 真的有那么神吗?
尽管他被各大媒体和网友们吹的很神,但如果真正跟他聊多会,就会发现他不仅会说很多重复的话术,而且在一些地方有些局限,例如:
可能含有错误的答案,甚至很坚定解释的很清楚
不具备思想,聊天程序化,只要很认真的跟他说,他就会一本正经的胡说八道:
回答的准确度不稳定的,用户需要自己有鉴别回答质量与准确性的能力。因为这个原因,代码交流网站 StackOverflow 已经禁止用户在其网站上引用 ChatGPT 生成的代码。
总的来说,目前的局限性主要在于模型内部黑盒是否产生因果逻辑,因为 AI 模型的原理是函数拟合。函数的输入和输出能否匹配上是最主要的。所有的语言生成模型和人类语言依旧有一定的差距。如果把ChatGPT当作信息获取的渠道,很有可能会有信息茧房的生成,并且很多知识是未经过推理验证的。
本节末尾,留下两个对话给大家思考:
6. 如何体验
6.1 注册账户
1. 需要准备一个外国梯子, OpenAI不支持国内 ip
2. 去官网走注册流程,关键是需要一个外国手机号,接收验证码就好了。省时间建议某宝可以便宜买到
6.2 免费体验或开源服务
1. 免费体验网站 Ai – Chat
2. 微信插件:wechat-chatGPT
3. VsCode ChatGPT插件
……
7. 总结与思考
从使用角度来看,ChatGPT 可以帮助我们在完成各种领域的事情,提高解决问题的效率。目前使用门槛也相对较低。
从商业化的角度来说,ChatGPT 具有广泛的商业化前景,将推动众多行业的快速变革,但还尚处于发展的早期阶段,距离大规模的商业化应用还需要很长一段时间。上一代产品 GPT-3 历经两年商业化尝试,也难言成功。目前人气这么火爆主要原因是因为基于用户自身的兴趣爱好,通过用户裂变等方法产生了极强的传播效应。
总之,ChatGPT 并没有那么神秘,笔者认为,目前对我们日常工作和生活帮助最大的是内容相关的辅助功能(补全、纠错、字典等)以及当搜索引擎用。它的本质是通过给定的数据和算法来生成回复,不能自主思考,也不能独立进行逻辑推理,但它可以通过一些条件进行逻辑推理来回复,帮助用户理解和解决问题。
参考文章:
ChatGPT: Optimizing Language Models for Dialogue
Learning to Summarize with Human Feedback
为什么ChatGPT这么强?—— 一文读懂ChatGPT原理! – 知乎
速览!Crypto生态的AI野望以及ChatGPT发展会议记录 – 墨天轮