共计 3050 个字符,预计需要花费 8 分钟才能阅读完成。
动动发财的小手,点个赞吧!
自从最新的 Large Language Models(LLaM)公布以来,如 OpenAI 的 GPT 系列、开源模型 Bloom 或谷歌公布的 LaMDA 等,Transformer 展现出了微小的后劲,成为了深度学习的前沿架构楷模。
只管曾经有几篇文章介绍了 transformer 及其背地的数学原理,但在本文中,我想联合我认为最好的办法和我的观点,给出一个残缺的概述。本人的观点和应用 Transformer 模型的集体教训。
本文试图对 Transformer 模型进行深刻的数学概述,展现其弱小的起源并解释其每个模块背地的起因。
自然语言解决(NLP)简介
在开始应用 Transformer 模型之前,有必要理解创立它们的工作,即解决文本。
因为神经网络应用 Tensor,为了将文本输出神经网络,咱们必须首先将其转换为数字示意。将文本(或任何其余对象)转换为数字模式的行为称为嵌入。现实状况下,嵌入式示意可能再现文本的特色,例如单词之间的关系或文本的情感。
有几种办法能够执行嵌入,本文的目标不是解释它们,而是咱们应该理解它们的个别机制和它们产生的输入。如果您不相熟嵌入,只需将它们视为模型架构中将文本转换为数字的另一层。
最罕用的嵌入作用于文本的单词,将每个单词转换为一个真正高维度的向量(将文本划分为利用嵌入的元素称为标记)。在原始论文中,每个标记 / 单词的嵌入维度为 512。重要的是要留神向量模数也已归一化,因而神经网络可能正确学习并防止梯度爆炸。
嵌入的一个重要元素是词汇。这对应于可用于提供 Transformer 模型的所有标记(单词)的汇合。词汇不肯定只是句子中应用的词,而是与其主题相干的任何其余词。例如,如果 Transformer 将用于剖析法律文件,则与官僚行话相干的每个词都必须蕴含在词汇表中。请留神,词汇表越大(如果它与 Transformer 工作相干),嵌入越可能找到标记之间的关系。
除了单词之外,词汇表和文本序列中还增加了一些其余非凡标记。这些标记标记文本的非凡局部,如结尾 <START>、结尾 <END> 或填充 <PAD>(增加填充以使所有序列具备雷同的长度)。非凡标记也作为向量嵌入。
在数学中,嵌入空间形成了一个归一化向量空间,其中每个向量对应一个特定的标记。向量空间的根底由嵌入层可能在标记之间找到的关系确定。例如,一个维度可能对应以 -ing 结尾的动词,另一个维度可能是具备积极意义的形容词等。此外,向量之间的角度决定了标记之间的相似性,造成具备语义关系的标记簇。
尽管只提到了文本处理的工作,但实际上 Transformer 是为解决任何类型的程序数据而设计的。
Transformer 的工作流程
上图是近几年深度学习钻研中被复制最多的图表之一。它总结了 Transformers 的残缺工作流程,代表了流程中波及的每个局部 / 模块。
更高的透视图将 Transformers 分为 Encoder(图中左侧蓝色方块)和 Decoder(右侧蓝色方块)。
为了阐明 Transformers 的工作原理,我将应用从西班牙语到英语的文本翻译示例工作。
- 编码器的指标是找到输出序列的标记之间的关系,即要翻译成西班牙语的句子。它获取西班牙语句子作为输出(在利用嵌入之后)并输入由注意力机制加权的雷同序列。从数学上讲,编码器在西班牙语标记的嵌入空间中执行转换,依据向量在句子含意中的重要性对向量进行加权。
我还没有定义注意力是什么,但基本上能够将其视为一个函数,该函数返回一些系数,这些系数定义了句子中每个单词绝对于其余单词的重要性。
- 另一方面,解码器首先将翻译后的英文句子作为输出(原图中的输入),利用注意力,而后在另一个注意力机制中将后果与编码器的输入联合起来。直观地,解码器学习将指标嵌入空间(英语)与输出嵌入空间(西班牙语)相关联,以便它找到两个向量空间之间的根底变换。
为分明起见,我将应用符号源输出来指代编码器的输出(西班牙语的句子),应用指标输出来指代解码器中引入的预期输入(英语的句子)。该符号将在本文的其余部分保持一致。
当初让咱们认真看看转换器的输出(源和指标)和输入:
正如咱们所见,Transformer 输出文本被嵌入到高维向量空间中,因而输出的不是句子,而是向量序列。然而,存在更好的数学构造来示意向量序列,即矩阵!更进一步,在训练神经网络时,咱们不会一一样本地训练它,而是应用蕴含多个样本的批次。生成的输出是形态为 [N, L, E] 的张量,其中 N 是批量大小,L 是序列长度,E 是嵌入维度。
至于 Transformer 的输入,利用了一个 Linear + Softmax 层,它产生一些输入概率(回忆一下,Softmax 层输入定义类的概率分布)。Transformer 的输入不是翻译后的句子,而是词汇表的概率分布,它决定了概率最高的单词。请留神,对于序列长度中的每个地位,都会生成概率分布以抉择具备更高概率的下一个标记。因为在训练期间 Transformer 一次解决所有句子,咱们失去一个 3D 张量作为输入,它示意形态为 [N, L, V] 的词汇标记的概率分布,其中 N 是批量大小,L 是序列长度,并且 V 词汇长度。
最初,预测的标记是概率最高的标记。
如 NLP 简介局部所述,嵌入后的所有序列都具备雷同的长度,这对应于 Transformer 能够引入 / 产生的最长可能序列。
训练与预测
对于本文第 1 局部的最初一节,我想强调一下 Transformer 的训练阶段与预测阶段。
如前一节所述,Transformer 承受两个输出(源和指标)。在训练期间,Transformer 可能一次解决所有输出,这意味着输出张量仅通过模型一次。输入实际上是上图中出现的 3 维概率张量。
相同,在预测阶段,没有指标输出序列来提供给 Transformer(如果咱们曾经晓得翻译的句子,咱们就不须要深度学习模型来进行文本翻译)。那么,咱们输出什么作为指标输出呢?
正是在这一点上,Transformer 的自回归行为暴露无遗。Transformer 能够在编码器中一次解决源输出序列,但对于解码器的模块,它会进入一个循环,在每次迭代中它只生成序列中的下一个标记(词汇标记上的行概率向量)。而后将具备较高概率的所选标记再次输出为指标输出,因而 Transformer 始终依据其先前的预测来预测下一个标记(因而具备自回归意义)。然而在第一次迭代时输出的第一个标记应该是什么?
还记得 NLP 简介局部的非凡标记吗?作为指标输出引入的第一个元素是标记句子结尾的开始标记 <START>。
总结
这部分介绍了更好地了解 Transformers 模型所必须的第一个概念和概念。在下一部分中,我将深入研究大部分数学所在的 Transformers 架构的每个模块。
本文背地的次要思维和概念是:
- 转换器在嵌入零碎定义的归一化向量空间中工作,其中每个维度代表标记之间的特色。
- Transformers 输出是形态为 [N, L, E] 的张量,其中 N 示意批量大小,L 是序列长度(因为填充,每个序列都是常数),E 示意嵌入维度。
- 当编码器在源嵌入空间中寻找标记之间的关系时,解码器的工作是学习从源空间到指标空间的投影。
- Transformer 的输入是一个线向量,其长度等于词汇表的大小,其中每个系数代表相应索引标记被搁置在序列中下一个的概率。
- 在训练期间,Transformer 一次解决所有输出,输入一个 [N, L, V] 张量(V 是词汇表长度)。然而在预测过程中,Transformer 是自回归的,总是依据他们之前的预测一一标记地预测。
本文由 mdnice 多平台公布