@DivyanshT91162: Andrej Karpathy 的整个声誉都建立在一个理念上:"只有当你从头开始构建它时,你才真正理解它…"

X AI KOLs Timeline 新闻

摘要

一条 Twitter 帖子讨论了 Andrej Karpathy 教学理念的讽刺之处——通过从头构建来学习——而现在他却在用 AI 编程,并分享了一段为期 3 周的学习历程,使用 Claude Opus 4.8 以老派方式掌握深度学习。

Andrej Karpathy 的整个声誉都建立在一个理念上: "只有当你从头开始构建它时,你才真正理解它。" 没有库。没有魔法。只有你、一个空白文件,以及纯粹的数学。 讽刺的是:Karpathy 本人于 2026 年加入 Anthropic,现在他说自己几乎不再手写代码了——让模型来做。 所以我闭环了。我让 Claude Opus 4.8 以老派 Karpathy 方式教我深度学习:手动反向传播、micrograd、从零构建 GPT。 这三周的学习效果超过了两年教程。9 个提示。
查看原文
查看缓存全文

缓存时间: 2026/06/29 10:27

Andrej Karpathy 的全部声望都建立在同一理念上:

“直到你能从头构建它,你才算真正理解它。”

没有库。没有魔法。只有你、一个空白文件,和纯粹的数学。

讽刺的是:Karpathy 本人于 2026 年加入 Anthropic,如今承认他几乎不再手写代码了 —— 他让模型来写。

所以我闭合了循环。我用 Claude Opus 4.8 以“老 Karpathy 的方式”教我深度学习:徒手反向传播、micrograd、从零构建 GPT。

这样的 3 周顶过了 2 年的教程。9 个提示词。


提示词 1:徒手反向传播

Karpathy 说,一旦你能在纸上手动完成反向传播,一切就都豁然开朗。这个提示词逼迫你经历那个时刻。

“你是 Andrej Karpathy,从绝对的第一性原理教我反向传播,就用你在 micrograd 里教的方式。

不要使用任何库。 从单个神经元开始。

  1. 带我完成一次前向传播,用你可以跟随的具体数字。
  2. 现在手动完成后向传播 —— 逐步计算每个梯度,每次都解释链式法则,就好像我从未信任过它一样。
  3. 向我展示梯度“流动”的位置以及原因。
  4. 然后给我一个约 30 行纯 Python 的 Value 类,为 +、* 和 tanh 实现自动求导,并附带解释每一行为什么存在的注释。 最后给我一个小练习,用来测试我是否真的理解了。”

提示词 2:从零构建 Micrograd

Karpathy 的 micrograd 是一个约 100 行的完整自动求导引擎。重建它是必经之路。这个提示词引导你完成它,但不会直接给你答案。

“充当我的 Karpathy 式导师。我想自己构建 micrograd,而不是照抄。

引导我一步步用纯 Python 构建一个最小的自动微分引擎:

  1. 首先,让我设计 Value 对象的接口再展示你的 —— 问我它需要存储什么。
  2. 然后每次实现一个操作(+、*、pow、tanh/relu),每次之后,让我在你看答案前预测向后函数应该是什么。
  3. .backward() 构建拓扑排序,并解释为什么顺序很重要。
  4. 最后,在几个点上训练一个极小的 2 层 MLP,让我看到损失下降。 如果我的推理懒惰或含糊,要追问 —— 那正是关键。”

提示词 3:makemore 阶梯

Karpathy 通过从一个二元计数模型逐步爬升到神经网络来教授语言模型。这个提示词为你重现了那条阶梯。

“以 makemore 的方式教我语言模型 —— 从极其简单开始,每次只加入一个想法。

使用一个小数据集(比如一个人名列表)。

  1. 第 1 级:仅使用一个计数矩阵构建纯二元模型。向我展示它‘可行’。
  2. 第 2 级:用只有一个权重矩阵 + softmax 的极小神经网络重构同样的二元模型,并证明它们是等价的。
  3. 第 3 级:将上下文扩展到超过一个字符,并解释什么会出问题。 对于每一级,给出可运行的代码,告诉我它引入了什么新概念,以及什么限制迫使跳到下一级。不要跳过阶梯。

提示词 4:从零构建 GPT

Karpathy 的“让我们构建 GPT”是传奇般的。这个提示词让 Claude 与你一起,按组件重构一个最小的 transformer。

“扮演 Karpathy,引导我用 PyTorch 从零构建一个最小的 GPT —— 但要让我理解每一个模块,而不只是粘贴它。

按这个顺序进行,每一步之后停下来解释直觉,再给代码:

  1. 词嵌入 + 位置嵌入 — 为什么两者都需要?
  2. 单个自注意力头 — 推导为什么使用 query、key、value,以及 softmax 在做什么。
  3. 多头注意力 — 为什么要分割成多个头?
  4. 前馈 + 残差 + 层归一化的组合 — 每个部分拯救了什么。
  5. 堆叠成块,在一个很小的文本文件上训练。 保持模型足够小,可以在笔记本上运行。构建完成后,问我 3 个问题来检查我是否真正理解了注意力。”

提示词 5:“像图表一样解释”训练

Karpathy 的天赋是将数学转化为心理图像。这个提示词让 Claude 把你卡住的概念变成这种形式。

“我被这个概念卡住了:[粘贴概念 — 例如注意力、层归一化、KV 缓存、梯度裁剪]。

用 Karpathy 的方式解释:

  1. 从该想法最傻的版本开始,以及为什么有人会想要它。
  2. 每次只增加一个部分,每一步都由一个具体问题驱动。
  3. 用文字把它描述成一幅画/图表 —— 什么在移动,什么在被乘,什么在流向哪里。
  4. 给出能孤立展示它的最小代码片段。
  5. 最后给我一句应该永远记住的话。 不要用术语,除非你立即将其解开。

提示词 6:像 Karpathy 一样读代码

Karpathy 会逐行阅读真正的实现。这个提示词把任何令人生畏的仓库或代码片段变成一次导览。

“这里有我不完全理解的一段机器学习代码:[粘贴代码]。

像 Karpathy 在直播中读代码那样带我过一遍:

  1. 在讲任何细节之前,先给出一句话总结:‘这到底试图干什么’。
  2. 按逻辑块过一遍(不是逐行琐事)—— 对每一块,解释意图,而不仅仅是语法。
  3. 标记任何常见的习语或值得记住的技巧。
  4. 指出哪里是‘有趣’的部分,哪里是模板代码。
  5. 告诉我如果删除或更改每个关键部分会发生什么。 把我当作能够编码但尚未内化机器学习模式的人。”

提示词 7:从零挑战

Karpathy 相信通过重新实现而不是重读来巩固知识。这个提示词为你生成一个个性化的构建挑战。

“基于您说您刚刚学到的:[描述 — 例如‘我刚刚理解了自注意力’],为我设计一个从零开始的挑战,以证明我真正掌握了它。

给我:

  1. 一个具体的小构建任务,强制我使用该概念(不能是一个可以糊弄过去的玩具)。
  2. 一个空白的‘骨架’,包含函数签名和 TODO —— 但没有实现
  3. 一个包含 4-5 个检查点的列表,以便我知道自己是否在正轨上。
  4. 大多数人在这里会遇到的特定 bug 或误解,以便我能识别它。 现在不要给我解决方案。 当我带着我的尝试回来时,再像 Karpathy 评审学生的 PR 那样批评它。”

提示词 8:调试我的小模型

当一个从零构建的模型学不会时,bug 通常是概念性的,而不是语法性的。这个提示词像 Karpathy 那样调试 —— 通过推理信号。

“我的从零模型行为异常:[描述 —— 损失为 NaN / 损失平坦 / 连一个批次都无法过拟合]。这是我的代码:[粘贴]。

用 Karpathy 的方式调试,而不是随机调整:

  1. 第一条原则:它能否过拟合单一批次?带我检查这一点,以及它能告诉我们什么。
  2. 推理根据我的代码梯度是否能流动 —— 指向确切的嫌疑行。
  3. 针对此症状,列出最可能的前 3 个根本原因,概率最大的排第一。
  4. 对于每一个,给出可以确认或排除它的一行检查。 只有在那之后才给出修复 —— 并解释底层原则,这样我再也犯同样的错误。”

提示词 9:间隔掌握地图

Karpathy 的课程按照深思熟虑的顺序构建,以确保没有含糊之处。这个提示词把你零散的学习转变成那种路径。

“这是我迄今学到的所有内容以及我感觉薄弱的地方:[列出主题 + 每个主题的置信度]。

扮演 Karpathy,从这里开始设计我的个人课程:

  1. 诊断哪些‘基础性’缺口在下游暗中导致了我的薄弱之处。
  2. 安排我接下来的 6 个学习步骤,确保每一步都只建立在我真正理解的东西之上 —— 没有跳跃。
  3. 对于每一步,给我应该构建的从零制品,用以证明我学会了。
  4. 告诉我 一个概念,一旦它豁然开朗,就会让其他几个概念迎刃而解。 如果觉得我还没学会走就想跑,请如实相告。”

相似文章