LLM 模型架构
1. LLM 核心模型 Transformer
这是《大语言模型》这本书的学习笔记。详细内容可以参考书籍。
目前主流的大模型都是基于Transformer模型进行设计的。Transformer是由多层的多头注意力模块(Multi-Head Self-Attention) 堆叠而成的神经网络模型。
原始的Transformer是由Encoder 和Decoder两部分构成,而这两部分是可以独立使用的(如BERT 单独使用Encoder, GPT单独使用Decoder).
大语言模型与早期的预训练语言模型相比,主要是使用了更长的向量维度、更深的层数、更大的数据集、进而包含了更大规模的模型参数。LLM主要使用Decoder 架构,对Transformer本身结构和配置改变不大。
关于Transformer的详细介绍可以参考我之前的学习笔记:Attention
-
输入端:x = v + p (词向量 + 位置编码)
- 输入词元序列 首先经过一个Embedding Module转成词向量。
- 位置编码 (由于Transformer无法识别序列顺序所以 通过位置编码来表示序列中的位置)
- 位置编码也有绝对位置编码,相对位置编码。这个后续讨论。
-
多头注意力机制(MHA)
- 多头注意力机制是Transfomer的核心技术,能够直接建模任意距离的词元之间的相互关系。之前RNN迭代利用前一个时刻状态更新当前时刻状态,在处理长文本时会出现梯度爆炸或消失的问题。在卷积神经网络中只有同一个卷积核的窗口中的词元可以直接交互,通过堆叠层数来实现远距离词元信息交互。
- 多头注意力机制 = 多个自注意力模型组成。
- 每个模块将输入词元映射成Query,Key,Value 三个矩阵。然后对于每个query,与所有没有被mask的key计算点积,点积值除以 D \sqrt{D} D(D是key的向量维度),然后传入softmax中计算权重。权重与Value加权和得到最终输出。
- A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T D ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{D}})V Attention(Q,K,V)=softmax(DQKT)V 其中 Q = X W Q Q=XW^Q Q=XWQ, K = X W K K=XW^K K=XWK, V = X W V V=XW^V V=XWV
- 多头注意力机制 使用了 H 组 结构相同但是参数不同的自注意模块。输入序列通过不同的权重映射为K Q V,每组KQV经过上面计算映射成一个Head得到自注意力输出,不同 Head 被拼接在一起,通过一个权重矩阵 W O W^O WO(H*H)进行映射,产生最终的输出。 M H A = C o n c a t ( h e a d 1 , . . h e a d N ) W O MHA=Concat(head_1,..head_N)W^O MHA=Con