Transformer 架构
Transformer 模型概述
Transformer 架构最初在2017年提出,是一种基于注意力机制的模型,用于处理序列到序列的任务,如机器翻译、语言建模等。
GPT 模型就是基于 Transformer 架构。
- G——Generative,代表“生成式”,这意味着模型能够生成文本,根据给定的起始词或句子,预测文字出现的先后概率生成一段连续的文本,最终形成输出。
- P——Pre-trained,代表“预训练”,在模型被用于特定任务之前,先通过大规模的文本数据进行预训练,学习语言的基础知识,如语法、拼写以及一些常识。
- T——Transformer,一种特定的深度学习模型结构,通过引入自注意力机制,使得模型在处理文本时能够理解更复杂的句子结构和语义。
Transformer LLM 一次生成一个词元,而不是一次生成全部文本。在生成当前词元后,将输出词元追加到输入提示词的末尾,从而调整下一次生成的输入提示词。每个词元生成步骤都是模型的一次前向传播(在机器学习中,前向传播指的是输入进入神经网络并流经计算图,最终在另一端产生输出所需的计算过程)。这类模型被称为自回归模型。
Transformer LLM 由分词器、堆叠的 Transformer 块和语言建模头组成。
Transformer LLM 的生成过程
- 分词(Tokenization)
- 词嵌入(Embedding)
- 注意力机制(Attention Mechanism)
- 最终的内容生成(Content Generation)
分词
若想让大模型具备理解和创造内容的能力,首先需要让它懂得文本的最基本单位——单词/字,我们称之为词元(Token)。
词元不仅是模型的输出单位,也是模型查看输入的方式,发送给模型的提示词首先被分解成词元。
- 中文:“长沙的雨” → [“长沙”,“的”,“雨”](3 个 Token)
- 英文:“Rain in Changsha” → [“Rain”, “in”, “Changsha”](3 个 Token)
- 句子 “长沙明天暴雨,记得带伞” → Token 列表:[“长沙”,“明天”,“暴雨”,“记得”,“带伞”]
不同模型 token 规则不同,通常 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token。
词嵌入
词元往往存在远近亲疏关系
人类的语言虽然看起来非常灵活,但这种关系也存在一定的统计规律:
- 有些字词的使用频率非常高,中文如“的/是/不/能/知道/可以”,英文如“the/to/and/of/in/for/”
- 某些个字词经常一同出现从而具有特定的意义,如词组、成语、短语、谚语、俗语
- 某些个字词存在语义上的关系(反义、同义、近义)如 黑与白、高兴与愉快、安静与宁静
- 同一个字词,在不同的语境下,可能就会具备不同的含义。如“鲜花”和“花钱”中的“花”
这种字词间的关系和含义,在大模型是如何进行表示的呢?这涉及两个非常重要的概念:词向量(Word Vector)和词嵌入(Word Embedding)
词嵌入,是指把 token 映射到 N 维坐标系中,从而得到词向量。
每个 Token 被换成一个由很多数字(几百到几万个)组成的列表,可以被称为词向量。比如在三维坐标系中,“长沙”的词向量为[4, 2, 0.5]。词向量维度越大,大模型表示的语义越丰富。
大模型没训练前所有 token 的词向量都是随机的。
通过计算词向量的距离来衡量字词间的远近亲疏关系,一般用欧氏距离、曼哈顿距离、夹角余弦来计算。
每个 Token 是如何被换成这些数字的?
还是通过神经网络词嵌入层!首先给每个词随机生成初始词向量,然后利用大规模的语料库进行训练,学习单词之间的语义关系,然后生成每个单词的词向量,向量中每个数字隐含地包含了每个单词和其他单词的某种关联程度。
词向量的维度是模型自动学习的,没有明确标签。每个词的词向量在大模型训练的时候确定,以后则是去查询词向量库。
专用于输出「词向量」的神经网络模型就是嵌入模型,也叫向量模型。可以使用已有的向量模型,将本地的字词向量化。
大模型如何理解并预测输入的内容?
大模型如何判断文本中的“苹果”指的是水果还是手机?
大模型需要有能力去捕捉输入文本序列中的每个词汇,在上下文中有怎样的关联,表示怎样的意义。实现这个能力的是大模型的注意力机制。
注意力机制
“天气预报说长沙明天有暴雨”这句话,听到 “暴雨” 时,人类会自动关联或注意到 “长沙”(地点)和 “明天”(时间),听到 “明天” 时,人类知道它修饰的是 “暴雨”,而不是前面的 “天气预报”。
大模型也一样,Transformer 架构会让 “暴雨” 给每个词打分(权重):
- 长沙(0.8):强相关(地点)
- 明天(0.7):强相关(时间)
- 预报(0.3):弱相关
- 其他词(0.1):不相关
这种「捕捉词语之间的关联」的能力就是注意力机制(Attention)。
最终的内容生成
在处理结束时,模型会为词表中的每个词元输出一个概率分数,从概率分布中选择单个词元的方法称为解码策略。
最简单的解码策略就是始终选择概率分数最高的词元。但在实践中,对于大多数使用场景来说,这种方法往往无法产生最佳输出。一个更好的方法是引入一些随机性,有时选择概率第二高或第三高的词元。用统计学家的话来说,这种思想就是根据概率分数对概率分布进行采样。
每次都选择概率分数最高的词元的策略被称为贪心解码。这就是在 LLM 中将温度(temperature)参数设为零时会发生的情况。
Transformer 的优势:
- 并行计算:Transformer 可以充分利用现代计算硬件进行并行计算,大大提高了训练速度。
- 捕捉长距离依赖:自注意力机制使得每个位置的输入可以与序列中其他位置的所有信息进行交互,这大大增强了模型捕捉长距离依赖的能力。
- 可扩展性:Transformer 架构更容易扩展到更大的模型和更多的数据,也更容易提升模型的表达能力。
- 灵活性和效果:Transformer 不仅能高效地处理长序列,还能够在多种 NLP 任务中取得良好的效果。无论是机器翻译、文本生成、语义理解,Transformer 都能展现出色的性能。
模型训练
第一阶段:预训练
从互联网抓取数据,进行训练,得到最优的模型参数。训练数据不够容易产生过拟合(overfitting)。
第二阶段:监督微调(SFT,Supervised Fine Tuning)
有了预训练得到的初始参数,再投喂人类标注的少量数据,对打模型进行微调。
有了开源模型,人人都可以微调。
用翻译资料对预训练模型进行微调,就可以得到翻译模型;用旅游攻略微调,就可以得到旅游模型。
第三阶段:基于人类反馈的强化学习(RLHF,Reinforcement Learning from Human Feedback)
生成的内容后面一般会有反馈按钮,大模型内部有个奖励模型,人类反馈就是来调整奖励模型的参数的。