这就是ChatGPT!

IT知识
326
0
0
2024-01-07
标签   ChatGPT

思维导图

ChatGPT在做什么

一次添加一个词

首先要解释的是,ChatGPT始终试图做的基本上是产生当前文本的“合理延续”,所谓“合理延续”是指“我们可以预期在看到人们在数十亿个网页等地写的内容后,他们可能会写什么”。

当ChatGPT像写一篇文章这样的事情时,它实际上只是一遍一遍地问“在给定的文本之前,下一个词应该是什么?”,每次都添加一个词。

有人可能认为它应该是“排名最高”的单词(即赋予最高“概率”的单词)。但是在这里有一点巫术开始蔓延。因为由于某种原因,可能有一天我们会以科学的方式理解,如果我们总是选择排名最高的单词,我们通常会得到一篇非常“平淡”的文章

但是,如果有时(随机地)选择排名较低的单词,我们会得到一篇“更有趣”的文章。

有一个特定的所谓“温度”参数,它决定了使用排名较低的单词的频率,对于文章生成来说,0.8的“温度”似乎效果最佳。(值得强调的是,这里没有使用任何“理论”,只是在实践中已经发现有效。例如,“温度”的概念存在,是因为在统计物理学中熟悉的指数分布。

  1. 提取底层的“语言模型”神经网络

  1. 请求模型说应该跟随在后面的前5个按概率排序的词语:这将结果转换为一个显式格式化的“数据集”

概率从何而来

我们可以对维基百科上关于“猫”(cats)的文章进行字母统计

我们也可以对“狗”(dogs)做同样的统计

如果我们对英文文本进行足够大的抽样,我们最终可以得到至少相当一致的结果:字符频率

如果我们只根据这些概率生成一串字母,我们会得到以下样本:

我们可以将这个分成"单词",通过添加空格来代替某些字母的概率:

通过强制“单词长度”的分布与英语中的分布一致,我们可以做得更好一点:

我们需要做的不仅仅是随机选择每个字母。例如,我们知道如果有个“q”,下一个字母基本上必须是“u”。这是字母自己的概率的绘图:

这是英语文本中成对字母(“二元组”)概率的绘图。可能的第一个字母显示在每行的顶部,第二个字母显示在每列的左侧:

我们看到,例如,“q”列是空白(零概率),除了“u”行

我们的“词汇”一个字母一个字母地生成,我们以每次查看两个字母的方式使用这些“2-gram”概率。以下是结果的一个样本,它恰好包含一些“实际单词”:

通过足够多的英文文本,我们不仅可以很好地估计单个字母和两个字母(2-gram)的概率,还可以估计更长的字母序列的概率。如果我们使用越来越长的-gram概率生成“随机单词”,我们会发现它们会变得越来越“真实”:

就像ChatGPT一样——我们处理的是完整的单词,而不是字母。英语中大约有4万个常用词。通过查看大量的英文文本语料库(比如几百亿个单词的几百万本书),我们可以估计每个词汇的常见程度。利用这个信息,我们可以开始生成“句子”,其中每个单词都是以与其在语料库中出现的概率相同的概率独立随机选择的。

重要的想法是建立一个模型,使我们能够估计序列出现的概率,即使我们从未在我们查看的文本语料库中明确看到过这些序列。而ChatGPT的核心正是一个被称为“大型语言模型”(LLM)的模型,它被构建来很好地估计这些概率。

什么是模型

你使用的任何模型都具有特定的基本结构,然后有一组“可以调节的旋钮”(即可设置的参数)来拟合你的数据。在 ChatGPT 的情况下,使用了大量这样的“旋钮”——实际上有 1750 亿个。

神经网络

关键词

描述

人脑模仿

通过多个处理层进行输入图像的分析和分类

权重调整

学习从输入到输出的映射,并进行合理的泛化或插值

神经网络

ChatGPT由数十亿个简单元素组成

神经网是在1940年代发明的,与今天使用的形式非常接近,可以被看作是大脑工作方式的简化理念。人类大脑有大约1000亿个神经元(神经细胞),每个神经元可以每秒产生一次电信号。这些神经元以复杂的网络连接在一起,每个神经元都有像树枝一样的分支,允许它向成千上万的其他神经元传递电信号。

当我们“看到一幅图像”时,光子从图像上方向我们眼睛后部的光感受器细胞上落下,这些细胞会在神经元中产生电信号。像这样神经网络的“数学化”版本。

  1. 第一层是图像输入,一个大小为1x28x28的数组;
  2. 第二层是卷积层,一组数组;
  3. 第三层是斜坡层,一组数组;
  4. 第四层是池化层,一组数组;
  5. 第五层是卷积层,一组数组;
  6. 第六层是斜坡层,一组数组;
  7. 第七层是池化层,一组数组;
  8. 第八层是展开层,一个向量;
  9. 第九层是线性层,一个向量;
  10. 第十层是斜坡层,一个向量;
  11. 第十一层是线性层,一个大小为1的交叉熵函数向量;输出是类别。

本质上,我们一直在努力找到一组权重,使神经网络能够成功地复现我们给出的示例。然后我们依赖神经网络以“合理”的方式在这些示例之间进行“插值”(或“泛化”)。

对于每组可能的权重,神经网络将计算某些功能。提供大量的“输入-输出”示例供其“学习”,然后尝试找到能够复制这些示例的权重。

机器学习和神经网络的训练

对于“类人任务”来说,通常最好的做法是直接尝试训练神经网络。

『嵌入』的概念

将嵌入理解为通过一系列数字来尝试表示某个事物的“本质”,使得“相近的事物”用相近的数字表示。例如,我们可以将单词嵌入视为在某种“意义空间”中布局单词的方式,在该嵌入中,“意义相近的单词”会聚在一起。

ChatGPT内部原理

总体目标是根据其通过训练所看到的内容以“合理”的方式继续文本(该训练包括查看来自网络等的数十亿页文本)。所以在任何给定的时刻,它都有一定数量的文本,其目标是找到适当的选择来添加下一个令牌。

它有三个基本阶段的操作。

  1. 首先,它获取对应于到目前为止的文本的令牌序列,并找到表示这些令牌的嵌入(即数值数组)。然后,它对这个嵌入进行操作——以“标准神经网络方式”,值“连续通过”网络的各个层次——产生一个新的嵌入(即新的数值数组)。
  2. 然后,它取新嵌入的最后一部分令牌,这个数组并从中生成约50,000个值,这些值是不同可能的下一个标记的概率。
实际上除了整体架构之外,没有任何东西是“明确设计”的;一切都只是从训练数据中“学到”的

attention head:是一种在令牌序列中“回头看”的方式(即迄今为止生成的文本),并以对寻找下一个令牌有用的方式“打包过去”。

真正让ChatGPT发挥作用的是什么

一个拥有与大脑神经元数量相当的连接的纯粹人工神经网络能够出奇地很好地生成人类语言。

ChatGPT到底 在做什么?

ChatGPT中神经网络由非常简单的元素组成,尽管这些元素有数十亿个。神经网络的基本操作也非常简单,基本上是将迄今为止生成的文本所派生的输入“通过其元素”一次(没有任何循环等)传递给每个新单词(或单词的一部分)。

利用Wolfram


ChatGPT

Wolfram|Alpha

适用范围

文本生成、自然语言处理

结构化计算、数学模型、数据分析

主要能力

生成自然语言

内置计算知识和完整计算语言体系

互补性

生成用于结构化计算的自然语言

将自然语言转化为精确代码

缺点

结构化计算不适用

不专注于自然语言处理

ChatGPT和Wolfram

Wolfram语言拥有大量的内置计算知识,这是我们多年来的工作成果,精心编纂了大量不断更新的数据,实现(并经常发明)了各种方法、模型和算法,并系统地建立了一个完整的计算语言体系。

基于像ChatGPT这样的AI系统,在需要进行结构化计算的情况下并不适用。

前方的路

一种很好的方法来解决这个问题——将ChatGPT与Wolfram|Alpha及其计算知识“超能力”相连接。在Wolfram|Alpha内部,一切都被转化为计算语言,并且转换为精确的Wolfram语言代码,因为在某种程度上,这些代码必须“完美”才能可靠地有用。但是关键点在于ChatGPT不需要生成这些代码。它可以生成通常的自然语言,然后Wolfram|Alpha可以利用其自然语言理解能力将该自然语言翻译为精确的Wolfram语言。