原文地址:https://jalammar.github.io/how-gpt3-works-visualizations-animations/,原文作者已添加本文链接:)
(本文将在未来几天持续更新可视化)
一个经过训练的语言模型会生成文本。
我们可以选择一些文本作为输入传递给它,从而影响它的输出。
输出是由模型在扫描大量文本的训练期间 "学到 "的东西生成的。
训练是将模型暴露在大量文本中的过程。它已经做了一次并完成了。你现在看到的所有实验都是来自那个训练过的模型。据估计,它耗费了355个GPU年,花费了460万美元。
一个有3000亿个字符的数据集被用来生成模型的训练样本。例如,这是由上面那句话生成的三个训练样本。
你可以看到你如何在所有文本上滑动一个窗口,并生成很多例子。
当我们只给模型一个样本时:我们只给看特征,并让它预测下一个单词。
该模型的预测将是错误的。我们计算其预测中的错误,并更新模型,以便下次它做出更好的预测。
重复这个过程数百万次
GPT3实际上一次只生成一个token的输出(现在我们假设一个token是一个词)。
GPT3 极其巨大。它将从训练中学习到的内容编码成1750亿个参数。这些参数用于计算每次运行时生成的 token。
未经训练的模型以随机参数开始。训练以期找到更好的预测值。
在我的YouTube 上的人工智能介绍中,我展示了一个简单的机器学习模型,它只有一个参数。为解读这个1750亿个参数的怪兽开了个好头。
为了理解这些参数是如何分布和使用的,我们需要打开模型看看里面的情况。
GPT3 的宽度是2048个 token。这是它的 "上下文窗口"。这意味着它沿着这2048条轨道处理 token。
抽象的步骤:
- 将单词转换为代表单词的向量(数字列表)。
- 计算预测值
- 将所得向量转换为单词
看到这些层了吗?这就是 "深度学习 "中的 "深度"。
这些层中的每一层都有1.8亿个参数来进行计算。
与GPT3的不同之处在于密集自注意层和稀疏自注意层的交替。
这是GPT3内输入和响应("Okay human")的X光片。注意,每一个token是如何通过整个层堆栈的。我们不关心第一个词的输出。当输入完成后,我们开始关心输出。我们把每个词都反馈到模型中。
我的假设是,将引例和描述作为输入,用特定的 token 将例子和结果分开,然后输入到模型中。
微调实际上是更新模型的权重,让模型在某项任务中表现得更好。