盘一盘,2017年Transformer之后,LLM领域
从Transformer到ChatGPT,八年论文路我踩过的坑比代码还多
前几天刷到Karpathy的演讲,他笑眯眯说“软件3.0”的时候,我猛地坐直了。你看,自然语言变成编程接口,AI自己干活——这话放在2017年,我肯定当场笑出声:“做梦呢?”结果现在你再看,嘿,脸被打得啪啪响。
我是2016年底一头扎进NLP的。那时候搞机器翻译,用的还是LSTM,训练一个模型要整整一周。一周啊!等你调完参,这周都快过完了。输出还经常飘,稀里糊涂给你编几个词。后来Transformer那篇《Attention Is All You Need》出来了,论坛上都在吹,我心里想:又是个噱头吧?直到我自己动手复现了一遍……你猜怎么着?跑出来那一刻,我盯着屏幕,差点喊出来。——我去,这玩意儿是真的! 从那以后我就跟磕了药一样,一篇一篇追论文,撞过的南墙比写过的代码还多。
今天就按我自己的血泪史,把2017年之后那些真正改变游戏规则的论文拎出来聊聊。不是给你列清单啊,我顺带说说当时读它们时的真实反应,以及后来实操的时候摔得有多惨。
第一步:那篇封了神的论文,我第一次读完觉得“就这?”
《Attention Is All You Need》(2017),圈内已经封圣了。可我第一遍刷完,心里就三个字:就这?公式真不复杂,核心就是那套自注意力机制。我当时最兴奋的点是:这玩意儿能并行啊! LSTM那种一个词一个词往后传,碰上大规模数据简直要命,Transformer一上来就把这个问题干碎了。
但是!你自己上手试试?全是坑。我第一次按论文里的图搭结构,loss死活不降。调了两天,最后发现是Layer Normalization的位置搞错了。论文图里画的是Post-LN(先过注意力再归一化),但实际稳定好用的是Pre-LN。后来谷歌自己2020年发了篇《On Layer Normalization in the Transformer Architecture》才把这事讲清楚。嗯,那两天掉的头发已经长不回来了。
说真的,新手千万别只盯着论文里的图看,一定要去读代码。我当时对着Hugging Face的实现一行一行捋,才把那些虚线框里的猫腻看明白。还有一个巨实用的建议:如果你要做文本生成,直接上Decoder-only结构,把编码器那一半砍掉——后面你会少摔无数个跟头。
影响? 不用我多说了。没有Transformer,就没有后来的GPT和BERT,你现在正在用的ChatGPT也得打回原形。它让“一个架构通吃所有任务”这事儿变成了现实。
第二步:2018年夏天,两条完全不同的路炸出来了
那一年,OpenAI和Google像约好了一样,前后脚扔了两枚炸弹。
GPT-1选了Transformer的解码器,从左到右单向预测下一个词。BERT选了编码器,用Masked Language Model做双向理解。当时各大论坛上一边倒地吹BERT:双向肯定比单向强啊!而且BERT一口气在GLUE上刷了11个任务,风头无两。我也跟着用BERT做了一堆分类和匹配,效果确实杠杠的。
但我当时多了个心眼:GPT-1是一个能生成文本的模型,BERT呢?说白了它只能做理解。你让它写个段子?它只会给你填空。
后来我就踩了一个天坑:有一次想用BERT做故事续写。搞了半天发现,这玩意儿就不是干这个的!强行上Mask策略,生成效率低到令人发指,产出的东西逻辑完全连不上。最后换回GPT-2,一个batch搞定。你想想,架构选错了,后面再怎么调也救不回来。
所以记住:任务重点是“读懂”(情感分析、实体抽取)→ BERT类模型;任务重点是“生成”(写文章、翻译、对话)→ GPT类模型。别跟任务对着干,这是用头发换来的教训。
第三步:参数堆上去,世界变了——GPT-2(2019)和GPT-3(2020)
GPT-2刚出来的时候,OpenAI还捂着不敢全发,说怕被滥用。我当时将信将疑,结果自己把那个1.5B参数的版本跑起来——输入一句“在一个晴朗的早晨,小明去上学”,它给你编出了一篇像模像样的小说!那是我第一次直观感受到:尺度就是能力。 你什么微调都不用做,它自己就懂了。
到了2020年,GPT-3带着1750亿参数直接把整个领域打蒙了。论文标题就叫《Language Models are Few-Shot Learners》。关键在于:模型大到一定程度,你给几个例子它就懂了,根本不用微调。这个“上下文学习(In-Context Learning)”的概念直接催生了后来的prompt engineering。
我在GPT-3的API上玩了大半年,最深刻的感受是:你以为它懂了,其实它只是碰巧对了。 同一个prompt,temperature设成0和0.7,输出可能一个天上一个地下。有次我写了个zero-shot分类prompt,测试集30个样例准确率90%,兴奋得不行。结果换一批数据直接掉到50%——后来才发现是示例的顺序在作怪。模型对前几个例子特别敏感,换一下顺序效果就崩了。
现在我做few-shot评测,必跑至少5次不同的示例顺序,取平均值。prompt模板也要做消融实验。有时候一个标点符号变了,准确率能波动5%。你说玄不玄?
为什么这篇论文重要? 它确立了一个概念叫“Scaling Law”——算力+数据+参数往上堆,模型能力就是会一直涨。当时好多人说这是暴力美学,可你回头看看,它直接把AI的研究方向拉向了“大”这条路,彻底回不去了。
第四步:教会模型说人话——RLHF(2017/2022)
其实人类反馈强化学习(RLHF)的论文早在2017年就发了,但当时没几个人当回事。直到OpenAI在2022年把它用到InstructGPT(以及后来的ChatGPT)上,大家才惊呼:还能这么调教模型?
我自己用原始GPT-3的感受特别深:它能写通顺的句子,但经常是废话连篇,没重点,还夹带一堆偏见。经过RLHF对齐的版本就跟换了个人似的,至少知道什么时候该说重点,什么时候该闭嘴。
实操的时候,RLHF的门槛高得吓人。 需要大量人工标注偏好数据,而且训练起来极其不稳定。我去年试着在一个小模型上复现,结果reward model训飞了,policy直接学成生成乱码来骗取高reward。查了一圈才发现是reward normalization没做。你想想,光这一个细节没注意,整个模型就疯了。
用接地气的话说:预训练是让模型学会“话该怎么说”;指令微调是让模型“听懂指令”;RLHF是让模型“说出你想听的话”。三者缺一不可。但说实话,RLHF目前还是带点玄学成分,大家边用边摸索。
第五步:百花齐放,论文已经追不上了
GPT-3之后,LLM领域正式进入军备竞赛。2021年ViT把Transformer引入视觉,CLIP实现了图文对齐;2022年Chinchilla提出“数据比参数更重要”,Llama系列让开源社区终于有了能打的模型;2023年GPT-4杀了个多模态回马枪,各种端侧模型也卷起来了。
现在发论文的速度已经远远超过你读论文的速度。如果你不是专门搞这个的,别每篇都读,只选那些“改变了游戏规则”的。
如果你真想入坑,我建议按这个顺序读
1. 先读Transformer原始论文,同时跑一个最小实现(网上有现成的notebook,别死啃公式,动手跑一遍全懂了)。
2. 然后读GPT-1和BERT,对比理解Encoder-only和Decoder-only到底差在哪。
3. 接着读GPT-3,重点关注Scaling Law和In-Context Learning那两段。
4. 最后读InstructGPT或者Llama 2的论文,搞清楚RLHF和指令微调是怎么实际落地的。
读的时候一定动手,动手,动手! 论文里写“我们做了数据清洗”,你没做,效果必定渣;论文里写“用了梯度积累”,你不懂,显存绝对炸。光靠眼睛看是学不会的。
另外推荐一个偷懒方法:结合Karpathy的演讲视频来看,他讲得比论文生动一百倍。还有3Blue1Brown的动画,把Transformer内部机制可视化,比干啃公式友好太多。
最后说句掏心窝的话
从2017年到2025年,八年时间。我们从一开始连翻译都做不利索的架构,一路走到了能写代码、能画图、能陪你聊天的AI。每篇关键论文都不是孤立的,它们是一块块踩在前人肩膀上垒起来的石头。
读论文别只盯着结论。去想想作者当时面临什么问题,为什么要这么设计——那才是论文里最值钱的东西。
真正值钱的,从来不是那条路,而是铺路时踩过的每一个坑。
读者评论 5