ChatGPT是如何运行起来的?(上)

在这篇文章中,我们将解释ChatGPT是如何工作的,以及为什么它能够产生连贯和多样化的对话。

微信搜索关注《Java学研大本营》

1 每次增加一个词

ChatGPT能够自动生成一些看起来像人类写的文字,这很了不起并且出乎意料。但ChatGPT是如何做到的呢?为什么它能发挥作用?本文我大致介绍一下ChatGPT的内部情况,然后探讨一下为什么ChatGPT能很好地生成我们认为是有意义的文本。我把重点放在正在发生的事情的大画面上,虽然我会提到一些工程细节,但我不会深入研究它们。

首先要解释的是,ChatGPT从根本上说一直在努力做的是对它目前得到的任何文本进行 "合理的延续",这里的 "合理 "是指 "在看到人们在数十亿个网页上写的东西之后,人们可能期望某人写的东西。"

假设我们已经有了 "人工智能最好的东西是它的能力 "的文本。想象一下,扫描数十亿页人类书写的文本(例如在网络上和数字化书籍中),并找到这个文本的所有实例,然后看什么词在接下来的时间里出现了多少。ChatGPT有效地做了类似的事情,除了它不看字面文本;它寻找在某种意义上 "意义相符 "的东西。最终的结果是,ChatGPT产生了一个可能紧随其后的词的排序列表,以及 "概率":

值得注意的是,当ChatGPT做一些事情,比如写一篇文章时,它所做的基本上只是一遍又一遍地问:"鉴于目前的文本,下一个词应该是什么?"每次都会添加一个词。(更准确地说,它在添加一个 "标记",这可能只是一个词的一部分,这就是为什么它有时可以 "编造新词 "的原因)。

ChatGPT得到一个带有概率的单词列表。但是,它究竟应该选择哪一个来添加到它正在写的文章(或其他什么)中呢?人们可能认为应该是 "排名最高 "的词(即被分配到最高 "概率 "的那个)。但是,这时就会有一点巫术开始悄悄出现。因为如果我们总是挑选排名最高的词,我们通常会得到一篇非常 "平淡 "的文章,似乎从来没有 "显示出任何创造力"。但是,如果我们有时(随机地)挑选排名较低的词,我们会得到一篇 "更有趣 "的文章。

这种随机性意味着如果我们多次使用相同的提示,基本每次都得到不同的文章。为了与巫术的想法保持一致,这里有一个特定的所谓 "温度 "参数,它决定了多长时间会使用排名较低的词。对于生成论文,事实证明,选择0.8的 "温度 "参数似乎是最好的。(需要强调的是,这里没有使用任何 "理论",这只是一个在实践中被发现的可行问题。例如,"温度 "的概念之所以存在,是因为恰好使用了统计物理学中熟悉的指数分布,但没有 "物理 "联系。)

在我继续之前,我解释一下,为了论述的目的,我几乎不会使用ChatGPT中的完整系统;相反,我通常会使用更简单的GPT-2系统,它有一个很好的特点,即它足够小,可以在标准的台式电脑上运行。因此,对于我展示的所有内容,我能够包括明确的Wolfram Language代码,你可以立即在你的计算机上运行。

例如,这里是如何获得上述概率表的。首先,我们必须检索底层的 "语言模型 "神经网络:

在后文中我们将看看这个神经网的内部,并介绍它是如何工作的。但现在我们只把这个 "网络模型 "作为一个黑匣子应用到我们得到的文本中,并要求模型按概率计算出前五个词:

这就把这个结果变成了一个明确的格式化的 "数据集":

下面是重复 "应用模型 "的情况--在每一步中加入概率最高的词(在此代码中指定为模型的 " decision"):

如果再继续下去会怎样?在这种("零温度")情况下,很快就会出现相当混乱和重复的情况:

如果不总是挑选 "顶级 "词,而是有时随机挑选 "非顶级 "词("随机性 "对应 "温度 "为0.8)呢?可以建立起文本:

每次这样做,都会有不同的随机选择,文本也会不同--如这5个例子:

即使在第一步,也有很多可能的 "下一个词 "可供选择(温度为0.8),尽管它们的概率下降得相当快(这个对数图上的直线对应于n-1 的 "幂律 "衰减,这是语言的一般统计中非常有特点的):

那么,如果时间更长会发生什么?这里有个随机的例子。它比"顶级 "词(零温度)的情况要好,但还是有点奇怪:

这是用最简单的GPT-2模型(来自2019年)完成的。如果使用更新的GPT-3模型,结果会更好。下面是用同样的 "提示 "产生的"顶级 "词(零温度)文本,用的最大的GPT-3模型:

![](https://files.mdnice.com/user/43644/6deab632-37b1-43f9-a9cd-ddf56106bcf3.png =70%x)

下面是在 "温度0.8 "参数的随机例子:

2 概率从何而来?

ChatGPT总是根据概率来选择下一个词,但这些概率从何而来?我们从一个更简单的问题开始:我们先考虑一次生成一个字母(而不是单词)的英语文本。我们怎样才能算出每个字母的概率呢?我们可以取一个英语文本的样本,然后计算不同字母在其中出现的频率。举例来说,下面对维基百科上关于 " cats "的文章中字母的统计:

同样也统计 "dogs "文章中的字母:

结果是相似的,但也不一样("o "在 "dogs "文章中无疑更常见,因为毕竟它出现在 "dog "这个词本身)。尽管如此,如果我们采取足够大的英语文本样本,可以期待最终得到相当一致的结果:

下面是一个样本,如果我们只是用这些概率生成一个字母序列,我们会得到什么:

我们可以通过添加空格来将其分解成 "单词",就好像它们是具有一定概率的字母一样:

我们可以把 "字长 "的分布与英语中的分布相一致,在制造 "单词 "方面做得稍微好一些:

这里我们没有碰巧得到任何 "真实的单词",但结果看起来稍微好一些。不过,要想更进一步,我们需要做的不仅仅是随机地分别挑选每个字母。例如,我们知道,如果我们有一个 "q",下一个字母基本上必须是 "u"。

这里有一个字母本身的概率图:

下图显示了典型英语文本中成对的字母("2-grams")的概率。可能的第一个字母显示在页面上,第二个字母显示在页面下:

例如,我们可以看到,"q "列是空白的(概率为零)除了 "u "行。现在我们不再一次生成一个字母的 "单词",而是一次生成两个字母,使用这些 "2-gram "概率。下面是一个结果的样本--其中恰好包括一些 "真实的词":

有了足够多的英语文本,我们不仅可以对单个字母或成对字母(2-grams)的概率进行相当好的估计,而且还可以对较长的字母运行进行估计。如果我们用逐渐变长的n-gram概率生成 "随机词",我们会发现它们逐渐变得 "更真实":

我们现在假设--像ChatGPT那样--我们是在处理整个单词,而不是字母。英语中大约有40,000个合理的常用词。通过查看大型英语文本语料库(比如几百万本书,总共有几千亿个单词),我们可以估算出每个单词的常用程度。利用这一点,我们可以开始生成 "句子",其中每个词都是独立随机抽取的,其出现的概率与语料库中的相同。下面是我们得到的一个样本:

从结果看,毫无意义。那么,我们如何才能做得更好呢?就像对待字母一样,我们可以考虑的不仅仅是单个词的概率,还有成对的或更长的词的n-grams的概率。在成对的情况下,以下是我们得到的5个例子,所有情况都是从 "cat "这个词开始的:

它正在变得稍微 "看起来很合理"。可以想象,如果我们能够使用足够长的n-grams,我们基本上会 "得到一个ChatGPT"。在这个意义上,我们会得到一些东西,可以生成具有 "正确的整篇论文概率 "的论文长度的单词序列。但问题是:从来没有足够的英语文本能够推导出这些概率。

在对网络的抓取中,可能有几千亿字;在已经数字化的书籍中,可能还有几千亿字。但是有了4万个常用词,即使是可能的2-grams的数量也已经是16亿了,可能的3-grams的数量是60万亿。所以我们没有办法从现有的文本中估计出所有这些的概率。而当我们达到20个字的 "文章片段 "时,可能性的数量比宇宙中的粒子数量还要多,所以从某种意义上说,它们永远不可能全部被写下来。

那么我们能做什么呢?最大的想法是建立一个模型,让我们估计序列出现的概率--尽管在所看的文本语料库中我们还从未明确见过这些序列。而ChatGPT的核心正是一个所谓的 "大型语言模型"(LLM),它的建立可以很好地估计这些概率。

3 什么是模型?

假设你想知道(就像伽利略在15世纪末所做的那样),从比萨塔的每一层落下的炮弹需要多长时间才能落地。你可以在每一种情况下测量它,并将结果制成一个表格。或者你可以做理论科学的精髓:建立一个模型,给出某种计算答案的程序,而不是仅仅测量和记住每个案例。

想象一下我们有数据(有点理想化),说明炮弹从不同楼层落下需要多长时间:

我们如何计算出炮弹从一个我们没有明确相关数据的楼层坠落需要多长时间?在这种特殊情况下,我们可以用已知的物理学定律来计算。但是,如果说我们所得到的只是数据,而我们不知道有什么基本定律在支配它,那么我们可以做一个数学上的猜测,比如我们应该用一条直线作为模型:

我们可以选择不同的直线。但这是平均来说最接近我们所得到的数据的一条。根据这条直线,我们可以估计出任何楼层的下降时间。

我们怎么知道要在这里尝试使用一条直线呢?在某种程度上,我们并不知道。这只是数学上简单的东西,而我们已经习惯了这样的事实:我们测量的很多数据都被数学上简单的东西很好地拟合。我们可以尝试一些数学上更复杂的东西--比如a+b x+cx2--在这种情况下可以更好:

不过,事情可能会出大错。比如这里是我们对a+b/x+c sin(x)所能做到的最好结果:

需要理解的是,从来没有一个 "无模型的模型"。你使用的任何模型都有一些特定的基础结构,同时有一组 "你可以转动的旋钮"(即你可以设置的参数)来适应你的数据。在ChatGPT的案例中,使用了很多这样的 "旋钮"--实际上有1750亿个。

令人瞩目的是,ChatGPT的基本结构足以使一个计算下一个单词概率的模型足够好,从而为我们提供合理的文章长度的文本。

推荐书单

《Java编程讲义》

《Java编程讲义》根据目前Java开发领域的实际需求,从初学者角度出发,详细讲解了Java技术的基础知识。全书共15章,包括Java开发入门,Java语言基础,Java控制结构,数组,面向对象编程,继承和多态,抽象类、接口和内部类,异常处理,Java常用类库,集合与泛型,Lambda表达式,输入-输出流,多线程,JDBC数据库技术,网络编程等内容。内容全面覆盖.1ava开发必备的基础知识点,结合生活化案例展开讲解,程序代码给出了详细的注释,能够使初学者轻松领会Java技术精髓,快速掌握Java开发技能。  《Java编程讲义》适合作为高等院校相关专业的教材及教学参考书,也适合作为Java开发入门者的自学用书,还可供开发人员查阅、参考。

《Java编程讲义》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Java编程讲义》在线选购,本书作者:荣锐锋,张晨光,殷晋,王向南,尹成,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13495830.html

精彩回顾

Java对比Python,谁才是编程王者?

10个强大的IntelliJ IDEA插件

Spring boot使用gRPC 的详细教程

使用JMH提升Java程序的性能

Java中的继承与多态

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

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

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

相关文章

ChatGPT 算是“颠覆式创新”吗?

与其说是单纯的技术突破或更新换代,不如说是技术与场景的完美结合造就了ChatGPT现象级的成功。 2018年,梁宁老师在得到分享了她在产品方面的思考,在《产品思维30讲》里提到了“颠覆式创新”概念。 她说颠覆式创新最重要的标准就是&#xff0c…

ChatGPT插件使用攻略,解锁互联网新体验

ChatGPT插件系统的功能如此强大,以及如何创建自己的插件。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 最近,OpenAI发布了ChatGPT的新功能:插件系统。ChatGPT现在可以进行功能扩展并执行新的任务&…

由文心一言发布会引发的思考,聊聊我未来的学习规划

文章目录 前言一. 文心一言的试用1.1 文心一言发布会1.2 文心一言图片生成功能试用1.3 文心一言文本功能试用1.4 文心一言代码功能试用1.5 试用总结 二. 我未来的学习规划2.1 向csdn的大佬请教2.2 关于AIGC的思考2.3 我未来的学习方向和计划 总结 前言 大家好,我是…

「法外狂徒」ChatGPT!30年老律师用它旁征博引,结果被骗得禁止执业

衡宇 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT,把从业30年的老律师给坑惨了! 老哥撰写案件文案的时候,尝鲜让ChatGPT帮忙准备材料。然而提交后,不管是法官、对方律师还是老哥自己,都溯源不到引用的判决文书。 结果就…

快看!ChatGPT的4个不为人知却非常实用的小功能

文 / 高扬(微信公众号:量子论) 今天重点介绍四个ChatGPT很实用的小功能。 一、停止生成 如果在ChatGPT输出内容的过程中,我们发现结果不是自己想要的,可以直接点击“Stop generating”按钮,这样它就会立即停…

借助 ChatGPT、Blender 和 3D 打印将创意变成实物

这次我想研究一下将某些想法实现到物理对象中是多么容易。 就像我对计算机说: “请给我做一个保龄球奖杯!” 过了一段时间,我的手上就握着奖杯了。 几周前,周六晚上,我躲在电脑前,躲避在家里聚会的青少年,因此在 ChatGPT 的帮助下,我开始编写一个简短的 Python + B…

chatgpt赋能python:Python编写动画:如何用Python打造流畅的动画效果

Python编写动画:如何用Python打造流畅的动画效果 Python作为一门功能强大的编程语言,在数据分析和科学计算领域得到广泛应用。但是,Python也可以用来编写动画和游戏等娱乐应用。本文将介绍如何使用Python编写动画,并提供一些技巧…

【aigc辅助绘画流程】blender+stableDiffusion+chatgpt辅助建立3D插画背景

首先还是先上效果图吧。 这是一张用stable diffusion生成的照片,我们最好去选用这种相对正透视的照片(特别是像我这种透视功底本来就不咋地的半桶水美术)。 通过该照片直接映射到场景立方体中(注意这里删掉了正对摄像机的面&…

在 Blender 代码创建中使用 GPT Chat AI,如何从零知识开始写代码

在这个实验中,我旨在探索 GPT 聊天 AI 在为 Blender 程序创建代码方面的潜力。目标是利用代码在 Blender 中创建几何体,并查看是否可以通过使用人工智能简化该过程。 我必须承认,我离熟练的程序员还很远,更接近新手。然而,这并没有阻止我在这个实验中尝试使用 GPT 聊天 AI…

Stack Overflow 正遭到 ChatGPT 的“暴击”!

编译 | 苏宓 出品 | CSDN(ID:CSDNnews) 这几个月,ChatGPT、GPT-4 等 AIGC 产品与大模型风头正盛,然而与之形成鲜明对比的是,老牌程序员问答社区如 Stack Overflow 的日子就没那么好过了。 Stack Overflow 流…

多元化增长引擎业务占比超四成,联想开启混动模式?

一句话概括联想集团的业绩:预料之内的整体下滑,超出预期的第二曲线。 上周五(2月17日),联想集团发布了2022到2023财年第三季度业绩。根据财报,联想集团实现营收152.67亿美元,同比下降24%&#…

文心一言背后,百度还是那个百度

对百度而言,文心一言不是一个结果,而仅仅是这家技术企业在过去多年投入的一个缩影和侧写。 作者|皮爷 出品|产业家 “第一枪”打响。 伴随着一身“工程师范”的李彦宏出现在台上,在市场备受期待的文心一言正式亮相。在发布会现场&#xff…

面向chatgpt编程——编写简单的数据录入工具

标题面向chatgpt编程——编写简单的数据录入工具 最近业务上有个需求,需要采集某些公司披露的年度报告中的信息,因为 pdf 解析工具的效果不太理想,因此需要人工查找录入到oracle数据库。为了提高效率,我借助chatgpt搭建了一个小型…

ChatDOC,文档版ChatGPT,可以上传文档并解析,与你的文档对话

引言 ChatDOC是一个基于ChatGPT的文件读取助手,可以 快速从文档中提取,定位和汇总信息 特点 阅读速度更快,学得更好。 – 上传研究论文、书籍、手册等!询问有关您的文件的任何信息,并在几秒钟内获得易于理解的答案一…

【RPA进阶】 高级数据操作

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介:UiPath在传统的RPA(Robotic…

ChatGPT会取代RPA?ta自己可不是这么说的!

先说一个AI热知识:ChatGPT 的推出在科技界引发了一场狂潮。 聊天机器人ChatGPT以及其背后的AI大模型GPT,在2023年引爆全球。GPT 全称为 Generative Pre-trained Transformer,是一种使用人工神经网络的深度学习技术,能够使机器像人…

Chatgpt超级写手+RPA采集工具,解决内容创作问题的自动化神器

你是否曾经为了寻找优质内容而感到束手无策?是否曾经因为时间成本高而感到头疼?是否曾经因为原创难度大而心生畏惧? 作为一名内容创作者,你一定会深有体会。如何在这个信息爆炸的时代中找到最优质的内容,是每个内容创作…

10几个国内AI大模型,让你的工作学习效率翻倍!

文章目录 前言1.道和顺ChatIC2.星期五3.文心一言4.讯飞星火认知大模型5.通义千问6.商汤-日日新7.Moss8.ChatGLM9. 360智脑写在最后 ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入…

刚刚!商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此...

金磊 发自 凹非寺量子位 | 公众号 QbitAI 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”&am…

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此【转载】

国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”,不仅体现了它是商汤自家“商字…