导读:本材料真正要解决的问题
讲座开场,Karpathy 用 7 年前在 Stanford 读博、随后去 OpenAI、Tesla、又回到 OpenAI(讲座时刚回去一周)的个人轨迹,定位自己是「爱 hack 的人」。他强调被邀请做 keynote 不是因为任何一项具体工作,而是「因为我爱 hack」。副项目清单——ConvNet.js(JavaScript 神经网络库,「for the lols」)、ImageNet 的参考人类标注员(花一周把图像分到 1000 类含 200 种狗)、活动追踪 app、Archive Sanity Preserver、博客(《The Unreasonable Effectiveness of Recurrent Neural Networks》)、YouTube 频道、minGPT/nanoGPT——都在铺垫同一个判断:
核心判断(来源事实)。 「从来没有比今天更有趣的 hack 时刻」。理由是:编程正在快速变化,而台下的听众是「探索新景色的探险者」。所有 DALL-E 生成的 hacker 图片都穿连帽衫,所以他自己也带了一件——这是他给「新编程范式」定的视觉基调。
这条主线随后被拆成三段范式演进 + 一段架构解剖。本讲义按教学逻辑重建:先用三节讲清三种「编程」各自是什么、各自撞上了什么墙;再用两节讲 Transformer 是怎么从 2017 年一篇机器翻译论文里长出来的、它的注意力机制到底在做什么;最后用 nanoGPT 的代码把抽象机制落地,并解释为什么这套架构能赢。
主线讲义:按教学逻辑重建
Software 1.0:用指令编程,以及它撞上的墙
但 1.0 范式在几类问题上「看到裂缝」:
- 图像识别:猫在图片里可以呈现无数种形态,无法写出「识别猫」的显式算法。
- 下棋:很难只靠显式指令写出一个好的下棋程序。
- 自动驾驶:autopilot 无法仅靠指令罗列实现。
- AGI:通用人工智能「不可能靠给计算机拼写出规则来建造」。
Software 2.0:神经网络作为新编程栈与数据引擎
2.0 的编程方式是数据引擎(data engine),这是他在 Tesla 五年的工作:准备数据集$$训练网络$$部署$$遥测/监控$$收集网络困惑的样本$$标注$$部分入测试集、部分回训练集$$循环。Karpathy 明确:2.0 不是替换 1.0,而是叠在 1.0 之上——你仍然需要大量 1.0 代码来「编译」你的 Software 2.0。
关键细节复原。 典型迁移:计算机视觉从「写算法」变成「一个巨大的 convnet」;下棋从「写引擎」变成「强化学习问题」(赢=+1,输/平=$-1$,训练网络识别好局面与好动作);语音从「写识别管线」变成「大数据上训练的大网络」(如 Whisper)。
Software 3.0:用提示编程,LLM 作为通用计算机
范式对比(Karpathy 的总结):Software 1.0 = 设计算法(70 年);Software 2.0 = 设计数据集(约 5--10 年);Software 3.0 = 设计提示(近 2--3 年)。
提示工程的力量:从 17% 到 82%
内容复原(来源事实)。 一道杂耍球算术题,直接问 LLM 答案是错的(8,不正确)。问题不在模型能力,而在提示方式:
- 直接问:准确率约 17%。
- 「Let's think step-by-step」:跳到 78.7%。
- 「Let's work this out in a step-by-step way to be sure we have the right answer」:82%。
这引出他的「IQ 200 人设」例子:问「为什么会下雨」,模型模仿互联网平均回答;但提示「让 IQ 200 的人来回答」会更好——因为你在缩小预测分布的切片。
在 ChatGPT 脑子里建一台虚拟机
内容复原(来源事实)。
- Linux 终端:让 ChatGPT 扮演 shell,输入 pwd 返回 /,ls 它会幻觉出一个文件系统(全程发生在语言模型内部,没有真实计算机),cd 进目录、用花括号英语让它建 jokes.txt 并写入笑话,随后 cat 能读回内容——模型在「记住」自己虚构的文件系统。
- 运行 Python:在模型脑子里跑 Python 程序,能得到正确答案。
- ping bbc.com:能模拟出像样的延迟数字(约 24.9ms),但他核实后发现返回的 IP 地址根本不存在——模型在编造看似合理的细节。
- 智能家居大脑:用纯英语描述房屋结构(St Albans, UK)与 JSON schema,模型就能把「让孩子再读 20 分钟书再关灯」翻译成带时间戳偏移的 command JSON。
- GPT's All I Need for Backend(Scale hackathon 第一名):后端没有 Python 代码,只有一个大 LLM;前端发「删掉最后两条待办」,LLM 直接操作 JSON 状态并返回新状态——「全靠英语」。
- Bing Sydney 提示:疑似被泄露的 Sydney 系统提示,全用英语规定人格、输出格式、安全边界——「你在用文本编程这个聊天机器人」。
Karpathy 还补了一个跨领域的观察:提示也是你编程人类的方式——想让人类做事,你也是给一段提示。于是技术正在向人类自身收敛。他建议想上手的人直接用 OpenAI API,并自嘲「我这么说不是因为我在那儿工作,而是因为我在那儿工作所以我这么说」。
Software 3.0 之后:未来方向的零散预判
关键细节复原。
- Scratchpad / 外部记忆:教 transformer 在提示里有「记事本」——用 start_scratchpad/end_scratchpad 标签把要记的东西写出来,解码时用特殊逻辑把内容存到外部、允许它 attend。就像人类学会用便签:不必全记在脑子里(上下文窗口),可以查询外部笔记本。
- 通用 agent:能做多任务、多输入预测的系统(如 AutoGPT)会更多。
- 领域专用模型:可能出现 doctor GPT、law GPT 等只在某领域数据上训练的模型,配合 mixture of experts——就像你找不同专家咨询不同需求。
- 缺失的成分:外部长期记忆(ChatGPT 的交互是短命的,没有长期记忆与存储对话的能力)。
Transformer 跨领域:万物皆可切块丢进去
内容复原。 Transformer 被以「有些荒谬」的方式应用到各领域:
- 视觉(ViT):把图像切成小方块(patches),直接喂进 transformer encoder,patch 之间互相 attend。最简单情况下 transformer 甚至不太知道这些 patch 来自哪里,要靠位置编码重新发现结构。但「这个简单基线 work 得相当好」。
- 语音(Whisper):把 mel 频谱图切成小片喂进 transformer,假装在处理文本,「copy-paste transformer」。
- RL(Decision Transformer):把状态、动作、奖励当成一种「语言」来建模序列,之后可用于规划。
- AlphaFold:计算核心也是 transformer。
Transformer 的历史谱系:从语言模型到「注意力是全部」
2012 年之前:每个领域一套词汇表
内容复原。 2011 年左右做计算机视觉,一篇论文会用三页罗列「特征描述符动物园」:sparse SIFT 直方图、SSIM、颜色直方图、textons、tiny images、几何特定直方图$$提取全部特征后上面接一个 SVM。去 poster session 每人都推自己最爱的特征。这套东西「是个噩梦」,而且「还不好用」。
更糟的是每个 AI 子领域有完全不同的词汇:读 NLP 论文会撞上 part-of-speech tagging、形态分析、句法分析、共指消解、NP/VT/JJ,领域之间无法互通。
2012:规模化打破算法迷信
Osindero 等人证明:在大数据集上规模化大神经网络能得到极强性能。此前大家迷信算法,此后发现「不用太担心算力和数据,scale 上去就 work」。这套配方随后被复制到 CV、NLP、语音、翻译、RL 各领域,论文变得能互相读懂。
2017:架构收敛到单一
Transformer 的直系家谱
内容复原(带 provenance)。
- 2003(Bengio 等):首次把神经网络用于语言建模——用 MLP 拿三个词预测第四个词,最早的神经语言模型。
- 2014 seq2seq:机器翻译的关键问题——英文和法文词数都不定,怎么处理变长输入?用 encoder LSTM 逐词读取建上下文,再作为 conditioning vector 喂给 decoder LSTM 逐词生成。
- 2014 Bahdanau「Neural MT by Jointly Learning to Align and Translate」:seq2seq 的致命问题是encoder 瓶颈——整句英文被压进单一向量传给 decoder,信息太多塞不下。这篇提出软注意力:解码时可回看 encoder 的隐状态,用 softmax 加权求和得到上下文向量。
- 2017「Attention Is All You Need」:把 Bahdanau 里只是「一小段」的注意力提出来,删掉所有 RNN,只留注意力。
2017 论文为什么是里程碑
关键细节复原。 Karpathy 认为 2017 这篇不是「加一个东西就更好」的增量论文,而是多个东西以独特方式组合、并在架构空间里「找到了一个很好的局部最优」:
- 删除所有 RNN,只留注意力(因为注意力原生处理集合,所以必须额外加位置编码)。
- 引入残差连接(residual)。
- 在注意力之间穿插 MLP。
- 用 layer norm(来自另一篇论文)。
- 多头注意力(multi-head,并行)。
- 给了一组沿用至今的好超参——MLP 的 4$$ 扩展因子「卡到现在没动」。
唯一真正改掉的是 layer norm 的位置:从 post-norm 挪到 pre-norm。除此之外,今天的 GPT 基本就是 2017 架构。位置编码方面,rotary/相对位置编码更常见了,但整体「极其 resilient」。
在上下文里学习:meta-learning 的内外两个循环
内容复原(学习解释)。 这里有两个循环:
- 外循环(outer loop):用随机梯度下降训练网络权重——这是常规训练。
- 内循环(inner loop):transformer 在消费一个序列(读提示)时,激活值里发生了某种看起来像梯度下降的学习。
有论文提出 transformer 实现了「raw operator」,并在此基础上实现了 ridge regression。Karpathy 给了一个手波式论证:梯度下降 = 前向、反向、更新;这看起来像 resnet(不断加到权重上);transformer 本身就是 resnet——所以「在激活值里做梯度下降」并非不可想象。
Transformer 同时优化了三个性质
注意力机制:通信与计算,图论视角
这是 Karpathy 自认「和别人讲法不同」的部分——他把注意力解释为有向图上的消息传递。
注意力 = 有向图上的消息传递
内容复原。 想象一个有向图,每个节点存一个向量(私有信息)。每个节点还能通过线性变换发出三种东西:
- Query (Q):我在找什么。
- Key (K):我有什么。
- Value (V):我愿意传递什么。
通信时:遍历每个节点,它拿出自己的 Q;所有指向它的邻居广播各自的 K;Q 和 K 做点积得到「兴趣度/亲和力」分数;softmax 归一化成权重;用这些权重对邻居的 V 做加权和,更新自己的表示。每个节点独立做,最后一起更新。
用公式写就是:
\[ Attention(Q,K,V) = softmax\!(QK^d_k)V \]
头、层、自注意力 vs 交叉注意力
encoder / decoder 的图连通性
内容复原。
- Encoder:所有 token 互相全连接,可以反复「看彼此」搞清楚里面有什么。
- Decoder:因为是语言模型,不能看未来的 token(会泄露答案),所以是三角结构——第 $i$ 个位置只能被前 $i-1$ 个位置和它自己指向。再额外接收来自 encoder 顶部的全连接(cross-attention)。
nanoGPT:把机制落进 300 行代码
Karpathy 用自己写的 nanoGPT(复现 GPT-2,OpenWebText,单节点 8 GPU 跑 38 小时,「300 行可读」)把抽象机制落地。
数据侧:从文本到整数批次
内容复原。
- 用 Tiny Shakespeare(1MB,真莎士比亚拼接)训练语言模型,目标是「产生假莎士比亚」。
- 第一步分词:把每个字符映射成整数(最简单情况),得到一个超长的一维整数序列。多文档时用特殊 end-of-text token 在文档之间切界。
- block size(如 8)= transformer 能处理的最大上下文长度;batch size(如 4)= 并行处理的序列数,越大越能吃满 GPU。
- 一个 4$$8 的批次里,每一行是独立序列;真实样本数其实是 $B T$——沿时间维每个位置都是一个「上下文逐渐增长」的预测任务(输入 47$$目标 58;输入 4758$$目标 1$$)。批次间独立,时间维也并行训练。
模型侧:GPT 类的前向传播
Block 内部:通信 + 计算
关键细节复原。 每个 block 仍是两阶段:
- 通信(causal self-attention):从残差路径取出 $X$,过 layer norm,做自注意力让 8 个节点互相通信。注意 batch=4 时是 4 份独立的 8 节点通信,batch 维不交叉。
- 计算(MLP):每个节点独立过一个两层网络(GELU 非线性),做特征变换。
因果自注意力的实现细节
内容复原。 之所以「最难的部分」,是因为 batching 和防止看到未来的掩码实现很绕:
- 从 $X$ 算出 Q、K、V。
- Q @ K:所有 batch、所有 head、所有时间维并行做点积(最终是 5 维张量:batch、head、time、feature)。
- masked_fill:把不该通信的位置填成 $-$,这样 softmax 后权重为 0——第 5 个位置只能 attend 到 1--4 和自己。
- softmax 得到权重$$@ V = 按亲和力加权和汇聚信息。
- 转置、contiguous、view 把 5 维张量拼回来(「没做任何实质,只是排布很乱」),可选 dropout,线性投影回残差路径。
生成:自回归与 block size 裁剪
从 decoder-only 改出 encoder 与 cross-attention
为什么 Transformer 赢了:RNN 的三个死穴
内容复原。 Karpathy 评 RNN:原则上能实现任意程序(有表达力),但这是个「没用的陈述」,因为 RNN不可优化、不高效。RNN 是「很长很窄的计算图」,反向传播要走的步数太多。而 Transformer 是「浅而宽」的图,从监督信号到输入只有很少几跳,沿残差路径走(梯度流得顺),有 layer norm 控制激活的尺度,而且可以全并行——不需要像 RNN 那样先处理第一个词、再第二个、再第三个。
逐段细读地图
00:00--04:30:开场与个人轨迹
内容复原。 Karpathy 自述轨迹:Stanford PhD(7 年前,做图像-自然语言早期神经网络,像今天的 CLIP / 早期 image captioner)$$ OpenAI(生成式图像模型,32$$32 像素,6 年前引以为傲)$$ Tesla(autopilot 神经网络)$$ 回到 OpenAI(讲座时刚一周)。副项目:ConvNet.js(for the lols)、ImageNet 参考人类标注员(1 周,200 种狗)、活动追踪 app、Archive Sanity Preserver、博客、YouTuber、minGPT/nanoGPT。
04:30--09:00:Software 1.0 与其极限
内容复原。 编程 = 写指令(70 年)。例子:C++、Donald Knuth、Linux。撞墙:猫识别、下棋、自动驾驶、AGI。「我们看到了需要新的编程方式。」
09:00--16:00:Software 2.0 与数据引擎
内容复原。 神经网络 = 新编程栈。源码=数据集,编译=训练,二进制=权重。数据引擎闭环:数据集$$训练$$部署$$遥测$$收集困惑样本$$标注$$回训练/测试集。不是替换而是叠在 1.0 之上。迁移案例:CV(convnet)、下棋(RL)、语音(Whisper)。
09:00--19:00:Software 3.0、提示工程与「ChatGPT 虚拟机」
内容复原。 LLM 万亿参数训完互联网后的「神奇」。few-shot(GPT-3)。提示工程:step-by-step 17%$$78.7%$$82%。IQ 200 人设。ChatGPT 扮演 Linux 终端(幻觉文件系统)、跑 Python(正确)、ping(IP 假)、智能家居 JSON、GPT's All I Need for Backend、Bing Sydney 提示。prompt engineer 成职业(Riley Goodside)。「最热的编程语言是英语。」
16:00--19:00:未来方向(scratchpad / agent / 领域模型 / 外部记忆)
内容复原。 Scratchpad 标签机制(外部记忆,像人类用便签)。通用 agent(AutoGPT)。领域专用模型(doctor GPT / law GPT)+ mixture of experts。缺失成分:外部长期记忆。
19:00--28:00:Transformer 跨领域 + 归纳偏置讨论
内容复原。 ViT(patches)、Whisper(mel 切片)、Decision Transformer、AlphaFold。Tesla 启示:把雷达/地图/车型切块加进 token 集合,自注意力自己决定通信,解放自 3D 欧氏空间。Q&A:无限数据$$少编码偏置更好;少数据$$卷积偏置有用;可 mask 局部注意力、交错局部/全局层。
28:00--37:00:AI 史与 Transformer 家谱
内容复原。 2011 CV 特征动物园 + SVM + 各领域不同词汇。2012 Osindero 规模化。2017 架构收敛到单一(大脑皮层同质类比)。家谱:2003 Bengio MLP LM$$2014 seq2seq(encoder 瓶颈)$$2014 Bahdanau 软注意力(Dmitri 翻译练习灵感、Yoshua 命名)$$2017 Attention Is All You Need(删 RNN、加位置编码、残差、MLP、layer norm、多头、4$$ 扩展、pre-norm 改动)。
37:00--45:00:在上下文学习与三性合一
内容复原。 GPT-3 few-shot$$内循环(激活值里学)vs 外循环(SGD)。raw operator$$ridge regression。梯度下降=resnet=transformer 的手波论证。三性:表达力、可优化、高效(浅宽图 + GPU 并行 + Neural GPU 谱系)。
45:00--55:00:注意力 = 图上消息传递
内容复原。 通信(attention)+ 计算(MLP)两阶段。节点发 Q/K/V。Q$$K$$softmax$$加权和 V。多头=并行、层=串行。自注意力 vs 交叉注意力(K/V 来源)。encoder 全连接、decoder 三角、cross-attention 取 encoder 顶部。
55:00--66:00:nanoGPT 实现
内容复原。 Tiny Shakespeare$$字符整数$$block size 8 / batch 4。$B T$ 真实样本。GPT:token+positional embedding 加法$$blocks$$layer norm$$LM head。Block:causal self-attention(通信)+ MLP(计算)。Q@K$$masked_fill($-$)$$softmax$$@V。生成自回归 + 超过 block size 裁剪。改 encoder=删 mask;改 cross-attention=加 block。GPT/BERT/T5 三态。
66:00--end:为什么赢 + 收束
内容复原。 RNN:有表达力但不可优化、不高效(长窄图)。Transformer:浅宽、短跳、残差、layer norm、全并行。「通用、高效、可优化的计算机」。scale matters。scale 训练集 + 强网络 = 通用文本计算机。
最终综合与复习路线
建议的复习顺序: enumerate
enumerate
待确认与证据附录
原始素材路径。
- 字幕(含时间戳):source/subtitles/primary.srt(2330 条 cue)
- 纯文本全文:source/subtitles/full_text.txt(79721 字符)
- 元数据:source/metadata.json
- 封面:assets/cover.jpg
- 视频链接:https://www.youtube.com/watch?v=EsQ_bmXKA4A
公开来源:https://www.youtube.com/watch?v=EsQ_bmXKA4A
页面整理:cnfjlhj & Pi。频道与讲者信息仅作为来源元数据。