大语言模型,本质上通过预测概率最高的下一个词来实现惊艳的文本生成。这背后的功臣就是强大的Transformer架构。那么,Transformer是如何做到的呢?让我们一起轻松愉快地走进它的内部世界!📖
🔍Transformer心组件之: 编码器(Encoder)工作流程
🔢 输入TOKEN化
- 将输入的文本拆分成计算机能处理的TOKEN,每个TOKEN被转换为一串整数,作为其在词汇表中的索引。
🖼️ 嵌入层(Embedding Layer)
- 将TOKEN化的整数序列转换为向量表示,这些向量(通常称为词嵌入)捕获词汇之间的语法和语义关系。
📍 位置编码(Positional Encoding)
- 向嵌入向量中添加位置信息,以确保模型能够理解词在句子中的顺序。位置编码是与嵌入向量具有相同维度的向量,并通过特定的数学函数生成。
💡 自注意力机制(Self-Attention Mechanism)
- 编码器中的核心部分,用于捕捉输入序列中的关键特征。通过计算每个词与其他所有词之间的相关性来确定注意力权重。
👓 多头自注意力(Multi-Head Self-Attention)
- 将自注意力机制应用于多个不同的“头”或子空间。每个头关注输入数据的不同方面,从而增强模型的表达能力。
🧠 前馈神经网络(Feed Forward Neural Network)
- 对多头自注意力的输出进行进一步的数值变换,这有助于模型捕捉更复杂的模式和关系。
🏗️ 堆叠编码器(Stacked Encoders)
- 通过将多个编码器堆叠在一起,模型能够在不同层级上理解输入数据。每个编码器都处理前一个编码器的输出,从而逐步提炼和抽象化信息。
:::color2 🤔古人云“横看成岭侧成峰”,正是因为多头自注意力与堆叠编码器的作用,让模型可以多角度地全面捕捉信息各种特征,从而构建了对数据全貌的深度理解!
:::
🗣️ Transformer心组件之:解码器(Decoder)工作流程
- 🔔** 接收特殊起始符号**
- 解码器接收一个表示输出序列开头的特殊符号作为初始输入。
- 🖼️** 嵌入层和位置编码**
- 与编码器类似,解码器也使用嵌入层将输入TOKEN转换为向量表示,并添加位置编码。
- 🎭** 带掩码的自注意力机制(Masked Self-Attention Mechanism)**
- 解码器中的自注意力机制被修改为只关注当前位置之前的词,这是通过掩码实现的,确保模型在生成下一个词时只考虑已经生成的词。
- 🤝** 编码器-解码器注意力(Encoder-Decoder Attention)**
- 解码器中的另一个注意力层用于捕捉编码器的输出和解码器当前状态之间的关系。这允许模型将输入序列的信息融合到输出序列的生成过程中。
- 🧠** 前馈神经网络和堆叠解码器**
- 与编码器类似,解码器也使用前馈神经网络对注意力机制的输出进行进一步处理。通过堆叠多个解码器,模型能够更深入地理解输入与输出之间的关系,并生成更复杂的输出序列。
- 🎯** 线性层和Softmax层**
- 解码器的最后阶段是将输出向量转换为词汇表的概率分布。线性层将输出向量的维度转换为词汇表的大小,而Softmax层则将这些数值转换为概率分布。
- 🎁** 选择概率最高的TOKEN作为输出**
- 在大多数情况下,模型会选择概率最高的TOKEN作为下一个输出。这个过程会重复进行,直到生成一个表示输出序列结束的特殊TOKEN为止。
:::color2 🤔思考:看上去,编码器和解码器结构有很大的相似啊,那能不能只保留一样呢?是否可以仅编码器或者仅解码器?答案是肯定的!
:::
🔧Transformer的变种与应用
- 仅编码器模型(自编码器模型):适用于理解语言的任务,如BERT用于遮蔽词预测和情感分析。
- 仅解码器模型(自回归模型):擅长文本生成,如GPT系列通过预测下一个词实现文本生成。
- 编码器-解码器模型(序列到序列模型):适用于将一个序列转换成另一个序列的任务,如T5和BART用于翻译和总结等。
:::color2 🤔思考:从这里也能看出,你是否已经看到生成式AI与大语言模型的关系哦!
大语言模型不都是生成式AI,因为有的大模型,如BERT模型,仅有编码器,不做生成任务!
:::