文章目录
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
你的钱包正在被Transformer"合法抢劫"
我先问各位一个问题:你上个月给OpenAI充了多少钱?别装,我都懂。那账单上的数字,比你对象购物车里的数字还刺激。
但你有没有想过,为什么你多问两句,Token就蹭蹭往上涨?为什么上下文窗口永远有个128K、200K的硬上限?为什么模型聊着聊着就"失忆",跟金鱼似的?
这些问题的答案,全藏在一个叫Transformer的架构里。今天咱们不背公式,不推导矩阵,就聊聊这个让你又爱又恨的"数字房东"是怎么收租的。
RNN:职场里最会"传话传歪"的同事
在Transformer之前,AI界用的是RNN,全称循环神经网络。这名字听起来像某种高级健身器材,实际上它最大的本事就是"传话"——而且永远传歪。
RNN处理文本的方式,跟公司里的八卦传播链一模一样。A告诉B"老板今天心情不错",B告诉C"老板今天好像挺高兴",传到E的时候变成"老板今天要裁员"。这就是梯度消失,前面的信息越传越淡,最后连渣都不剩。
更离谱的是,RNN是个"单线程生物"。第二个字必须等第一个字算完,第三个字必须等第二个字算完,跟排队上厕所似的。你花几万块买的GPU有几百个核心,它只用其中一个,剩下的全在带薪刷短视频。
RNN就像那种必须逐级审批的国企。你写个报销单,从实习生传到主管,主管传到经理,经理传到总监,总监传到VP。等批下来,发票都过期了,报销额度也忘了,最后告诉你:“这个流程走了三个月,你重新填吧。”
CNN:一个高度近视的图像冠军
CNN在图像识别领域是王者,到了文本领域就是个高度近视还拒绝戴眼镜的倔强老头。
它看文本只能看一个固定窗口,比如一次看三个字。你让它读"这个苹果看起来很红,但它是塑料做的",CNN看到"苹果"“很红”“圆的”,一拍大腿:这是真苹果!完全没看到最后那个"塑料",因为它超出窗口范围了。
想看全局信息?可以,堆一百层。但层数一多,训练难度指数级上升,跟叠罗汉似的,越高越晃。叠到五十层的时候,模型已经忘了自己为什么要叠。
CNN看文本,就像你隔着毛玻璃看对面楼的人。你能看出是个人,但分不清是张三还是李四,更看不见他手里拿的是花还是刀。然后它还特自信,指着对面喊:“那是好人!”——人家手里明明拿着刀。
Transformer:全场通吃的"社交悍匪"
然后Transformer登场了。这架构一出来,RNN和CNN直接退役,跟诺基亚遇到iPhone一个剧情,连告别演出都没给。
Transformer的核心就两个字:注意力。它不是逐字往后传,而是让每个词直接跟所有词打招呼。“银行"这个词,在"我去银行存钱"里,它一眼就看见"存钱”,知道自己是个金融机构;在"我去银行边上散步"里,它看见"边上"“散步”,知道自己是个地名。同一个词,两种人生,全靠上下文决定。
更绝的是,所有词同时计算注意力,GPU几百个核心终于不用摸鱼了,全负荷运转。训练速度提升几十倍,以前跑一周的模型,现在半天搞定。RNN看了直摇头:“年轻人不讲武德,搞偷袭。”
RNN是传话,Transformer是微信群。所有人同时在群里发言,谁跟谁有关系一目了然,不需要逐级汇报。唯一的问题是:群消息太多,手机内存不够——这就是O(n²)复杂度,后面会讲。
QKV:一场精心设计的"相亲大会"
Self-Attention里有个著名的QKV trio,很多人一看公式就头大,觉得是什么高维数学。其实特别简单,就是一场相亲大会,而且组织得比你公司团建还专业。
Q是Query,相当于男方的择偶条件:“我想找个温柔体贴、会做饭、不爱查手机的”。K是Key,相当于女方的个人资料:“我,会做饭,爱旅行,手机随便查因为里面没东西”。V是Value,相当于女方实际见面后展现出来的真实内容——比如她其实不会做饭,但点外卖速度一流。
计算过程就是:男方拿着条件(Q)去跟所有女方的资料(K)做匹配,看看谁跟自己最合拍。匹配度高的,就重点看她的真实内容(V)。匹配度低的,直接已读不回。
最妙的是,Q和K只管匹配,V管实际内容,这两件事是解耦的。就像你可以先刷简历筛选,再决定见谁,效率极高。不像某些相亲平台,资料是照骗,见面才发现是"另一种人生"。
所以当你写Prompt时,上下文就是在给模型提供K和V。你给的上下文全是垃圾,模型拿Q去匹配,匹配出来的全是垃圾,输出自然就是垃圾。这叫什么?这叫"垃圾进,垃圾出",计算机界第一定律,跟"吃了坏肚子肯定拉肚子"一样不可违抗。
多头注意力:八个专家同时会诊,还不要挂号费
单头注意力只能学一种关系,但语言是复杂的。一个词可能同时涉及语法、语义、指代、情感、位置等多种关系。就像一个病人,可能同时有高血压、糖尿病、失眠和失恋。
多头注意力就是把QKV复制多份,每份独立计算。一个头专门看语法,一个头专门看语义,一个头专门看指代,一个头专门看情感。就像八个专家同时给病人会诊,每个专家看不同的指标,最后综合出诊断结果。而且这八个专家还不要挂号费,同时工作不额外收费。
这些分工不是人为指定的,是模型自己训练出来的。有的头天然成了"语法头",有的头成了"指代头",跟员工自发形成小团体一样,领导根本没管,它们自己就把活分了。
这也解释了为什么结构化Prompt效果更好。多头注意力看到带标签的信息,就像专家看到分类好的病历,各拿各的,互不干扰。你写成一大段文字,等于把病历全揉成一团,八个专家还得先分拣,浪费Token还降低效率。结构化不是给你看的,是给多头注意力看的——它眼神不好,需要分栏。
位置编码:给每个Token发"演唱会座位号"
Self-Attention有个天生的缺陷:它不看顺序。在它眼里,"我爱你"和"你爱我"就是三个词的排列组合,没有区别。这跟某些直男看口红一样,“都是红色,有什么区别?”
这不行啊,顺序一变意思全变。所以Transformer给每个词加了个位置编码,相当于演唱会座位号。第一个词坐第一排,第二个词坐第二排,模型一看座位号就知道谁在前谁在后。
原始的位置编码是用正弦余弦函数生成的,像给每个座位设计了独特的灯光颜色。现代模型用的是可学习的位置编码,相当于座位号也是训练出来的,坐得多了自然知道哪个位置舒服,哪个位置有柱子挡视线。
但位置编码有个硬伤:模型只见过训练时的座位范围。你说支持128K上下文,但如果训练时最远只坐到4096号,后面的座位它根本不认识。就像你让一个人去管理一个他从没去过的城市,他只能凭想象。这就是为什么超长上下文后面质量会下降,不是它不想记,是它"没见过那个座位"。
三种架构:BERT、GPT和T5的"人生选择"
BERT:双向偷看的学霸,但不会说话
BERT是Encoder-Only,双向注意力。每个词既能看前面也能看后面,跟考试偷看前后桌答案一样。理解能力极强,做分类、填空、语义匹配都是满分。但它有个致命缺陷:不能生成。
因为生成必须是从左到右,看前面的词预测下一个词。BERT双向一看,等于直接看到了答案,没法做预测。这就像你让一个人同时看问题和答案,然后问他答案是什么,他只会翻白眼:“你都给我看了,还问我?”
T5:先理解再表达的"翻译官"
T5是Encoder-Decoder,先让Encoder双向理解输入,再让Decoder单向生成输出。适合翻译、摘要这种输入输出明确分离的任务。但它有两个部分要训练,协调成本高,规模扩大时不如Decoder-Only顺手。
就像一家公司两个部门,虽然专业,但沟通成本太高。Encoder说"我理解了",Decoder说"你说啥?"最后还得开个对齐会议。
GPT:只能往前看的"话痨"
GPT是Decoder-Only,单向注意力,每个词只能看前面的。它生成文本的方式就是续写:你给一句话,它接着往下编。你跟它说"今天天气不错",它接着写"适合出门走走,但记得带伞,因为可能会下雨,不过也不一定,看天气预报吧……"
对话、写代码、回答问题,本质上都是续写。你问"今天天气怎么样",模型接着写"今天天气晴朗,适合出门"。它不会思考,它只会"接着往下编"。
为什么现在大模型都用Decoder-Only?三个原因:一是Scaling效果最好,参数越大优势越明显,跟胖子越胖越不怕冷一样;二是生成和理解都能做,一专多能;三是训练目标统一,就是预测下一个Token,简单直接,不需要对齐两个部门的KPI。
所以Prompt的最后一句话特别重要。模型是接着你最后一句往下写的,你最后一句写"请用Python写个爬虫",它就往爬虫方向续写;你最后一句写"请用 Shakespeare 风格",它就往十四行诗方向续写。末尾指令就是方向盘,你方向盘打错了,它就直接开沟里。
Transformer的四大"职业病"
O(n²)复杂度:越长越贵,贵得离谱
Self-Attention的计算量跟序列长度的平方成正比。1K Token要算100万次,2K Token要算400万次,4K Token要算1600万次。128K Token?163亿次。这不是线性增长,这是平方级爆炸。
这就是为什么Token计费不是按字数收,是按"字数×字数"收。你每次多打一个字,模型都要把前面所有字重新看一遍,跟强迫症整理书架一样——每新增一本书,要把整个书架重新整理一次。
中间迷失:开会时中间发言的人,永远被忘记
Transformer对开头和结尾的信息关注度高,对中间的信息关注度低。这叫"Lost in the Middle",中间迷失。
原因很现实:开头的信息位置靠前,对所有后续的词都有影响;结尾的信息离生成位置最近,天然获得更多关注。中间的信息两边不靠,就像开会时第三个发言的人,前面第一个和后面最后一个大家都记得,中间那个?谁?他讲过什么?
所以重要信息别放Prompt中间,放开头或结尾。System Prompt放开头定基调,具体指令放结尾当方向盘。中间部分?放点无关紧要的铺垫就行,反正模型也记不住,就像你开会时中间刷手机一样,没人发现。
生成串行:一个字一个字蹦,急死个人
Decoder-Only生成Token必须一个一个来,第N个字必须等第N-1个字出来。这跟RNN的串行不一样,RNN是训练时串行,GPT是生成时串行。
所以生成速度有上限,再强的硬件也得排队。这就是为什么大模型输出要流式返回,不然用户等得以为死机了。理解是批处理,生成是流水线,速度差了一个数量级。就像你吃饭可以几口一起嚼,但说话只能一个字一个字往外蹦。
位置编码外推:没见过就是没见过,别硬撑
模型训练时见过的位置范围是有限的。你说支持200K上下文,但如果训练时最远只见过32K,后面的位置编码就是瞎猜。
各种外推技术比如RoPE、YaRN、NTK-Aware,都是在缓解这个问题,相当于给模型戴望远镜看远处。但望远镜再好,也比不上亲眼见过。这就是为什么超长上下文后半段质量总会下降,不是态度问题,是能力问题。就像你让一个人描述他从未去过的城市,他只能编。
写在最后:懂了架构,才能少交"智商税"
Transformer这架构,说白了就是用注意力机制解决了RNN和CNN的硬伤。全局视野+并行计算,让它成了大模型的唯一选择,跟智能手机取代功能机一样不可逆。
但理解它不是为了背公式,是为了知道为什么你的Prompt要结构化,为什么上下文不能太长,为什么重要信息要放开头或结尾,为什么Token越用越贵。你不懂这些,就像不懂油价机制还天天开车,每个月被加油站"温柔地"抢劫。
下次看到账单上几万Token的时候,你可以淡定地喝口茶:“哦,这是O(n²)的代价,我懂。”
然后默默把上下文清理了一下,重新发了一次。省钱,从懂Transformer开始。毕竟,在这个AI时代,知识就是金钱,而Transformer正在按平方收租。
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
459

被折叠的 条评论
为什么被折叠?



