← 科研空间 首页

Karpathy 讲座 · 2026-08-26

一节 Karpathy 讲座讲透现代 AI

中文讲义 HTML 版:Karpathy 一小时讲座讲透现代 AI,从 Software 1.0/2.0/3.0 到 Transformer 历史谱系、注意力机制图论视角与 nanoGPT 实现。

整理:cnfjlhj & Pi
一节 Karpathy 讲座讲透现代 AI
页面基于公开讲座与已生成讲义转换;频道和讲者信息保留为来源元数据。

阅读路线

这页由已完成的 LaTeX 讲义转换而来,保留原讲义的章节、重点框、代码块、公式和关键视频帧;适合在博客中快速阅读,也可回到 PDF 查看完整排版版本。

导读:本材料真正要解决的问题 主线讲义:按教学逻辑重建 逐段细读地图 最终综合与复习路线 待确认与证据附录

导读:本材料真正要解决的问题

讲座开场,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

  • 先背范式三段及其「你设计什么」:算法 / 数据集 / 提示。
  • 再背 Transformer 家谱四篇论文,理解「注意力」如何从 encoder 瓶颈的解法变成「全部」。
  • 然后用 Karpathy 的图论视角默写注意力:Q/K/V$$点积$$softmax$$加权和,并区分自注意力与交叉注意力(只是 K/V 来源不同)。
  • 最后用 nanoGPT 的 300 行把抽象落到代码:token+positional embedding$$blocks(通信+计算)$$LM head,以及因果 mask 如何实现「不看未来」。
  • 收束时回到「三性合一」与「scale matters」:为什么浅宽、残差、layer norm、全并行让 Transformer 既能 scale 又能优化。
  • 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。频道与讲者信息仅作为来源元数据。