Transformer架构最初在2017年提出。它是一种基于注意力机制的模型,用于处理序列到序列的任务,如机器翻译、语言建模等。

特点
- 并行计算:Transformer可以充分利用现代计算硬件进行并行计算,大大提高了训练速度。
- 捕捉长距离依赖:自注意力机制使得每个位置的输入可以与序列中其他位置的所有信息进行交互,这大大增强了模型捕捉长距离依赖的能力。
- 可扩展性:Transformer架构更容易扩展到更大的模型和更多的数据,也更容易提升模型的表达能力。
- 灵活性和效果:Transformer不仅能高效地处理长序列,还能够在多种NLP任务中取得良好的效果。无论是机器翻译、文本生成、语义理解,Transformer都能展现出色的性能。
工作原理
- Transformer模型的生成过程可以分为以下4个步骤
1.分词(Tokenization) 2.词嵌入(Embedding) 3.注意力机制(Attention Mechanism) 4.最终的内容生成(Content Generation)
|

token-大模型基本处理单元
- 为什么向大模型提出‘从前有个国王,他有个女儿’,大模型能够续写? 若想让大模型具备理解和创造内容的能力,首先需要让它懂得文本的最基本单位 —— 单词/字token
- 大模型中最基本的处理单元 — Token
– 一条语句由诸多单词/字(Word)所组成,大模型在进行处理前需要先将语句拆解成一个个的基础单元:
中文:“长沙的雨”→[“长沙”,“的”,“雨”](3 个 Token) 英文“Rain in Changsha”→[“Rain”, “in”, “Changsha”](3 个Token) 句子 “长沙明天暴雨,记得带伞” Token 列表:[“长沙”,“明天”,“暴雨”,“记得”,“带伞”]
|
– 通常 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token。
注意:不同模型token规则不同
- 词与词之间存在不同的远近亲疏关系
人类的语言虽然看起来非常灵活,但这种关系也存在一定的统计规律: 1、有些字词的使用频率非常高,中文如“的/是/不/能/知道/可以”,英文如“the/to/and/of/in/for/”。 2、某些个字词经常一同出现从而具有特定的意义,如词组、成语、短语、谚语、俗语 3、某些个字词存在语义上的关系(反义、同义、近义)如 黑与白、高兴与愉快、安静与宁静 4、同一个字词,在不同的语境下,可能就会具备不同的含义。如“鲜花”和“花钱”中的“花”
|
– 这种字词间的关系和含义,在大模型是如何进行表示的呢?这涉及两个非常重要的概念: 词向量(Word Vector)和词嵌入(Word Embedding)
词向量(Word Vector)和词嵌入(Word Embedding)
– 词向量(Word Vector)≈ 词嵌入(Word Embedding)
– 结合前面的Token,则大模型会这么处理


“长沙的雨”→[“长沙”,“的”,“雨”](3 个 Token) 每个 Token 被换成一个由很多数字(几百到几万个 )组成的列表,可以被称为词向量 比如在三维坐标系中 “长沙”的词向量为 [4, 2, 0.5] 大模型没训练前所有token的词向量都是随机的
|
- 每个Token是如何被换成这些数字的呢?
还是通过神经网络词嵌入层!利用大规模的语料库进行训练,学习单词之间的语义关系,然后生成每个单词的词向量,向量中每个数字隐含地包含了每个单词和其他单词的某种关联程度。 国王 初始词向量--->随机生成[-0.12,0.44...]
|

国王 语料训练后词向量--->[0.8,0.6,0.3,0.9,0,0,0,…] (如“权力,公主”)是人工解释的维度含义,实际词向量的维度是模型自动学习的,没有明确标签。 每个词的词向量在大模型训练的时候确定,以后则是去查询词向量库
|
- 专用于输出「词向量」的神经网络模型就是我们所说的嵌入模型

注意力机制(Attention)
- 大模型如何理解并预测输入的内容?(苹果—–>熟了 苹果—–>手机)
- 对大模型来说也是一样的,它需要有能力去捕捉输入文本序列中的每个词汇,在上下文中有怎样的关联,表示怎样的意义。 实现这个能力的是大模型的注意力机制。

天气预报说长沙明天有暴雨”这句话 听到 “暴雨” 时,人类会自动关联或注意到 “长沙”(地点)和 “明天”(时间) 听到 “明天” 时,人类知道它修饰的是 “暴雨”,而不是前面的 “天气预报”
大模型处理: “天气预报说长沙明天有暴雨” Transformer架构会让 “暴雨” 给每个词打分(权重): 长沙(0.8):强相关(地点) 明天(0.7):强相关(时间) 预报(0.3):弱相关 其他词(0.1):不相关
|
这种「捕捉词语之间的关联」的能力 ——注意力机制(Attention)

多头注意力机制
注意:每个头关注什么维度,其实是为了方便理解。因为准确来说,注意力机制只是计算词之间关联性大小的分数
像老师分析课文会从 “语法”“情感”“背景” 多个维度进行,大模型的注意力机制也会从多个方面进行 假设多头注意力有 3 个 “小注意力” : 头 1:关注主谓宾(“长沙→暴雨”) 头 2:关注时间地点(“明天→长沙”) 头 3:关注信息来源(“天气预报→暴雨”) 每个头会学到不同的关联模式,算出不同的注意力分数,最后把结果拼起来会得到“总注意力”
|
示例
为什么向大模型提出‘从前有个国王,他有个女儿’ ,大模型能给一个还不错的回答?
第一步:拆分,得到Token 从前 | 有个 | 国王 | , | 他 | 有个 | 女儿 第二步:Token到词向量 「国王」的词向量:[0.8(权力), 0.6(城堡), 0.3(严肃)…] 「女儿」的词向量:[0.7(公主), 0.5(魔法), 0.4(冒险)…] 第三步:编码器接收词向量进行处理,结合注意力机制计算关联度 从前有个国王,他有个女儿 对这句话中的每个词(实际是向量),基于多头注意力机制,使用每个词的词向量去计算这个词在这句话中「其他词对我的重要性/关联程度」,比如“女儿”这个词 可能的 “血缘” 维度下: 「女儿」和「国王」的关联度是 90%, 「女儿」和「从前」关联度只有 10% 可能的 “叙事风格” 维度下: 「女儿」和「国王」的关联度是 85%, 「女儿」和「从前」关联度是 80% 计算后,这句话中“女儿”这个词的向量不再是只有原来词向量 「女儿」=[0.7(公主), 0.5(魔法), 0.4(冒险)…] 还会多出一个新的向量「女儿新」 ,这个「女儿新」向量中融合了 「国王」中包含的“权力”、“城堡” 等特征 以及 「从前」中包含的“童话”、“女巫”、“森林”等特征 「女儿新」= [0.9, 0.7, 0.6…] 这句话处理完成后,编码器交给解码器的至少包括: "女儿": 「女儿」=[0.7(公主), 0.5(魔法), 0.4(冒险)…] 「女儿新」= [0.9, 0.7, 0.6…] "从前": .... ... 第四步:交给解码器处理,依然会结合注意力机制 怎么续写出来的?解码器接收编码器的输出,不断计算下个词可能是什么,每次都会用注意力机制: 1、整句所有词的关联关系重新计算 2、自己已经写的前文中的每个出现的新词(比如:公主、美丽等)也要和已有的词计算关联关系 结合起来,计算下个词的概率,比如: “善良” 出现的概率35% “温柔” 出现的概率30% “邪恶” 出现的概率20% ……… 出现的概率.. 解码器续写出: 从前有个国王,他有个女儿,这位公主 从前有个国王,他有个女儿,这位公主美丽 从前有个国王,他有个女儿,这位公主美丽又 从前有个国王,他有个女儿,这位公主美丽又善良 从前有个国王,他有个女儿,这位公主美丽又善良……….
|
Transformer工作原理步骤:
- Token化:把汉字拆成积木(从前 / 国王 / 女儿)
- 词向量、词嵌入:每个积木的「性格标签」(权力 / 神秘)
- 编码器处理:分析问题,用注意力划重点(国王和女儿的关系等)
- 解码器处理:边编故事边查表,用注意力确保连贯,生成内容
- 不断生成:像玩文字无限接龙,每次参考所有历史信息,用注意力决定下一步重点