深入探究ChatGPT的工作原理

 更新时间:2023年06月09日 09:54:11   作者:王大冶  
这篇文章主要探讨了ChatGPT的工作原理,ChatGPT是基于OpenAI开发的GPT-4架构的大型语言模型,文中图文介绍的非常详细,感兴趣的同学跟着小编一起来学习吧

这篇文章主要探讨了ChatGPT的工作原理。ChatGPT是基于OpenAI开发的GPT-4架构的大型语言模型。首先,文章介绍了GPT的基本概念,即生成预测性网络模型。GPT模型利用大量的文本数据进行训练,从而学会在各种情境中生成连贯的文本。

接着,文章详细阐述了训练过程,分为预训练微调两个阶段。在预训练阶段,模型学习理解文本数据,包括词汇、语法、事实等;在微调阶段,模型使用具有限制性任务的数据集来调整,以获得更准确的输出。作者还提到了训练数据的来源,强调了在大量网络文本数据中获取知识的重要性。

在解释输出生成时,文章提到了一个关键技术:集束搜索(Beam Search)。这是一种启发式搜索策略,用于选择最优文本序列。此外,作者强调了解决生成内容问题的策略,包括设置过滤器和调整温度参数。

最后,文章讨论了ChatGPT的局限性,例如处理输入数据时可能会产生偏见,或无法回答一些问题。尽管如此,作者指出ChatGPT是一个强大的工具,能够在各种任务中提供有价值的帮助。

像ChatGPT这样的大型语言模型实际上是如何工作的?嗯,它们既非常简单又极其复杂。

你可以将模型视为根据某些输入计算输出概率的工具。在语言模型中,这意味着给定一系列单词,它们会计算出序列中下一个单词的概率,就像高级自动完成一样。

要理解这些概率的来源,我们需要谈论一些叫做神经网络的东西。这是一个类似网络的结构,数字被输入到一侧,概率被输出到另一侧。它们比你想象的要简单。

想象一下,我们想要训练一台计算机来解决在3x3像素显示器上识别符号的简单问题。我们需要像这样的神经网络:

  • 一个输入层
  • 两个隐藏层
  • 一个输出层。

我们的输入层由9个称为神经元的节点组成,每个像素一个。每个神经元将保存从1(白色)到-1(黑色)的数字。我们的输出层由4个神经元组成,每个神经元代表可能的符号之一。它们的值最终将是0到1之间的概率。

在这些之间,我们有一些神经元的排列,称为**“隐藏”层**。对于我们简单的用例,我们只需要两个。每个神经元都通过一个权重与相邻层中的神经元相连,该权重的值可以在-1和1之间。

当一个值从输入神经元传递到下一层时,它会乘以权重。然后,该神经元简单地将其接收到的所有值相加,将该值压缩在-1和1之间,并将其传递给下一层中的每个神经元。

最后一个隐藏层中的神经元执行相同的操作,但将值压缩在0和1之间,并将其传递到输出层。输出层中的每个神经元都保存一个概率,最高的数字是最可能的结果。

当我们训练这个网络时,我们向它提供一个我们知道答案的图像,并计算答案与网络计算的概率之间的差异。然后我们调整权重以接近预期结果。但是我们如何知道如何调整权重呢?

我们使用称为梯度下降反向传播的巧妙数学技术来确定每个权重的哪个值会给我们最低的误差。我们不断重复这个过程,直到我们对模型的准确性感到满意。

这被称为前馈神经网络 - 但这种简单的结构不足以解决自然语言处理的问题。相反,LLM倾向于使用一种称为Transformer的结构,它具有一些关键概念,可以释放出很多潜力。

首先,让我们谈谈单词。我们可以将单词分解为 token ,这些 token 可以是单词、子单词、字符或符号,而不是将每个单词作为输入。请注意,它们甚至包括空格。

就像我们的模型中将像素值表示为0到1之间的数字一样,这些token也需要表示为数字。我们可以为每个标记分配一个唯一的数字并称之为一天,但还有另一种表示它们的方式,可以添加更多上下文。

我们可以将每个 token 存储在一个多维向量中,指示它与其他标记的关系。为简单起见,想象一下在二维平面上绘制单词位置。我们希望具有相似含义的单词彼此靠近。这被称为 embedding 嵌入

embedding 有助于创建相似单词之间的关系,但它们也捕捉类比。例如,单词“dog”和“puppy”之间的距离应该与“cat”和“kitten”之间的距离相同。我们还可以为整个句子创建 embedding 。

transformer 的第一部分是将我们的输入单词编码为这些 embedding。然后将这些嵌入馈送到下一个过程,称为 attention ,它为 embedding 添加了更多的上下文。attention 在自然语言处理中非常重要。

Embedding 难以捕捉具有多重含义的单词。考虑 bank 这个词的两个含义。人类根据句子的上下文推断出正确的含义。Money 和 River 在每个句子中都是与 bank相关的重要上下文。

attention 的过程会回顾整个句子,寻找提供词汇背景的单词。然后重新调整 embedding 权重,使得单词“river”或“money”在语义上更接近于“word bank”。

这个 attention 过程会多次发生,以捕捉句子在多个维度上的上下文。在所有这些过程之后,上下文 embedding 最终被传递到神经网络中,就像我们之前提到的简单神经网络一样,产生概率。

这是一个大大简化了的LLM(像ChatGPT这样的语言模型)工作原理的版本。为了简洁起见,本文省略或略过了很多内容。

编辑中可能存在的bug没法实时知道,事后为了解决这些bug,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

以上就是深入探究ChatGPT的工作原理的详细内容,更多关于ChatGPT工作原理的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Token的身份验证之JWT基础教程

    基于Token的身份验证之JWT基础教程

    JWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。下面这篇文章主要给大家介绍了关于基于Token的身份验证之JWT的基础相关资料,文中通过示例代码的非常详细,需要的朋友可以参考下
    2018-09-09
  • Atlassian系列产品及插件激活方法[JIRA8.19.0+]

    Atlassian系列产品及插件激活方法[JIRA8.19.0+]

    Atlassian家有很多产品,都真的非常好用。比如公司使用JIRA做项目管理,使用Confluence做文档、知识管理等(我个人用它来做笔记)。本文给大家分享Atlassian系列产品及插件激活方法[JIRA8.19.0+],感兴趣的朋友参考下吧
    2021-12-12
  • 深入探究ChatGPT的工作原理

    深入探究ChatGPT的工作原理

    这篇文章主要探讨了ChatGPT的工作原理,ChatGPT是基于OpenAI开发的GPT-4架构的大型语言模型,文中图文介绍的非常详细,感兴趣的同学跟着小编一起来学习吧
    2023-06-06
  • ChatGPT帮我看下这段代码有什么问题

    ChatGPT帮我看下这段代码有什么问题

    今天一个很简单的功能,触发了一个 BUG,处理后我想起了最近爆火的 ChatGPT,于是我尝试测试 ChatGPT 能否发现这个 BUG,这篇文章会先介绍功能代码,然后手动分析 BUG 原因,需要的朋友可以参考下
    2023-02-02
  • delphi使用Chilkat 组件和库从SFTP下载文件的方法

    delphi使用Chilkat 组件和库从SFTP下载文件的方法

    这篇文章主要介绍了delphi使用Chilkat 组件和库从SFTP下载文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 网址(URL)支持的最大长度是多少?最大支持多少个字符?

    网址(URL)支持的最大长度是多少?最大支持多少个字符?

    这篇文章主要介绍了网址(URL)支持的最大长度是多少?最大支持多少个字符?本文总结了IIS、apache服务器及浏览器软件Internet Explorer、Firefox、Opera、chrome等主流的浏览器软件支持情况,需要的朋友可以参考下
    2015-07-07
  • 好玩的vbs微信小程序之语言播报功能

    好玩的vbs微信小程序之语言播报功能

    这篇文章主要介绍了好玩的vbs微信小程序之语言播报功能,非常好玩有趣,需要的朋友跟随小编一起看看吧
    2019-09-09
  • 5个ChatGPT功能帮助你提升日常编码效率

    5个ChatGPT功能帮助你提升日常编码效率

    ChatGPT 作为最快完成亿活用户的应用,最近真的是火出天际了。今天分享5个 ChatGPT 功能,来提升我们的日常工作以及如何使用它提高代码质量
    2023-02-02
  • 如何用Idea或者webstorm跑一个Vue项目(步骤详解)

    如何用Idea或者webstorm跑一个Vue项目(步骤详解)

    这篇文章主要介绍了如何用Idea或者webstorm跑一个Vue项目,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • vscode中使用Autoprefixer3.0无效的解决方法

    vscode中使用Autoprefixer3.0无效的解决方法

    这篇文章主要介绍了vscode中使用Autoprefixer3.0无效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论