智能体的大脑 LLM 历史悠久,就像美国科学家通过动物实验研究猴子一样,今天我们解构语言大模型,看看其字里行间的魔法是如何练成的,2022 年 ChatGPT 和 2024 年的deepseek 的横空出世,整个科技圈(甚至全世界)都炸锅了!其实,机器学习研究员们捣鼓语言大模型(LLM)好多年了,只是之前大伙儿没太注意,也没想到它们能变得这么“能说会道”。
如今,几乎人人都听过LLM的大名,数千万人更是亲自上手“调戏”过它们。但说到它们内部的工作原理?嗯...知道的恐怕比能徒手修核反应堆的人还少。你可能听说过,LLM训练是为了“预测下一个词”,而且它们需要“吨级”的文本才能学会。但通常,解释就到此为止了。它们怎么预测?细节往往被当成一个“黑箱魔法”
为啥这么神秘?其中一个原因是这玩意儿造法“不科学”!传统软件是人类工程师写好的明确指令,一步步告诉电脑该干嘛。而ChatGPT呢?它建立在用数十亿语言碎片“喂”大的神经网络上。
所以,地球上没人敢拍胸脯说完全搞懂了LLM内部在玩啥。研究员们正在努力“开箱”,但这活儿慢得很,可能得花几年甚至几十年
截止到,研究人员目前确实掌握了不少线索。本文目标就是把这些知识“泄密”给大伙儿。咱们努力解释这些模型内部已知的运作方式,保证不用术语轰炸,也绝不祭出高等数学吓人。
我们将从词向量(Word Vector) 开始,这是语言模型表示和“琢磨”语言的一种神奇方式。接着深入Transformer,这是构建ChatGPT等模型的“乐高积木”。最后揭秘模型是怎么“学坏(训练)”的,以及为啥非得用海量数据才能“喂”出个好模型
1.词向量:单词的“GPS坐标” 📍
要懂语言模型,先得懂它们咋表示单词。人类用字母串,比如C-A-T代表“猫”。语言模型呢?用一长串数字列表,叫词向量。比如,“猫”可能是这样的:
[0.0074, 0.0030, -0.0105, ... (后面还有297个数字!)] (注:完整向量长度通常有300个甚至更多数字)
为啥搞得这么复杂?划重点了: 打个比方:华盛顿特区坐标是[38.9, 77],纽约是[40.7, 74],伦敦是[51.5, 0.1],巴黎是[48.9, -2.4]。这方便推理空间关系吧?纽约离DC近(坐标接近),巴黎离伦敦近,但巴黎离DC远
语言模型同理:每个词向量代表“词空间”中的一个点,意思相近的词就“住”得近。比如,“猫”的邻居可能是“狗”、“小猫”、“宠物”。用数字串(而不是C-A-T)的最大好处是:数字能玩加减乘除,字母可不行!
词向量研究搞了几十年,但2013年Google的word2vec项目让它大火。Google分析了新闻里的海量句子,找出哪些词总“扎堆”出现。训练好的神经网络就把同类词(如猫狗)放在“空间”里做邻居。
Google的词向量还有个酷炫技能:能用向量“算”关系! 比如,拿“最大(biggest)”的向量,减去“大(big)”的向量,再加上“小(small)”的向量,结果最接近的词就是“最小(smallest)”!🤯
你还能用向量做类比推理:
- 瑞士人:瑞士 = 柬埔寨人:柬埔寨 (国籍)
- 巴黎:法国 = 柏林:德国 (首都)
- 不道德的:道德的 = 可能的:不可能的 (反义词)
- Mouse (老鼠): Mice (复数) = Dollar (美元): Dollars (复数) (变复数)
- 男人:女人 = 国王:女王 (性别转换)
⚠️ 警示: 因为这些向量是从人类语言学来的,它们也“继承”了人类的偏见。比如在某些模型里,“医生(doctor)” - “男人(man)” + “女人(woman)” = “护士(nurse)”。减少偏见是个热门研究课题。
词向量是语言模型的强力地基,编码了词间微妙又重要的关系。如果模型学到“猫有时看兽医”,那这事儿很可能也适用于“小猫”或“狗”。如果它搞清了巴黎和法国(比如同语言),那柏林和德国、罗马和意大利的关系也八九不离十
2. 上下文是王道:一词多义的“变脸”绝活 🎭
前面简单的词向量方案有个大BUG:它没抓住自然语言的一个关键事实——词常常“脚踏N条船”(一词多义) !
比如,“bank”可以是金融机构,也可以是河岸。再看看句子:
- John picks up a magazine. (约翰拿起一本杂志 - 实体)
- Susan works for a magazine. (苏珊为一家杂志社工作 - 机构)
两个“magazine”意思相关但不同。语言学家管两个意思无关的叫同音异义词 (homonyms) ,意思相关的叫多义词 (polysemy) 。
像ChatGPT这样的语言模型很聪明:同一个词在不同上下文里,它用不同的向量表示! “银行(金融机构)”一个向量,“河岸”另一个向量;“杂志(实体)”一个,“杂志社(机构)”另一个。猜也猜得到,多义词的不同意思向量比较像,同音异义词的向量就差得远。
还没说模型咋做到的(马上揭晓),但强调这点很重要:词向量表示是理解LLM的关键!
传统软件处理的是“死”数据。算“2+3”?2、+、3的含义毫无歧义。但自然语言充满“坑”:
- “顾客请修理工修理他的车” – “他的”指顾客还是修理工?
- “教授催促学生完成她的作业” – “她的”指教授还是学生?
- “Fruit flies like a banana” – “flies”是动词(水果像香蕉一样飞?)还是名词(果蝇喜欢香蕉?)?
人类靠上下文解决歧义,没啥简单明确的规则。这需要对现实世界的理解:修理工修顾客的车,学生做自己的作业,水果通常不会飞...
词向量给了语言模型一种灵活的方式,在特定上下文中精准表示每个词的含义。现在,揭秘时刻到!
3. Transformer:层层剥茧的“理解流水线” 🏗️
ChatGPT(GPT-3)背后是几十层神经网络。每一层吃进一串向量(输入文本每个词一个),然后添油加醋(信息) ,澄清词义,更好地猜下一个词。
举个简化栗子🌰:
假设输入是“John wants his bank to cash the...”。底部是初始词向量(类似word2vec)。传进第一个Transformer层(Google 2017年里程碑论文提出的神结构)。
- Transformer层1: 发现“wants”和“cash”都是动词(它们也能当名词)。它修改词向量存下这信息(人类难懂)。新向量叫隐藏状态 (hidden state) ,传给下一层。
- Transformer层2: 添加更多料:澄清“bank”是金融机构而非河岸;“his”指代John。产生更新的隐藏状态向量,包含之前学到的所有信息。
(上图是极简模型,真实LLM层数多得多。比如最强GPT-3有96层!😱)
研究表明:
- 底层: 专注语法和解决歧义(如上所示)。
- 高层(图中未显示): 致力于理解整段话。当LLM“读”故事时,它似乎在记忆角色信息:性别年龄、关系、位置、性格目标等。信息在各层间传递时,靠修改隐藏状态向量实现。
现代LLM的向量维度巨大(利于表达丰富信息)。GPT-3最强版用12288维词向量!比2013年word2vec大20倍!这些额外维度可看作GPT-3记录词上下文的“草稿纸”。前面层的笔记能被后面层读写修改,模型对文本的理解就层层加深了。
所以,想象一个96层模型读1000字故事:
- 第60层的“John”向量,可能编码着“(主角,男,娶了谢丽尔,唐纳德的表弟,来自明尼苏达州,目前在博伊西,正找丢失钱包)”。
- 这些事实(可能更多)就藏在“John”那个12288个数字的列表里!或者,部分信息也编码在谢丽尔、唐纳德、博伊西、钱包等词的向量里。
最终目标:让最后一层(如第96层)输出包含所有必要信息的隐藏状态,来预测下一个词。
4. 注意力机制:单词间的“大型相亲(信息交换)现场” 💘
现在聊聊每个Transformer内部。Transformer更新每个词的隐藏状态分两步走:
- 注意力步骤: 单词们“东张西望”,找有相关背景的词,彼此交换信息(八卦) 。
- 前馈步骤: 每个词“独自思考”刚交换来的信息,尝试预测下一个倒霉词是谁。
(当然,干活的是网络,不是单个词。这么说只为强调Transformer以词为基本单位分析,方便GPU并行处理长文本。)
注意力机制像单词间的“红娘服务” :
- 每个词写个“征友(查询)启事 (Query Vector)”,描述它想找啥样的词。
- 每个词也写个“自我介绍 (Key Vector)”,亮明自身特征。
- 网络比较每个Key和每个Query(算点积),速配成功!匹配后,信息就从Key词传给Query词。
例如,前面假设模型中,“his”的Query可能是“寻:指代男性的名词”。“John”的Key可能是“我是:指代男性的名词”。网络检测到匹配,就把关于John的信息塞给“his”的向量。
每层都有多个“注意力头 (Attention Heads) ”,意味着信息交换并行发生多次,每个头专注不同任务:
- 头A:专管把代词(如“his”)和名词(如“John”)配对。
- 头B:专治多义词“bank”的“精分”。
- 头C:负责把“Joe Biden”这种词组绑在一起。
...等等。
注意力头们常接力干活,一层的结果是下一层的输入。GPT-3最大版有96层 x 96个头 = 每次预测新词,要做9216次“相亲”操作! 💥
5. 现实案例:为啥是给“Mary”饮料? 🥤
前面是理想化描述。现在看个真实研究(Redwood Research团队分析GPT-2):
输入:"When Mary and John went to the store, John gave a drink to..."
GPT-2预测下一个词是“Mary”。研究发现三种注意力头立功了:
- 名称移动头 (Name Mover Head) x 3: 把“Mary”的信息复制到最后一个词(“to”)的向量。GPT-2用这个最右向量信息预测下个词。
- 主语抑制头 (Subject Inhibition Head) x 4: 标记了第二个“John”向量,阻止名称移动头复制“John”。
- 重复标记头 (Duplicate Token Head) x 2: 标记第二个“John”是第一个的重复副本,帮主语抑制头决定不该复制John。
精炼版: 这9个头让GPT-2明白“John给了John一杯饮料”太诡异,于是选了“John给了Mary一杯饮料”。
这例子也说明完全理解LLM有多难!Redwood团队5个人发了25页论文才解释清这几个头。即使这样,离完全搞懂GPT-2为啥选“Mary”还差得远呢!
如果句子变成“...John gave his keys to...”,逻辑下个词应是“the valet”(代客泊车员)。解释这种变化又得海量研究。
ChatGPT背后的GPT-3/4比GPT-2更大更复杂,能做更牛推理。彻底解释这些系统?是个超级工程,短期内人类搞不定。 🤯
6. 前馈网络:单词的“独立思考”时间 🤔
注意力头们交换完“八卦”,前馈网络就让每个词“闭关思考”。这阶段词之间不聊天,前馈层独立分析每个词向量(但能读取注意力头传来的信息)。
想象一个神经网络(一堆互相连的“神经元”小圆点)。GPT-3的前馈层规模恐怖:
- 输入层:12288个神经元(对应12288维向量)。
- 隐藏层:49152个神经元!每个有12288个输入连接(12288个权重)。
- 输出层:又是12288个神经元,每个有49152个输入连接(49152个权重)。
- 单层参数 = (49152 * 12288) + (12288 * 49152) ≈ 12亿!
- GPT-3有96层 → 前馈层总参数 ≈ 1160亿! 占1750亿总参数的大头!
特拉维夫大学研究发现,前馈层干的是模式匹配的活儿。隐藏层神经元各自匹配输入文本中的特定“套路”(低纬度干实事,高维度的玩套路):
- 低层神经元:匹配具体词结尾(如“substitutes”)。
- 中层神经元:匹配主题相关词(如军事+“base/bases”)。
- 高层神经元:匹配更抽象模式(如时间范围“3pm-7pm”,或电视节目元数据)。
模式越抽象,说明前馈层能从单个词向量里“读”出之前注意力头塞进来的丰富上下文。匹配到模式,神经元就向词向量添加信息(常是临时预测)。
7. 向量运算再现:前馈层的“类比小抄” 📝
布朗大学研究展示了前馈层如何优雅预测下个词。还记得Google word2vec用向量做类比吗(柏林-德国+法国=巴黎)?布朗团队发现前馈层有时一模一样干这事!
例子:给GPT-2输入:
"Q: What is the capital of France? A: Paris. Q: What is the capital of Poland? A:"
团队监控了24层GPT-2每层输出:
- 前15层:猜的词像抽签。
- 16-19层:开始猜“Poland”(不对但接近)。
- 第20层:最高概率答案变成“Warsaw”(华沙)! 并保持到最后。
精炼版: 第20层前馈网络给“Poland”向量加了个“国家->首都”映射向量,把它变成了“Warsaw”。同样操作,输入“China”就得“Beijing”。同一个模型的前馈层还能做大小写转换、动词时态变换(如现在时->过去式)!
8. 分工明确:注意力 vs 前馈 👯♀️
总结两个例子:
- Redwood例子 (John给Mary饮料): 注意力头立功(“Mary”信息在提示里)。
- 布朗例子 (波兰首都): 前馈层立功(“华沙”信息不在提示里,是模型“记”住的)。
看出分工了吗?
- 注意力机制: 像搜索引擎,从提示的早前部分检索信息。
- 前馈层: 像知识库,让模型“记住”训练数据里学来、但提示里没出现的信息。
前馈层靠前可能记简单事实(如“特朗普常在唐纳德后出现”)。靠后则存复杂关系(如“加这个向量把国家变首都”)。
9. “喂”模型:海量文本的“填鸭式教育” 📚🍽️
许多早期机器学习需要人工标注数据(如图片标“猫/狗”)。弄大数据集又贵又难。
LLM的关键创新是:它们不用标注数据! 它们通过预测文本片段的下一个词来学习。几乎任何书面材料都能“喂”它——维基百科、新闻、代码都行。
例如,给LLM输入“I like my coffee with cream and ___”,让它猜“sugar”。刚开始的模型猜得稀烂(参数基本是随机数)。
但随着模型“吃”掉更多例子(几千亿词! ),参数被慢慢调教得能猜得更准。
训练过程比喻(松鼠水管工版🐿️🔧):
想象给50257个水龙头(对应每个可能的词)调水温。目标是只让正确下一个词的水龙头出温水。但水管后面阀门巨多(1750亿参数!),错一次就得派松鼠大军沿着管道调阀门(调参)。传统水管工早疯了,但计算机靠摩尔定律真能这么干!
训练分两步:
- 前向传播: 开水,看水从哪个龙头出来(对输入做预测)。
- 反向传播: 关水,松鼠(算法)沿管道狂奔,根据错误拧阀门(用微积分算每个参数该调多少)。
完成一次(一个例子的前向+后向)需数百亿次运算。像GPT-3这种巨模,需对训练数据里每个词重复几十亿次!OpenAI估计训GPT-3花了 >3000亿亿次浮点运算——几十个顶级芯片跑几个月!💸💸💸
10. GPT-3的“惊人才艺秀”:规模即魔法 ✨
你可能会惊掉下巴:这么简单的学习机制,咋能造出ChatGPT这种能写文章、玩类比、甚至撸代码的“怪物”?
一个词:规模! GPT-3“吃”了约5000亿词。对比一下,10岁小孩大概只接触过1亿词。
过去5年,OpenAI不停把模型做大。2020年论文指出,模型能力(语言任务准确性)与模型规模、数据规模、算力呈幂律关系(越大越好,且好得超线性)!
模型越大,语言任务越牛——前提是喂更多数据,烧更多算力。
OpenAI的“养成”史:
- GPT-1 (2018): 小不点。768维词向量,12层,1.17亿参数。
- GPT-2 (2019): 长大点。1600维,48层,15亿参数。
- GPT-3 (2020): 巨无霸。12288维,96层,1750亿参数!
- GPT-4 (2023): 保密,但公认更大更猛。
每代不仅“知道”更多,在需要抽象推理的任务上也更强。
栗子🌰:心智理论 (Theory of Mind - ToM)
-
任务: 理解他人可能有错误信念。例如:爆米花袋错标“巧克力”。山姆没见过袋子,读标签。她相信袋里有啥?(巧克力!)。
-
Kosinski 研究结果:
- GPT-1 & GPT-2: 扑街。
- 初版GPT-3 (2020): 正确率~40% (≈3岁娃)。
- 新版GPT-3 (2022): 正确率~90% (≈7岁娃)。
- GPT-4: 正确率~95%。
-
Kosinski 观点: “鉴于ToM并非有意设计进去...这能力很可能是模型语言能力增强后自发涌现的副产品。”
(注意:研究者对LLM是否有真正心智理论有争论,担心是“聪明汉斯效应”。但GPT-3在多项ToM任务接近人类水平,几年前不可想象,且符合“越大越聪明”趋势。)
这只是LLM展现“涌现”高级能力的例子之一。微软研究甚至暗示GPT-4展现出通用人工智能(AGI)的早期火花。例如,用户让GPT-4用超冷门图形语言TiKZ画独角兽,它吐出的代码真能生成个粗糙独角兽!更牛的是,当研究员修改代码去掉角再让它加回去,它把角放对了位置!🤯(尽管训练数据纯文本)。
目前,没人真懂LLM咋做到的。 有人认为模型开始“真懂”词义;有人坚持它们只是“随机鹦鹉”(复读复杂词序)。这涉及深奥哲学争论。
但关键是:如果一个模型能在排除干扰后,持续答对某类问题,无论它是否“真懂”,这都是惊人成果!
训练“预测下一个词”如此有效,可能因为:
- 语言本身可预测,且常映射现实世界规律。学词关系常隐含学世界关系。
- 预测是智能核心。有理论认为人脑也是“预测机器”。好预测需要好表征(准确“地图”)。预测下一个词迫使模型学出有用的词表征,避开了设计表征的理论难题。
结论: 给足数据和算力,语言模型通过“死磕”下一个词预测,就能学会人类语言的运作方式。代价是:得到的系统内部像个“魔法黑箱”
引用链接: