Transformer Architecture
前面我们完成了
概述
Transformer 模型于 2017 年在论文
该模型由两部分组成:编码器和解码器。通常,仅编码器体系结构擅长从文本中提取信息以执行分类和回归等任务,而仅解码器模型则专门用于生成文本。例如,专注于文本生成的 GPT 属于仅解码器模型的范畴。
注意
GPT 模型仅使用 transformer 架构的解码器部分。
让我们在训练模型时了解架构的关键思想。
我画了一张图来说明类似 GPT 的仅解码器转换器架构的训练过程:

-
首先,我们需要一系列输入字符作为训练数据。这些输入被转换为矢量嵌入格式。
-
接下来,我们在向量嵌入中添加位置编码,以捕获每个字符在序列中的位置。
-
随后,模型通过一系列计算操作处理这些输入嵌入,最终为给定的输入文本生成可能的下一个字符的概率分布。
-
该模型根据训练数据集中的实际后续特征评估预测结果,并相应地调整概率或“权重”。
-
最后,该模型迭代地完善了这一过程,不断更新其参数以提高未来预测的精度。
让我们深入了解每个步骤的细节。
1 Tokenization
标记化是转换器模型的第一步,该模型:
将输入句子转换为数字表示格式。
标记化是将文本划分为称为标记的较小单元的过程,这些单元可以是单词、子单词、短语或字符。因为将短语分解成更小的部分有助于模型识别文本的底层结构并更有效地处理它。
例如:
Chapter 1: Building Rapport and Capturing
上面这句话可以切成:
Chapter, , , , , , , , , , , ,1``:``Building``Rap``port``and``Capturing
它被标记为 10 个数字:
如您所见,数字 220 用于表示空格字符。有许多方法可以将字符标记为整数。对于我们的示例数据集,我们将使用 tiktoken 库。
出于演示目的,我将使用一个小型教科书数据集(来自
-
文件大小: 450Kb
-
词汇量:3,771(表示唯一单词/子单词)
我们的训练数据包含 3,771 个不同字符的词汇量。用于标记我们的教科书数据集的最大数量是 ,它被映射到一个字符。100069``Clar
一旦我们有了标记化映射,我们就可以为数据集中每个字符找到相应的整数索引。我们将利用这些分配的整数索引作为标记,而不是在与模型交互时使用整个单词。
2 Word Embeddings
首先,让我们构建一个包含词汇表中所有字符的查找表。从本质上讲,该表由一个填充了随机初始化数字的矩阵组成。
给定我们拥有的最大标记数是 ,并考虑维度为 64(原始论文使用 512 维,表示为 d_model),生成的查找表变为 100,069 × 64 矩阵,这称为标记嵌入查找表。表示如下:100069
Token Embedding Look-Up Table:
0 1 2 3 4 5 6 7 8 9 ... 54 55 56 57 58 59 60 61 62 63
0 0.625765 0.025510 0.954514 0.064349 -0.502401 -0.202555 -1.567081 -1.097956 0.235958 -0.239778 ... 0.420812 0.277596 0.778898 1.533269 1.609736 -0.403228 -0.274928 1.473840 0.068826 1.332708
1 -0.497006 0.465756 -0.257259 -1.067259 0.835319 -1.956048 -0.800265 -0.504499 -1.426664 0.905942 ... 0.008287 -0.252325 -0.657626 0.318449 -0.549586 -1.464924 -0.557690 -0.693927 -0.325247 1.243933
2 1.347121 1.690980 -0.124446 -1.682366 1.134614 -0.082384 0.289316 0.835773 0.306655 -0.747233 ... 0.543340 -0.843840 -0.687481 2.138219 0.511412 1.219090 0.097527 -0.978587 -0.432050 -1.493750
3 1.078523 -0.614952 -0.458853 0.567482 0.095883 -1.569957 0.373957 -0.142067 -1.242306 -0.961821 ... -0.882441 0.638720 1.119174 -1.907924 -0.527563 1.080655 -2.215207 0.203201 -1.115814 -1.258691
4 0.814849 -0.064297 1.423653 0.261726 -0.133177 0.211893 1.449790 3.055426 -1.783010 -0.832339 ... 0.665415 0.723436 -1.318454 0.785860 -1.150111 1.313207 -0.334949 0.149743 1.306531 -0.046524
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
100064 -0.898191 -1.906910 -0.906910 1.838532 2.121814 -1.654444 0.082778 0.064536 0.345121 0.262247 ... 0.438956 0.163314 0.491996 1.721039 -0.124316 1.228242 0.368963 1.058280 0.406413 -0.326223
100065 1.354992 -1.203096 -2.184551 -1.745679 -0.005853 -0.860506 1.010784 0.355051 -1.489120 -1.936192 ... 1.354665 -1.338872 -0.263905 0.284906 0.202743 -0.487176 -0.421959 0.490739 -1.056457 2.636806
100066 -0.436116 0.450023 -1.381522 0.625508 0.415576 0.628877 -0.595811 -1.074244 -1.512645 -2.027422 ... 0.436522 0.068974 1.305852 0.005790 -0.583766 -0.797004 0.144952 -0.279772 1.522029 -0.629672
100067 0.147102 0.578953 -0.668165 -0.011443 0.236621 0.348374 -0.706088 1.368070 -1.428709 -0.620189 ... 1.130942 -0.739860 -1.546209 -1.475937 -0.145684 -1.744829 0.637790 -1.064455 1.290440 -1.110520
100068 0.415268 -0.345575 0.441546 -0.579085 1.110969 -1.303691 0.143943 -0.714082 -1.426512 1.646982 ... -2.502535 1.409418 0.159812 -0.911323 0.856282 -0.404213 -0.012741 1.333426 0.372255 0.722526