如今,在科技领域掀起了一股GPT3的热潮。大规模语言模型(比如GPT3)的潜力惊艳了我们。虽然这些模型还没有成熟到大多数企业将之直接面对消费者,但却展示出一些智慧的火花,并让人坚信其将会加速自动化的进程,让人看到智能计算系统的希望。让我们拂去GPT3的神秘光环,来看一看它训练与工作的原理吧!
一个经过训练的GPT3语言模型可以生成文本。
我们可以选择一些文本作为输入,从而影响它的输出。
输出是由模型在扫描大量文本的训练期间 "学到 "的东西生成的。
训练是将模型暴露在大量文本中的过程。它已经做了一次并完成了。你现在看到的所有实验都是来自那个训练过的模型。据估计,它耗费了355个GPU年,花费了460万美元。
一个有3000亿个字符的数据集被用来生成模型的训练样本。例如,这是由上面那句话生成的三个训练样本。
你可以看到你如何在所有文本上滑动一个窗口,并生成很多例子。
当我们只给模型一个样本时:我们只给看特征,并让它预测下一个单词。
该模型的预测将是错误的。我们计算其预测中的错误,并更新模型,以便下次它做出更好的预测。
重复这个过程数百万次
现在让我们更详细地看看这些相同的步骤。
GPT3实际上一次只生成一个token的输出(现在我们假设一个token是一个词)。
请注意:这是对GPT-3工作原理的描述,而不是对它的新颖之处的讨论(主要是规模大得可笑)。其架构是基于的 transformer 解码器模型, 参见这篇论文(https://arxiv.org/pdf/1801.10198.pdf)。
GPT3 极其巨大。它将从训练中学习到的内容编码成1750亿个参数。这些参数用于计算每次运行时生成的 token。
未经训练的模型以随机参数开始。训练以期找到更好的预测值。
这些数字是模型里面数百个矩阵的一部分。预测主要就是大量的矩阵乘法。
在我的YouTube 上的人工智能介绍中(https://www.youtube.com/watch?v=mSTCzNgDJy4),我展示了一个简单的机器学习模型,它只有一个参数。为解读这个1750亿个参数的怪兽开了个好头。
为了理解这些参数是如何分布和使用的,我们需要打开模型看看里面的情况。
GPT3 的宽度是2048个 token。这是它的 "上下文窗口"。这意味着它沿着这2048条轨道处理 token。
让我们跟随紫轨,看看系统是如何处理"机器人"这个词并产生"A"的?
抽象的步骤:
将单词转换为代表单词的向量(数字列表)。
计算预测值
将所得向量转换为单词
GPT3的重要计算发生在其96个 transformer 解码层的堆栈中。
看到这些层了吗?这就是 "深度学习 "中的 "深度"。
这些层中的每一层都有1.8亿个参数来进行计算。
你可以在我的博文图解GPT2中看到解码器内部一切的详细解释。
与GPT3的不同之处在于密集自注意层和稀疏自注意层的交替。
这是GPT3内输入和响应("Okay human")的X光片。注意,每一个token是如何通过整个层堆栈的。我们不关心第一个词的输出。当输入完成后,我们开始关心输出。我们把每个词都反馈到模型中。
在React代码生成的例子中,描述会是输入提示(绿色),此外还有几个对代码描述的例子吧。而 React 代码会像这里的粉色 token 一样一个个地生成。
我的假设是,将引例和描述作为输入,用特定的 token 将例子和结果分开,然后输入到模型中。
这种方式让人印象深刻。因为我们只要等到GPT3的微调推出。它的性能将更加惊人。
微调实际上是更新模型的权重,让模型在某项任务中表现得更好。
领取专属 10元无门槛券
私享最新 技术干货