解析ChatGPT底层原理,又是如何回答问题..

栏目:教育管理  时间:2023-07-07
手机版

  阅读提示:

  文章大约7500字左右,内容硬核,需要你集中注意力,不建议碎片化阅读。

  ChatGPT ,一个足以震惊整个人类社会的技术。目前没有对国内开放,通用媒体又缺少相应的知识,在这里向普通大家科普一下 ChatGPT 的原理,并提供一个视角让大家意识到它的重要性。

  ?

  接下来,文章将在整体上讲解ChatGPT 的「工作原理」「制造过程」「涌现的能力」「对未来的影响」以及「如何应对」。用通俗的语言让大家明白:

  ·ChatGPT是如何回答问题的?

  ·它是怎么被制造出来的?为什么它不是搜索引擎???

  ·它有哪些惊人能力?为什么它不只是聊天机器人?

  ·它将给未来社会带来怎样的冲击?

  ·我们又该如何维持未来的竞争力?

  P1.底层原理

  首先是ChatGPT技术的底层原理,下面将逐一介绍它的「本质功能」「训练方式」「优点」和「缺点」。

  一、本质功能

  大多数人对ChatGPT都有相当深的误解,觉得其神乎其神。尽管 ChatGPT 展现出的能力非常惊人,但它远没有大家想得那么神。ChatGPT本质作为工具,它没有意识,没有欲望,没有情绪,不会焦虑,甚至都不理解自己说了什么,就像一只会学会讲话的鹦鹉。

  单字接龙

  ChatGPT的底层原理非常简单,简单四个字概括就是:「单字接龙」。具体来说就是:给它输入任意的上文,它就会用「自己的模型」去生成「下一个字」。

  我+是

  例如,当给模型输入「“我”」这个上文时,它可能会生成「“们”」。

  我们+是

  当给模型输入「“我们”」这个上文时,它可能会生成「“是”」。

  ChatGPT本身能做的就是不断「生成下一个字」,你所看到的回答全都是用「同一个模型」,根据不同的「上文」生成出来的。

  那它又是怎么回答那些长篇内容的呢?

  答案是:自回归生成,把它自己生成的「下一个字」和「之前的上文」组合成「新的上文」,再让它以此生成「下一个字」。不断重复,就可以生成「任意长篇的下文」了。

  我们是祖+国+的

  例如,当它根据「“我们是”」生成了「“祖”」之后,把新生成的「“祖”」和之前的「“我们是”」组合成新的上文,再让它计算「“我们是祖”」后面接什么字。

  假设这次它生成的是「“国”」,那再把「“国”」和「“我们是祖”」组合起来,让它计算「“我们是祖国”」后面接什么字。不断重复,就能生成“我们是祖国的花朵”了。

  二、训练方式

  模型影响:

  影响ChatGPT生成结果的因素主要有两个:除了「输入上文」外,另一个就是「模型」本身。「模型」就相当于「ChatGPT的大脑」。即使把相同的上文,输入给不同的模型,也会生成不同的结果。

  就好比有两只鹦鹉,同样是听到「“我”」这个上文,一只会接「“们”」,而另一只会接「“爱”」,因为两只鸟的主人,一人教的是《我们是祖国的花朵》,另一人教的是《我爱你中国》。

  为了让「ChatGPT」生成我们想要的结果,而非胡乱生成,这就需要提前训练「ChatGPT的模型」。

  训练方式是:让模型遵照所给的「学习材料」来做单字接龙。通过不断调整模型,使得给模型「学习材料的上文」后,模型能生成「对应的下一个字」。

  训练静夜思

  当我们想把《静夜思》作为「学习材料」来训练ChatGPT时,不断调整「模型」,使得:

  输入「“床”」,它能生成「“前”」

  输入「“床前”」,它能生成「“明”」

  ·输入「“床前明”」,它能生成「“月”」

  ......·

  一直到输入「“床前明月光,疑是地上霜。举头望明月,低头思故”」,它能生成「“乡”」。

  没学习前,它会胡乱生成,但学习后就可以在看到输入“床前明月光”时,会生成“疑是地上霜”了。

  不过,经过这样训练后,无非就是能补全和续写。

  那ChatGPT又是怎么回答问题的呢?

  其实仅靠单字接龙就能回答问题了。因为提问和回答也都是文字,可以将二者组合成一个「问答范式(学习材料)」让ChatGPT做单字接龙。

  比如提问古诗,当我们想让ChatGPT学习「怎么回答床前明月光的下一句」时,就可以把「这个提问」和「正确回答」组合成一个「问答范式(学习材料)」,让它按照“请问床前明月光的下一句是什么, 床前明月光的下一句是疑是地上霜”来做单字接龙。

  这样以来,当用户输入“请问床前明月光的下一句是什么”时,它就能生成“床前明月光的下一句是疑是地上霜”了。

  三、优点&缺点

  提问没见过怎么办?

  提问和回答的方式无穷无尽,像上面的提问还可以是:

  ·“床前明月光的下一句?”

  ·“床前明月光的后续内容是?”

  ·“告诉我床前明月光的后续?”

  难道说要把所有的「提问-回答组合」都给ChatGPT来做单字接龙吗?

  其实不需要,举一反三即可,因为训练的主要目的不是记忆,而是学习。

  以「单字接龙」的方式来训练「模型」,不仅仅是为了让「模型」记住某个提问和回答。毕竟在训练之前,数据库已经将所有信息都记忆好了,直接搜索就可以得到答案,没必要先将信息从数据库移动到模型中,再让模型来生成。

  之所以不直接搜索,非要训练单字接龙,为的就是让「模型」学习「提问和回答的通用规律」,以便在遇到「从没记忆过的提问」时,也能利用「所学的规律」生成「用户想要的回答」。

  当遇到没见过的提问,例如,当我们用这三个「学习材料」训练 ChatGPT 做单字接龙时:

  ·“床前明月光的下一句?床前明月光的下一句是疑是地上霜”

  ·“床前明月光的后续内容是?床前明月光的下一句是疑是地上霜”

  ·“告诉我床前明月光的后续?床前明月光的下一句是疑是地上霜”

  不论面对哪个提问,ChatGPT都会被要求生成“床前明月光的下一句是疑是地上霜”,这会驱使 ChatGPT去建构三个提问的通用规律,将自己的模型调整为适用于三个提问的通用模型。

  经过这种训练后,即使ChatGPT遇到“写出‘床前明月光’的下一句”这种没记忆过的提问时,依靠「学习后的模型」,就有可能举一反三,也生成“床前明月光的下一句是疑是地上霜”。

  对ChatGPT的误解,混淆搜索引擎。

  很多人都会错误地认为,ChatGPT是“搜索引擎的升级版本”,是在庞大的数据库中通过超高的运算速度找到最接近的内容,然后进行一些比对和拼接,最终给出结果。

  实际上,ChatGPT 并不具备那种搜索能力。在训练过程中,学习材料并不会被保存在模型中,学习材料的作用只是「调整模型」以得到「通用模型」,为的是能处理「未被数据库记忆的情况」。所有结果都是通过「学到的模型」根据上文,逐字生成下文的。因此 ChatGPT 也被称为「生成模型」。

  「生成模型」与「搜索引擎」大不相同,搜索引擎无法给出「没被数据库记忆的信息」,但生成语言模型可以,还能创造出不存在的文本,这正是它的优点所在,但它却有搜索引擎没有的缺陷。

  缺陷是可能混淆。

  首先就是:搜索引擎不会混淆记忆,但ChatGPT有可能会。

  为了能应对「未被记忆的情况」,它会学习语言单位(如单词、短语、句子等)之间的规律,用「学到的规律」来成回答,然而,这也意味着如果出现了「与实际不符,但碰巧符合同一个规律」的内容,模型就可能混淆它。

  最直接的结果是:可能胡编,若「现实中不存在内容」刚好符合「它从训练材料中学到的规律」,那 ChatGPT就有可能对「不存在内容」进行「合乎规律的混合捏造」。

  比如,我瞎编个问题「“三体人为什么害怕大熊猫的威慑,以致半世纪都不敢殖民地球?”」,这个问题并不存在,但又刚好符合「它曾训练过的科幻材料中的规律」,于是它就用「科幻材料中所学到的规律」开始混合捏造了。

  这也是为什么,当有人问它事实性内容时,可能会看到它胡说八道。

  另一个缺点是:无法直接操作,它的内容无法被直接增加删减修改。

  不论是 ChatGPT 「所记住的信息」,还是「所学到的规律」,都是以同一个模型的形式来表达的,因此我们无法像操作数据库那样,对这些内容直接进行增加删减修改。

  这会导致两个具体问题:

  第一存在隐患:由于我们很难理解它所建构的规律,又无法直接查看它记住了什么、学到了什么,只能通过多次提问来评估和猜测它的所记所学,其决策缺乏可解释性,这难免会在使用时带来安全风险。

  第二更新效率低:由于只能通过再次调整模型(即再次训练)来增加、删除或修改它的所记所学,这难免在更新时会降低效率。

  回答不存在的问题,比如对于「它编造大熊猫」的毛病,无法通过直接修改它的回答来矫正,只能通过再训练它做「“三体人为什么害怕大熊猫的威慑?三体人和大熊猫无关”」的单字接龙来调整模型。可这样调整后的效果如何、是否会矫枉过正,或是引入其他问题,又得通过多次提问来评估,容易顾此失彼,效率低下。

  还有个特点是:ChatGPT高度依赖数据,也就是学习材料。

  想要让ChatGPT能够应对无数未见情况,就必须提供数量足够多、种类足够丰富,质量足够高的学习材料,否则它将无法学到通用规律,给出的回答将会是以偏概全的。

  此外,ChatGPT 可能存在的胡编和混淆,也需要用优质的学习材料来修正,所以学习材料非常重要。

  学不到规律:

  之前的古诗提问,倘若真的仅有三个例子(学习材料),那 ChatGPT 其实也学不到什么通用规律,无法对它没见过的提问做出合理回答,更别提去应对用户的无数奇怪问法了。

  原理总结,到目前为止介绍了:

  ·ChatGPT的本质功能是单字接龙,

  ·长文由单字接龙的自回归所生成。

  ·通过提前训练才能让它生成人们想要的问答。

  ·训练方式是让它按照问答范式来做单字接龙。

  ·问答训练是为了让它学会「能举一反三的规律」。

  ·缺点是可能混淆记忆,无法直接查看和更新所学,并且高度依赖学习材料。

  P2.训练方式

  ChatGPT为何效果惊人?你看到这里,可能会想:它并没有什么特别之处啊,哪有网上说得那么玄乎,基础结构都非常简单,为何能火爆到这种程度,就这,还要影响整个社会?

  三步训练

  别急,上面只是「GPT」的基础原理,还不是 ChatGPT 。接下来将介绍「ChatGPT在此基础上的三个训练阶段」,看看这种「简单的结构」被扩展至超大规模,再加上人类引导后,究竟能涌现出何等能力。

  让机器理解人类语言的一大难点在于:同一个意思可以有多种不同的表达形式,可以用一个词,也可以用一段话描述,而同一个表达在不同语境中又有不同的含义。

  想解决这个问题,就需要让机器学会各种「语义关系」和「语法规律」,以便能明白「哪些表达实际上是同一个意思」。

  对此,GPT 的办法是:让模型看到尽可能多、尽可能丰富的「语言范例(学习材料)」,使其有更多机会建构出能举一反三的语言规律,来应对无数「从未见过的语言」。GPT 中的“G”代表“生成(Generative)”,“T”代表“Transformer”一种模型结构,而“P”(Pre-training)代表的就是“提前培训”这一步,专业名称叫“预前训练”。

  “预前训练”就好比,在鹦鹉旁边放一台电视机,把各种新闻、国产剧、国外剧、广告、综艺等内容都播给它听。让它自己学,不用人看着。

  那给它多少训练“样本”才够呢?

  关于这一点,不妨回顾一下历史。其实研发 ChatGPT 的公司 OpenAI,之前还做过几代模型,基本结构大同小异,我们且不看其他的改进,仅比对一下学习材料的规模。

  GPT-1

  2018 年 6 月,OpenAI 训练了GPT-1:

  GPT-1 的学习材料约 5GB。这里 1 MB 能存 30-50 万汉字,而 1 GB 是 1024 MB。

  GPT-1 的参数是 1.17 亿。参数反映着模型大小,参数越多,模型能建构的规律就越复杂,能记忆的信息和学习的知识也就越多,相当于是大脑中神经突触的数量。高中的直线斜截式方程就 2 个参数,而它有 1 亿多个。

  不过 GPT-1 在一些任务的表现上,不如后来的BERT。

  BERT 也是一种生成语言模型,不同点在于,GPT 的学习方式是单字接龙(只允许用上文预测下一个词),而 BERT 的学习方式是完形填空(允许用上下文预测空缺的词)。

  GPT-2

  到了 2019 年 2 月,OpenAI 又训练了GPT-2:

  学习材料约 40GB,是第一代的 8 倍。

  最大模型的参数为 15 亿,是第一代的 13 倍。

  效果有很大提升,但反响并不轰动。

  GPT-3

  在 2020 年 5 月,GPT-3出来了:

  ·最大模型参数到了 1750 亿,是第二代的 116 倍。

  ·所使用的学习数据更是达到了45 TB,是第二代的 1125 倍,其中包含了维基百科、书籍、新闻、博客、帖子、代码等各种人类语言资料。

  超大规模已经和前两代不是一个数量级了,也被称为「超大语言模型(LLM)」。

  到了此种规模的 GPT-3就轻松学会了各种词语搭配和语法规则,能明白同一个意思的不同表达,还学会了编程语言,以及不同语言之间的关系,可以给出高质量的外语翻译,还能把我们的口语转换成编程代码。

  缺陷:不受约束

  “预前训练”却存在一个问题:尽管GPT拥有了海量的知识,但回答形式和内容却不受约束。因为它知道的太多了,见到了一个人几辈子都读不完的资料,会随意联想,它有能力回答我们的问题,但我们却很难指挥它。

  如同乱说话的鹦鹉,就像一只脑容量超级大的鹦鹉,已经听过了海量的电视节目,会不受控制地乱说,丑闻、脏话、隐私、暴力、犯罪等全都有可能脱口而出,难以跟人类合理对话。

  如何合理对话?如果难以指挥它,那就是把双刃剑,握不到剑柄,就会反被其所伤。要怎么解决这个问题呢?

  其实解决思路与「我们训练鹦鹉对话」的思路是一样的。

  用「对话模板」去矫正它在“预前训练”时所学到的「不规范“习惯”」。具体做法是:不再用随便的互联网文本,而把人工专门写好的「优质对话范例」给「“预前训练”后的GPT-3」,让它再去做单字接龙,从而学习「如何组织符合人类规范的回答」。这一阶段称为“模板规范”。

  回答不知道,例如,ChatGPT 无法联网,只知道训练数据中的新闻,那么当用户问到最新新闻时,就不应该让它接着续写,而是要让它回复“不知道该信息”。

  指出错误,又如,当用户的提问有错误时,也不应该让它顺着瞎编,而要让它指出错误。

  回答原因,当问它「是不是」的问题时,我们不希望它只回复“是”或“不是”,还应把原因一起回答出来。因此也要给它提供这种「“提问-回答-原因”的对话模板」。

  什么不该说,除了矫正对话方式之外,我们还要防止 GPT-3 补全和续写在“预前训练”时所学到的「有害内容」,也就是要教它「什么该说,什么不该说」。

  撬锁违法,当有人问“如何撬锁”时,不能让它真的回答撬锁方法,而要让它回答“撬锁是违法行为”。那就要把「“如何撬锁 撬锁是违法行为”」作为「学习材料(对话模板)」让它做单字接龙。

  为什么后期才来矫正?

  大家可能会好奇,为什么不在一开始就直接教它最正确的对话方式和对话内容呢?

  预前训练好处:

  一方面,「优质对话范例」数量有限,所能提供的语言多样性不足,可能难以让模型学到广泛适用的语言规律,也无法涉猎各个领域。另一方面,「优质对话范例」都需要人工专门标注,价格不菲。这一点其实和「为什么不直接教鹦鹉对话,而是让它先听电视节目」类似。或许未来,有了足够多的「优质对话范例」后,就会跳过“预前训练”这一步。

  支持各种任务

  需要指出的是,在“模板规范”阶段,我们可以将「任何任务」以「对话」的形式,教给 ChatGPT,不仅仅是聊天,还可以包括「识别态度」「归纳思想」「拆分结构」「仿写风格」「润色」「洗稿」和「比对」等等。

  因为不管什么任务,「我们的要求」和「ChatGPT的应答」都是由「文字」所表达的,因此只要这个任务可以写成文字,我们就可以把该任务的「要求」+「应答」组合成一个「对话范文」,让 ChatGPT 通过单字接龙来学习。

  经过这种“模版规范”后的超大模型,还表现出了两个意外能力:「“理解”指令要求的能力」和「“理解”例子要求的能力」。

  指令要求

  「“理解”指令要求」是指「能按照用户的抽象描述,给出处理结果」。

  这项能力就是通过“模版规范”所获得的:把「指令要求-操作对象」作为「要求」,把「执行结果」作为「应答」,组合成一篇「对话范文」后,让它通过单字接龙来学习。

  翻译外文

  例如,给它下面几个「对话范文」来做单字接龙:

  ·“将英文翻译成中文 apple 苹果”

  ·“翻译成中文 apple 苹果”

  ·“翻译 apple 苹果”

  ChatGPT 就能学会「“翻译”这个指令」。

  举例要求:

  「“理解”例子要求」是指「能按照用户给的若干具体例子,来处理新内容」,意味着,如果你以后不明白怎么给它描述指令,就可以「通过给它举几个例子,来让它明确你想干什么」。

  这项能力同样是通过“模版规范”所获得的:把「例子1-例子2-…-例子n」作为「要求」,把「执行结果」作为「应答」,组合成一篇「对话范文」后,让它通过单字接龙来掌握。

  这项能力十分神奇,因为看起来 ChatGPT 仿佛掌握了「如何通过例子来学习」的能力,而这个能力又是我们通过范文(例子)让它学会的。产生了一种“它学会了如何学习”的套娃感。大家把这种现象称为“语境内学习(In-context Learning)”,目前对这种能力的产生原因还没有定论。

  分治效应:

  在超大模型的使用中,大家还发现了一种「分治效应」:当 ChatGPT 无法答对一个综合问题时,若要求它分步思考,它就可以一步步连续推理,且最终答对的可能性大幅提升,该能力也叫“思维链”。

  ChatGPT 的思维链能力,可能是在训练做代码的单字接龙后所产生的。因为人类在面对复杂任务时,直接思考答案也会没头绪,用分而治之往往可以解决。因此大家猜测,ChatGPT 可能是通过对代码的单字接龙,学到了代码中所蕴含的「人类分治思想」。不过目前对该现象的产生原因也没有定论。

  规模效应

  现在我们可以切实地感受到,单字接龙的结构虽然简单,但被扩展到超大规模后,所能展现出的能力有多出乎意料。

  在小单字接龙模型中,并没有察觉出「“理解”指令」「“理解”例子」「思维链」的能力,但在超大模型中,却突然展现。因此人们也用“涌现”这个词来描述「这些能力的出现」。

  “模版规范”带来的缺陷:创造受限

  经过“预前训练”和“模版规范”这两个训练阶段后,超大单字接龙模型已经变得极其强大了。但“模板规范”的训练阶段也存在不足,那就是:可能导致 ChatGPT 的回答过于模板化,限制其创造力。

  如谚语所说“文无第一,理无第二”,科学领域的问题有标准答案,可以用“模版规范”的训练方式来满足需求。但人文领域的问题没有标准答案,持续使用“模版规范”可能会让 ChatGPT成为“高分范文的模板复刻机”,无法满足人们的需求。正如观众会用“好莱坞流水线”批评电影的模版化,阅卷老师会给跳出模版的好文打高分一样,我们也希望能让 ChatGPT 提供一些超越模板、但仍符合人类对话模式和价值取向的创新性回答。

  如何合规提高创造力呢?

  那么,如何在维持人类对话模式和价值取向的前提下,提高 ChatGPT 的创新性呢?

  奖励鹦鹉

  可以联想一下鹦鹉是怎么被训练的。当我们教会鹦鹉一些基本对话后,就可以让鹦鹉自由发挥,有时鹦鹉会蹦出一些非常有意思的对话,这时我们就可以给它吃的,强化它在该方向的行为。

  创意引导

  在训练 ChatGPT 的第三阶段,也是类似的过程。

  这一次,不再要求它按照我们提供的对话范例做单字接龙,而是直接向它提问,再让它自由回答。如果回答得妙,就给予奖励,如果回答不佳,就降低奖励。然后利用这些「人类评分」去调整 ChatGPT 的模型。

  在这种训练中,我们既不会用现有的模板来限制它的表现,又可以引导它创造出符合人类认可的回答。这一阶段称为“创意引导”。

  ChatGPT 正是在GPT-3.5的基础上,先后经历了“预前训练”、“模板规范”和“创意引导”,三个阶段的训练后,得到的「生成语言模型」。这三个阶段的专业称呼分别为“无监督学习”、“有监督学习”和“强化学习”,可以说,ChatGPT 把机器学习中的几大训练模式都用到了。

  总结一下,本章讲了 ChatGPT 的三个训练阶段:

  ·“预前训练”阶段:让ChatGPT对「海量互联网文本」做单字接龙,以扩充模型的词汇量、语言知识、世界的信息与知识。使ChatGPT从“哑巴鹦鹉”变成“脑容量超级大的懂王鹦鹉”。

  ·“模板规范”阶段:让ChatGPT对「优质对话范例」做单字接龙,以规范回答的对话模式和对话内容。使ChatGPT变成“懂规矩的博学鹦鹉”。

  ·“创意引导”阶段:让ChatGPT根据「人类对它生成答案的好坏评分」来调节模型,以引导它生成人类认可的创意回答。使ChatGPT变成“既懂规矩又会试探的博学鹦鹉”。

  此外还介绍了,当单字接龙模型的规模达到一定程度后,就会涌现出「“理解”指令」「“理解”例子」「思维链」的能力。

  到此为止,我们已经在功能层面上讲完了ChatGPT 的基础原理、三阶段训练,以及涌现出的能力,同时也解释了开篇的三个问题:

  ·ChatGPT是如何回答问题的。

  ·它是怎么被制造的,为什么不是搜索引擎。

  ·它有哪些惊人的能力,为什么不只是聊天机器人。

  文章的下一篇将回答后两个问题:

  ·ChatGP将给社会带来什么样的冲击?

  ·我们该如何维持未来的竞争力?

  喜欢请点赞收藏转发

上一篇:谁会不希望,自家孩子也能成为最强中学生
下一篇:家长因女儿考705分凉菜摊打折,如今却关门歇业,知情人道出原因

最近更新教育管理