了解大语言模型的基本原理(一)——Transformer工作原理
为什么选择Transformer?
RNN:无法并行计算,不擅长处理长序列
LSTM:依然存在这两个问题
Transformer:可以并行计算,并且能学习输入序列里所有词的相关性和上下文关系
Tranformer优点:
1、注意力机制:使每个词都能注意到输入序列里的所有其他词,给每个词一个不一样的注意力权重(权重是通过大量训练不断优化得到的)
2、位置编码:将位置编码向量和输入的每个词的向量相加,就能够使每个词都具备位置信息,这样做可以将一段文字同时输入到模型中,模型既可以理解每个词的意义及每个词和其他词之间的关系,也可以知道每个词在句子中的位置,从而理解不同词之间的顺序关系。
Transformer工作原理
1、token化
输入的文本首先会被token化,token可以理解为文本的一个基本单位。每个token被一个整数数字tokenID表示(因为计算机无法储存文字,任何字符最终都需要通过数字表示)。
2、向量嵌入
将tokenID映射到高维空间用向量表示,能够捕捉到更深层次的语义信息。用向量表示方便在数学层面计算每个向量之间的距离,从而捕捉不同词在语义和语法方面的相似性。
将词向量与位置向量相加输入到模型中
3、编码器
由于经过了自注意力模块,所有每个词向量的输出结果向量不仅包含这个词本身的信息,还融合了上下文中的相关信息。所以编码器的输出结果里,表示各个词的向量,会根据上下文信息进行调整,同一个词,根据上下文会有不同的抽象表示。
多头自注意力(多个头可以并行运算):有多个自注意力模块,每个头都有自己的注意力权重,用来关注文本里不同特征或方面。(和卷积中的多个卷积核相似)
4、解码器
通过编码器,我们有了输入序列里各个token的抽象表示。这时,我们不仅将编码器的输出输入到解码器中,还要将之前已经生成的文本也输入到解码器中,来保持输出文本的连贯性和上下文相关性。
带掩码的多头自注意力
解码器的自注意力模块和编码器不太一样。当编码器处理各个词的时候,会关注输入序列里所有其他词,而解码器中,自注意力模块只会关注当前词和它前面的其他词。这样做是保证解码器生成文本时遵循正确的时间顺序,在预测下一个词时,只使用前面的词作为上下文,不能偷看后面的文本。
解码器会捕捉编码器的输出和解码器已经生成的输出之间的对应关系,从而将原始输入序列的信息融合到输出序列的生成过程当中。
线性层和softmax层,将解码器输出的表示,转换为词汇表的概率分布,也就是生成的下一个token的概率