ChatGPT专题|为什么ChatGPT这么强?—— 一文读懂ChatGPT原理!

前言

最近一周多的时间,只要不是生活在火星,喜欢技术的同学一定都被OpenAI的ChatGPT给刷屏了。ChatGPT与以往的公开提供服务的对话机器人相比,性能有了显著的提高。它可以相对可靠地提供一些日常对话、知识获取的功能,也可以它根据人类提供的需求帮忙写文档、写代码,甚至可以修改文本中的各类错误或者代码中的Bug。我相信很多非AI圈的同学肯定会有一种“为什么AI突然变得这么强?“的感受。这篇文章的目的也是为了回答这个问题。在开始之前,我觉得有必要先表达一下我自己的看法:NLP技术发生跨越式发展的标志并不是ChatGPT本身,而应该是2017年-2018年间相继被提出的Transforme1r[1]和GPT[2]。

ChatGPT是Transformer和GPT等相关技术发展的集大成者。总体来说,ChatGPT的性能卓越的主要原因可以概括为三点:

使用的机器学习模型表达能力强。

训练所使用的数据量巨大。

训练方法的先进性。我们接下来将会针对这三点进行探讨。

机器学习模型

在步入正题之前,我们可以先梳理一下NLP发展的历史。

基于文法的模型

这个阶段,大家处理自然语言的主要思路就是利用语言学家的智慧尝试总结出一套自然语言文法,并编写出基于规则的处理算法进行自然语言处理。这个方法是不是乍听起来还行?其实我们熟悉的编译器也是通过这种方法将高级语言编译成机器语言的。可惜的是,自然语言是极其复杂的,基本上不太可能编写出一个完备的语法来处理所有的情况,所以这套方法一般只能处理自然语言一个子集,距离通用的自然语言处理还是差很远。

基于统计的模型

在这个阶段,大家开始尝试通过对大量已存在的自然语言文本(我们称之为语料库)进行统计,来试图得到一个基于统计的语言模型。比如通过统计,肯定可以确定“吃”后面接“饭”的概率肯定高于接其他词如“牛”的概率,即P(饭|吃)>P(牛|吃)。

虽然这个阶段有很多模型被使用,但是本质上,都是对语料库中的语料进行统计,并得出一个概率模型。一般来说,用途不同,概率模型也不一样。不过,为了行文方便,我们接下来统一以最常见的语言模型为例,即建模“一个上下文后面接某一个词的概率“。刚才说的一个词后面接另一个词的概率其实就是一元语言模型。

模型的表达能力

在这里,我们很适合插播一下模型表达能力这个概念。

056e4ced8ecb9e5710f1b5466aa25b0f.jpeg

模型表达能力简单来说就是模型建模数据的能力,比如上文中的一元语言模型就无法建模“牛吃草”和“我吃饭”的区别,因为它建模的本质统计一个词后面跟另一个词的概率,在计算是选“草”还是选“饭”的时候,是根据“吃”这个词来的,而“牛”和“我”这个上下文对于一元语言模型已经丢失。你用再多的数据让一元语言模型学习,它也学不到这个牛跟草的关系。

模型参数数量

有人说,既然如此,为啥我们不基于更多的上下文来计算下一个词的概率,而仅仅基于前一个词呢?OK,这个其实就是所谓的n元语言模型。总体来说,n越大,模型参数越多,表达能力越强。当然训练模型所需要的数据量越大(显然嘛,因为需要统计的概率的数量变多了)。

模型结构

然而,模型表达能力还有另一个制约因素,那就是模型本身的结构。对于基于统计的n元语言模型来说,它只是简单地统计一个词出现在一些词后面的概率,并不理解其中的各类文法、词法关系,那它还是无法建模一些复杂的语句。比如,“我白天一直在打游戏”和“我在天黑之前一直在玩游戏“两者语义很相似,但是基于统计的模型却无法理解两者的相似性。因此,就算你把海量的数据喂给基于统计的模型,它也不可能学到ChatGPT这种程度。

基于神经网络的模型

上文提到,统计语言模型的主要缺点是无法理解语言的深层次结构。曾有一段时间,科学家们尝试将基于文法的模型和基于统计的模型相结合。不过很快,风头就被神经网络抢了过去。

RNN & LSTM

刚开始,流行的神经网络语言模型主要是循环神经网络(RNN)以及它的改良版本LSTM。

12940c161e7fbf490a4be1fa4247442b.jpeg

RNN的主要结构如下, x是输入,o是输出,s是状态。

53e8cd3206dabad2e58b040a3b1ebd90.png

如果RNN作为语言模型的话,那x可以作为顺序输入进去的词汇,而o就可以作为输出的词汇,而s就是通过x计算o的过程中生成的状态变量,这个状态变量可以理解为上下文,是对计算当前词汇时前文所有出现过的所有单词的浓缩并在一次次的计算中不断迭代更新。这也是为啥RNN可以建模词与词关系的根本原理。

52a78973b6a16ac37eeda59a1dcaca93.png

与简单的基于统计的模型相比,循环神经网络的主要亮点就是能够对一段文字中不同词之间的关系进行建模,这种能力在一定程度上解决了基于统计的模型无法理解深层次的问题。

074f908d344cdc7b98ab510e8acd9fe9.jpeg

Attention Mechanisms

在更进一步之前,我们不得不提一下注意力(Attention)机制。

780138893292e453e77443f082c23c89.jpeg

这个机制主要针对RNN语言模型中状态S作为上下文这一机制进行改进。。在RNN中计算当前词后的状态Si主要是通过计算上一个词时的状态Si-1迭代出来的。它的主要缺点就是它假设了距离较近的词汇之间的关系更密切。但是我们都知道,在自然语言中,这一假设并不是一直成立的。引入Attention之后,计算第i个词后的状态从单纯的Si变成了S0,S1...Si的组合,而具体“如何组合”,即哪个状态比较重要,也是通过数据拟合出来的。在这样的情况下,模型的表达能力又得到了进一步的提高,它可以理解一些距离较远但是又非常密切的词汇之间的关系,比如说代词和被指代的名词之间的关系。

0a6bf556646f307ff7025a38b544e255.jpeg

Transformer

接下来,我们终于可以祭出之前提过的NLP跨越式发展的标志之一,Transformer的提出!

其实在有了Attention之后,Transformer的提出已经是顺理成章了。Transformer的主要贡献在于

将Multi-Head Self-Attention直接内建到网络中。所谓Multi-Head Self-Attention其实就是多套并行的Self-Attention,可以用于建模的词与词之间的多类不同地关系。

利用专用位置编码来替代之前RNN用输入顺序作为次序,使得并行计算成为了可能。

65e2c4719e66d507ac9497e4ae46a8ae.jpeg

举一个形象但不准确的例子,对于句子I often play skating board which is my favorite sport. 如果使用Multi-Head Self-Attention,那就可以有一套Attention专门用来建模play和skating board的谓宾关系,有一套Attention用来建模skating board与favorite的修饰关系。从而使得模型的表达能力又得到了提高。

48d8f149285577616ab1e8e90142c746.jpeg

ChatGPT所依赖GPT3.5语言模型的的底层正是Transformer。

训练数据

OK,我们现在有一个名为Transformer模型了,这个模型通过Multi-head Self-Attention,使得建立词与词之间的复杂关系成为了可能。因此可以说是一个表达力很强的语言模型了。然而,单有语言模型没有数据就是巧妇难为无米之炊。

GPT-3.5的相关数据并未被公开。我们就只说说它的上一代GPT-3。GPT-3整个神经网络就已经有1750亿个参数了。这不难理解,想一想Attention凭什么确定在当前上下文下哪些词比较重要?而网络又怎样通过Attention和输入生成输出?这些都是由模型里面的参数决定的。这也是为啥模型结构一样的情况下参数越多表达能力越强。那这些模型的参数怎么拿到?从数据中学习!其实大多数所谓的神经网络的学习就是在学参数。

好家伙,要训练1750亿个参数的神经网络要喂多少数据呢?这么多!(from wikipedia)

Dataset # Tokens Weight in Training Mix

Common Crawl 410 billion 60%

WebText2 19 billion 22%

Books1 12 billion 8%

Books2 55 billion 8%

Wikipedia 3 billion 3%

可以预想的是,表达能力如此之强的模型,在喂入万亿级的数据之后,其对语言本身的理解已经开始接近人类了。比如它处理句子的时候,会通过训练Attention参数理解到句子中哪些词之间存在关系的?哪些词和哪些词之间是同义的?等一系列比较深度的语言问题。

这还只是2020年的GPT-3。如今已经2022年了,相信GPT-3.5的模型表达能力比GPT-3又有相当大地提升。

训练方法

监督学习 vs 无监督学习

简单来说,监督学习就是在“有答案”的数据集上学习。如果我们要用监督学习(supervised learning)训练一个中文到英文的机器翻译模型,我们就需要有中文以及其对应的英文。整个训练过程就是不断地将中文送入到模型中,模型会给出一个英文的输出,这个时候我们对比一下英文的输出与标准答案的差距远不远(Measured by Loss Function),如果差距比较大,那我们就调整模型参数。这也成为早期针对机器翻译模型的主要训练方法。

c53fe88099f3555533781ede38585db8.jpeg

迁移学习

然而,“有答案”的数据终究是有限的。这也是限制之前很多自然语言学习的模型设计复杂度的原因。不是不想提高模型的表达能力,而是提上去之后,参数太多,我们没有足量的“有答案”的数据来训练这个模型。

2018年,另一个我认为NLP跨越式发展的标志来了,那就是GPT的提出。

72267ed069d4e395f2ad9b1dd46366ae.jpeg

GPT的主要贡献在于,它提出了自然语言的一种新的训练范式。即现通过海量的数据的无监督学习来训练一个语言模型。正如我们之前提到过的,所谓语言模型即是在一个上下文中预测下一个词,这个显然是不需要带有标注的数据的,现有的任何语料都可以作为训练数据的。由于GPT的底层借用了表达能力很强的Transformer,互联网经过长时间的发展,海量的无标记的自然语言数据也并不再是稀缺的事物。导致了训练出来的模型其实对语言有了相当深入地理解。

这个时候,如果你想让这个语言模型能够陪你聊天,那在一个已经理解语言的模型的基础上,你只需要喂一些聊天的对话数据,使用监督学习来对模型进行针对性的微调(fine-tune),就可以使它学会如何聊天了。这个操作也叫做迁移学习(Transfer Learning)。

在迁移学习的过程中,微调一般是通过简单的监督学习来进行。简单来说,ChatGPT通过构建一些聊天的Prompt,让人类标注一些想要的回复,并用这些数据进行监督学习来微调。

强化学习

ChatGPT在使用进行微调之外,还使用了一种叫做reinforcement learning from human feedback (RLHF)的技术。这个技术在ChatGPT的主要作用是将预训练的模型的目标对齐到聊天这一具体的下游应用上。它也较大地提升了ChatGPT的聊天能力。

其总体原理如下图所示,在完成模型微调之后,先在人类的帮助下训练一个奖赏网络,这个奖赏网络具有对多个聊天回复好坏进行排序的能力。接着,利用这个奖赏网络,进一步通过强化学习(reinforcement learning)优化了聊天模型。该训练方法的细节可以参考论文[3]

ee095686b4da453fc6a68ccb1009ac01.jpeg

在这一通操作之后,ChatGPT就变成了我们现在看到的这样子。

其他

至此,我们基本上就已经能明白为什么ChatGPT这么强了,但是我相信很多同学肯定会表示“就这?我不信,它都会改bug了,给他一段代码他都知道代码是干什么的了。”

Okay,我们可以首先解释一下为什么它可以做到修改代码中的bug,根据OpenAI提供的信息 :"GPT-3.5 series is a series of models that was trained on a blend of text and code from before Q4 2021.",我们可以知道GPT-3.5中的训练数据其实是包含了海量的代码数据。所以说GPT-3.5对代码的理解也是相当强的。从论文[4]可以看到,将代码放入语言模型中进行训练后,训练出的语言模型已经可以做到代码语义级的搜索。

而ChatGPT又是怎么知道代码的功能的呢?目前我还没看到相关论文,不过可以参考一下OpenAI在GPT-3上做的代码训练的工作[5],大概就是将代码和其功能docstring注释放在一起做对比预训练(contrastive pretrain),这样可以让语言模型理解代码和其功能的关系。

总结

总之,ChatGPT并没有那么神秘,它本质上就是将海量的数据结合表达能力很强的Transformer模型结合,从而对自然语言进行了一个非常深度的建模。对于一个输入的句子,ChatGPT是在这个模型参数的作用下生成一个回复。

有人会发现ChatGPT也经常会一本正经胡说八道,这也是这一类方法难以避免的弊端。因为它本质上只是通过概率最大化不断生成数据而已,而不是通过逻辑推理来生成回复。

48b28b2310eb2b24f4813fd20c9740b5.jpeg

向ChatGPT询问比较严肃的技术问题也可能会得到不靠谱的回答。

129c0a146354f2a797207e1b4603bb97.jpeg

Reference

Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).

Radford, Alec, et al. "Improving language understanding by generative pre-training." (2018).

Ouyang, Long, et al. "Training language models to follow instructions with human feedback." arXiv preprint arXiv:2203.02155 (2022).

Chen, Mark, et al. "Evaluating large language models trained on code." arXiv preprint arXiv:2107.03374 (2021).

Neelakantan, Arvind, et al. "Text and code embeddings by contrastive pre-training." arXiv preprint arXiv:2201.10005 (2022).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图像加密】基于matlab GUI正交拉丁方+二维Arnold置乱图像加密【含Matlab源码 813期】

⛄一、正交拉丁方置乱及二维Arnold置乱简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要。通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密技术。前一种保护技术因不改变图像的可见性而不适合…

ChatGPT自己会选模型了!微软亚研院+浙大爆火新论文,HuggingGPT项目已开源

©作者 | 桃子 Britta 来源 | 新智元 「贾维斯」已来!微软亚研院和浙大推出了一个大模型协作系统HuggingGPT,让ChatGPT协调HF社区模型,处理各种多模态任务能力超强。 ChatGPT引爆的AI热潮也「烧到了」金融圈。 近来,彭博社的研…

华人一作DragGAN爆火!拖动你的GAN:交互式图像编辑新高度

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【GAN和扩散模型】微信技术交流群 转载自:机器之心 | 编辑:蛋酱、小舟 如果甲方想把大象 P 转身,你只需要拖动 GAN 就好了。 在图像生成领…

魔戒啊魔戒,请帮我解开CDM的“数据魔法”

关注我们牛年牛气冲天 4月16日,被誉为魔幻电影鼻祖的《指环王》三部曲,将陆续以4K版登上国内IMAX银幕。那令人震撼而又陶醉的魔幻世界重新归来了。 在现实世界中,在看似枯燥乏味的数据中,是否也存在魔法呢?下面&#x…

医疗ChatGPT、金融GPT都来啦!“潘多拉的魔盒”已经打开?

源|学术头条 AIGC(AI Generated Content)即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT,以及 DallE 2、Stable Diffusion 等文生图模型,都属于 AIGC 的典型案例,它们通过借鉴现有的、人类创造的内…

强强联合!谷歌大模型团队并入DeepMind!誓要赶上ChatGPT进度

文|明敏 发自 凹非寺源|量子位 为应对ChatGPT,谷歌在大模型方面的动作还在继续。 最新消息,其旗下专注语言大模型领域的“蓝移团队” (Blueshift Team)宣布,正式加入DeepMind,旨在共…

史上最完整的《指环王》魔戒战争大事记(编年体长文)

以下内容转载自 https://www.toutiao.com/i6872919198092231179/ 原创跃马酒馆小招待2020-09-16 13:33:12 大家好,本文承接上一篇文章对《指环王》历史的梳理,这次从更加激动人心的第二纪元开始将整个魔戒故事以编年体的方式进行叙述。 (如…

GEMMA 全基因组关联分析+CMplot多性状曼哈顿+QQ图脚本

这里写自定义目录标题 GEMMA 全基因组关联分析CMplot多性状曼哈顿QQ图脚本 GEMMA 全基因组关联分析CMplot多性状曼哈顿QQ图脚本 ###GEMMA 全基因组关联分析CMplot多性状曼哈顿QQ图脚本 #作者:刘济铭 ########################## GWAS理论和基本结果理解已经有很多…

新鲜事儿!只有AI作品的电影节;酷~AI纹身设计师;ChatGPT的接生婆RLHF;Wayve自动驾驶模型MILE… | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 『AI Film Festival』只接受AI作品的电影节,一万美元奖金花落谁家? https://aiff.runwayml.com/ Runway ML公司12月7日推…

ChatGPT神奇应用:无需美术功底快速生成高清艺术插图

正文共 1410字,阅读大约需要 8 分钟 创意人群的最佳助手,您将在8分钟后获得以下超能力: 1.高清艺术类插图【非人物】 2.多风格高效出图 Beezy评级:A级 *经过寻找和一段时间的学习,一部分人能掌握。主要提升效率并增强自…

让 ChatGPT 扮演一个艺术家,协助我们生成绘图 prompt

stable-diffusion Prompt 生成 直接生成 按照惯用的扮演思路,我们可以让 ChatGPT 扮演一个艺术家,协助我们生成绘图 prompt。考虑到 ChatGPT 和 DallE 同为 openai 公司产品,且 stable-diffusion 开源模型出现较晚,ChatGPT 训练…

翻译: 面向开发人员的GPT提示工程 GPT Prompt Engineering for Developers

1. 提示指南Guidelines for Prompting 在本课中,您将练习两个提示原则及其相关策略,以便为大型语言模型编写有效的提示。 In this lesson, you’ll practice two prompting principles and their related tactics in order to write effective prompts …

14个在你的WordPress网站上使用OpenAI的最好方法(2003)

您是否想知道如何在您的WordPress网站上使用OpenAI和ChatGPT? OpenAI可以提供一切帮助,从为您的帖子生成元描述到撰写电子邮件销售文案。您可以在您的WordPress网站上使用OpenAI来节省时间、降低成本、改善您的搜索引擎优化和工作流程,并发展…

吴恩达OpenAI最新课程:prompt-engineering-for-developers读书笔记

文章目录 一、前言二、Prompt编写原则2.1 环境配置2.2 编写清晰、具体的指令2.2.1 使用分隔符2.2.2 结构化输出(JSON、HTML等)2.2.3 要求模型检查条件是否满足2.2.4 提供少量示例(Few-shot Prompting) 2.3 指导模型思考2.3.1 指定…

chatgpt赋能python:Python打折简单程序:节省金钱和时间的利器

Python打折简单程序:节省金钱和时间的利器 作为程序员,我们总是在寻找更好的,更高效的解决方案。在购物时,这也是如此。现在,我们可以通过编写一个简单的Python程序来实现节省金钱和时间的目的。 什么是Python打折简…

《花雕学AI》29:5秒钟就能为你的想法想出新点子?ChatGPT新点子指令模型告诉你怎么做

引言 你有没有遇到过这样的情况,你想出了一个想法,但是不知道怎么扩展或改进它?你有没有想过有一个工具,可以帮你在短时间内为你的想法生成各种新的点子?如果你有这样的需求,那么你一定要了解ChatGPT。 C…

AI大模型应用时代,如何通过数据“造好品,卖好品”?

在数字化时代的浪潮中,品牌营销正面临着前所未有的挑战和机遇。随着技术的迅猛发展,消费者的行为和期望也在不断演变。 新的市场环境下,消费者的需求和购买行为发生了哪些变化? 数码家电转战社媒平台,竞争白热化如…

使用chatGPT编写的支付宝沙箱支付

支付宝沙箱支付指的是在支付宝开放平台的沙箱环境中进行的模拟支付操作。开发者可通过支付宝开放平台的沙箱环境模拟真实的支付流程,包括创建订单、模拟用户付款、模拟用户退款等操作,从而测试自己的支付功能是否正常。沙箱环境中的交易数据和资金均为虚…

ChatGPT提示词工程(一):Guidelines准则

目录 一、说明二、安装环境三、Guidelines准则一:写出明确而具体的说明方法1:使用分隔符清楚地表示输入的不同部分方法2:用结构化输出:如直接要求它以HTML或者JSON格式输出方法3:请模型检查是否满足条件方法4&#xff…

ChatGPT - 使用故事和隐喻来帮助记忆

文章目录 Prompt Prompt 我目前正在学习[主题]。将该主题的关键教训转化为引人入胜的故事和隐喻,以帮助我记忆。