众力资讯网

Transformer 架构详解:为什么它改变了一切

你天天用的ChatGPT,根本一个字都不认识!别不信。它不懂语法,不知道什么是词语,甚至连你输入的汉字到底是什么含义都没

你天天用的ChatGPT,根本一个字都不认识!

别不信。

它不懂语法,不知道什么是词语,甚至连你输入的汉字到底是什么含义都没概念。

从头到尾,它只会干一件事:反复做矩阵乘法。

更离谱的是,现在市面上所有叫得上名字的顶流AI,GPT-4、Claude、Gemini,不管吹得有多神,它们的核心“心脏”全是同一个。

这颗心脏,来自2017年谷歌8个工程师发的一篇论文。

整篇论文的核心观点,拢共就5个英文单词:Attention Is All You Need,翻译过来就是“注意力就是你需要的一切”。

就这短短一句话,直接把AI训练速度拉快了上百倍,之前解决不了的长文本信息丢失问题直接清零。

后来火遍全球的BERT、GPT、ChatGPT,全都是从这颗“心脏”上长出来的。

今天咱们就把这颗AI的核心心脏扒开,用大白话给你讲得明明白白,半点儿晦涩术语都不藏。

时间倒回Transformer诞生之前,那时候机器翻译用的还是叫RNN的老办法。

这方法笨得像个刚学认字的小孩,用手指着句子一个字一个字往外蹦。

读“我”,记下来,再读“喜”,再记,再读“欢”,继续记。

每读一个新字,前面记的内容就淡一分。

等它读到句子末尾的“看书”,开头的“安静”俩字早就忘得一干二净。

句子稍微长点,信息直接丢一半,这是第一个死穴。

第二个死穴更要命:它没法并行干活。

就像工厂流水线,前一个工人没做完,下一个根本没法上手。

就算你雇100个工人,也得排着队等。

那时候训练一个普通的翻译AI,动辄就得好几个月,谁耗得起?

2017年谷歌那8个工程师一拍桌子:别一个字一个字读了!

让所有字,同时互相看!

这就是Transformer最核心的思路,不需要按顺序死记,不需要攒着之前的记忆,只要搞懂“注意力”仨字就行。

你肯定好奇,不认字的电脑怎么处理文字?

第一步,先把所有文字切成最小的碎片,业内叫Token。

比如“我喜欢在安静的咖啡厅看书”这句话,直接切成7个碎片,每个碎片给个专属编号。

但编号就是个冰冷的数字,2834和7291之间半毛钱关系都没有。

第二步,做Embedding,把干巴巴的编号变成一组有意义的数字,业内叫向量。

说白了就是给每个词在“意义空间”里定个坐标,意思越接近的词,坐标挨得越近。

比如“咖啡厅”和“餐厅”几乎贴在一起,和“数学”八竿子打不着,离得十万八千里。

最神的是,这些词的意义居然能直接用数学算:“国王”减去“男人”加上“女人”,结果几乎等于“女王”。

到这步,词才从毫无意义的编号,变成了有方向、有距离、有实际含义的向量。

但很快就出了个bug。

“狗咬人”和“人咬狗”,用的字完全一样,意思天差地别。

之前的RNN一个字一个字读,天然知道顺序,根本不会搞混。

可现在Transformer是所有字同时睁眼,它哪知道谁在前谁在后?

就像开会,同样7个人,坐的位置换了,聊出来的结果可能完全不一样。

咋办?给每个字发个专属座位号,这就是位置编码。

谷歌工程师想了个绝活儿:用不同频率的正弦波叠加,就像时钟的秒针分针时针,任意时刻三根针的组合都是唯一的。

用这个方法给每个位置生成独一无二的“指纹”,加到对应的词向量上,顺序问题直接解决。

到这步,每个字都既有代表含义的向量,又有代表位置的编码,万事俱备。

接下来就是整个AI最核心的魔法环节。

你看这句话“我在苹果工作”,里面的“苹果”是吃的水果还是苹果公司?

单独拎出来谁都搞不清,可一看到后面的“工作”俩字,傻子都知道是科技公司。

一个词的准确意思,从来都不是自己决定的,是它周围的所有上下文给的。

自注意力机制要干的,就是让每个字都转头看一圈其他所有字,根据上下文更新自己的含义。

你脑补一场7个人的圆桌会议,桌上坐的是“我”“喜欢”“在”“安静”“的”“咖啡厅”“看书”。

“看书”扫了一圈所有人,发现自己和“咖啡厅”关系最紧密。

“安静”扫了一圈,发现自己最该关注的也是“咖啡厅”。

每个人聊完一圈,都把自己最在意的人的信息吸收进来,更新自己的理解,这就是自注意力。

具体怎么实现?说穿了特别简单,靠三个东西:Q、K、V。

你就把它类比成去图书馆找书。

你脑子里想的搜索关键词,就是Query(查询)。

每本书封面上印的内容标签,就是Key(键)。

书里装的实际内容,就是Value(值)。

你拿自己的搜索词和所有书的标签比对,匹配度越高的书你越仔细看,最后把最相关的几本书的内容拼起来,就是你要的结果。

放到Transformer里,每个字同时有三个身份:

它是Query:我现在要找什么信息?

它是Key:我身上有什么信息可以分享?

它是Value:我的实际内容是什么?

每个字的向量,分别乘三个不同的矩阵,直接得到Q、K、V三个向量。

拿“看书”的Q,挨个和所有字的K做比对算相似度,方向越一致,分数越高。

最后算出来“看书”的Q和“咖啡厅”的K分数最高,说明“看书”最该关注的就是咖啡厅。

所有分数除以一个常数避免数值爆炸,再过个Softmax函数,把所有分数转成加起来等于1的概率。

比如“看书”给“咖啡厅”的注意力权重是0.35,给“安静”是0.20,给“喜欢”是0.15。

一圈算完,7个字就得到7行权重,凑成一个7x7的矩阵。

最后用这个权重矩阵乘V矩阵,每个字的新向量,就全是它从其他字那里吸收来的信息。

这时候“看书”早就不是孤零零的“看书”了,它的向量里已经装了咖啡厅、安静这些相关的信息。

一次自注意力,就是所有字互相聊一轮,更新一遍自己的认知。

但一轮聊天肯定不够。

一个注意力头只能学到一种关系,可人类的语言里有语法关系、语义关系、距离关系,成千上万种。

所以搞多头注意力,就像几个人同时看一幅画:一个人盯着看构图,一个人盯着看颜色,一个人盯着看情绪,拼到一起才是完整的理解。

所有人聊完天,还得留时间独立思考。

每个字单独过一遍前馈网络,把维度先拉大4倍再缩回来,就能学到更复杂的语言规律。

怕聊的过程中信息丢了,就加个残差连接,相当于聊完还能回听最开始的原始录音,保证信息不丢。

最后再做个层归一化,相当于把所有人说话的音量统一校准,别有的太大有的太小听不清。

自注意力、前馈网络、残差连接、层归一化,这四个凑在一起,就是一层编码器。

把这一层重复堆6次,相当于连开6轮圆桌会议。

第一轮先搞清楚谁和谁有关系,第三轮摸透深层的语法规则,到第六轮直接就能提炼出抽象的逻辑和推理。

6轮开完,这句中文就被AI彻底“听懂”了。

编码器负责听懂,接下来要生成内容,就轮到解码器出场。

解码器的结构和编码器差不多,但多了两个最关键的设计。

第一个是遮罩机制。

你翻译句子的时候,刚生成第三个词,总不能提前看到后面还没生成的第四个词吧?这不相当于考试提前看答案?

所以解码器的自注意力会把所有还没生成的位置直接遮住,只能看已经写出来的内容。

第二个是交叉注意力。

解码器一边生成英文,一边得回头看之前输入的中文原句啊。

这里查询来自正在生成的英文内容,键和值来自之前编码器处理完的中文信息,就像同声传译,翻译员嘴里说着英文,脑子里还得不停回忆刚才听到的中文原句,不能翻错。

解码器最后输出的结果,过一遍线性层和Softmax,直接输出整个英文词库每个词出现的概率。

概率最高的那个词,就是AI选出来要输出的下一个字。

把这个字加到输入末尾,再跑一遍整个解码器,生成下一个字,循环往复,这就是大家常听的“自回归生成”。

整个流程走下来,一句中文“我喜欢在安静的咖啡厅看书”,最后就输出成了英文“I like reading in a quiet cafe”。

为啥2017年这篇论文能直接改变整个世界?

原因有三个:

第一是并行,所有字同时处理,训练速度直接快了100倍。

第二是长距离友好,句子第一个字和最后一个字,中间只隔了一次注意力的距离,多长的句子都不会丢信息。

第三是可堆叠,想要AI更强,你就往死里加层数、喂更多数据,性能就能稳步往上走。

最开始Transformer是专门为翻译做的,结果大家很快发现,你把解码器扔了只留编码器,让它专门练理解能力,这就是BERT。

把编码器扔了只留解码器,让它专门练生成能力,这就是GPT。

后来GPT越做越大,参数从1亿涨到15亿,再涨到1750亿,加上人类反馈微调,最后就变成了大家现在用的ChatGPT。

你现在刷到的所有AI生成的文案、代码、图片,背后的核心全是这些最朴素的数学运算:算Q和K的点积,用Softmax分配注意力,预测下一个字是什么。

它从来没懂过什么是语言,什么是语法,什么是文字。

它只会做矩阵乘法,猜下一个字。

可就是这么简单的“猜下一个字”的游戏,居然让它涌现出了写论文、调代码、甚至考过律师资格证的能力。

这背后的涌现效应到底是怎么发生的?咱们下期接着拆。

你第一次知道AI根本不认字的时候,是不是也被惊到了?