LLM本身基于transformer架构。
自2017年,attention is all you need诞生起,原始的transformer模型为不同领域的模型提供了灵感和启发。
基于原始的Transformer框架,衍生出了一系列模型,一些模型仅仅使用encoder或decoder,有些模型同时使用encoder+decoder。
LLM分类一般分为三种:自编码模型(encoder)、自回归模型(decoder)和序列到序列模型(encoder-decoder)。
LLM之所以主要都用Decoder-only架构,除了训练效率和工程实现上的优势外,在理论上是因为Encoder的双向注意力会存在低秩问题,这可能会削弱模型表达能力,就生成任务而言,引入双向注意力并无实质好处。
而Encoder-Decoder架构之所以能够在某些场景下表现更好,大概只是因为它多了一倍参数。所以,在同等参数量、同等推理成本下,Decoder-only架构就是最优选择了。
Transformer模型的核心是注意力机制。以机器翻译为例来简化说明整个机制的工作过程。
更多层 → 更多参数 → 更强的表达能力(可以拟合更复杂的函数,可以表达更复杂的世界)。
Decoder 的每一层(共 6 层)都会单独访问 Encoder 的最终输出(即第 6 层的输出)。Decoder 的每一层在计算注意力时,会用自己的当前表示(Query)去“查询” Encoder 的输出(Key 和 Value)。
编码器首先会将输入序列从源空间(例如法语的现实世界表达)投影到一个语义空间的向量表示中。接着,解码器将这个空间向量从语义空间映射回目标空间(例如英文的现实世界表达),生成一个新的序列作为翻译输出。
Encoder 的第一层嵌入层会将输入的词汇转换为向量表示,也就是把输入映射到一个向量空间中,以便模型更好地理解输入内容。(你可以使用独热编码对输入进行编码,让Transformer自学调整参数,或者使用像Word2Vec预训练好的投影模型进行编码,让Transformer少走弯路。)
Endcoder 的第二层,也就是位置编码层,会为嵌入层输出的这些向量添加位置信息,把位置信息融合到嵌入向量中,这能帮助模型区分不同词汇在输入中所处的位置。Transformer会并行地处理所有输入的内容,所以各个并行单元会无状态地处理每个输入。因此,我们需要在最开始就给每个输入的嵌入向量一个位置编号,这样模型才能通过输入判断它在整体中的位置。
自注意力机制会针对每个带有位置编码的输入向量,去计算和其他位置的关联程度,从而捕捉输入内部的上下文关联信息,形成一个注意力权重的分布作为后续层的输入,指导模型的学习过程。
Transformer 模型会使用多组同构的自注意力(Self-Attention)模块,并行学习出多组不同的权重(加速过程),每组权重表示了它根据输入信息所学习的不同自注意力权重。
最终通过将多组自注意力计算的结果拼接在一起,通过线性变换得到多头自注意力模块的联合输出。
在Transformer的每个子层中,都使用了残差连接和层归一化来稳定训练过程。
在标准的 Transformer 模型中,编码器通常由 6 层堆叠而成(低层捕捉局部特征,如词级关系,高层整合全局语义,如句/段级关联),每一层的结构相同,主要由 Multi-Head Self-Attention(多头自注意力)和 Feed Forward Neural Network(前馈神经网络)两个核心子层组成,并且每个子层后都接有 Add & Norm(残差连接与层归一化)模块(残差连接确保梯度有效回传,避免深层网络退化)。