Andrej Karpathy有个Github项目,叫Micrograd。
100行Python代码,就把神经网络训练的核心讲清楚了。
别人需要几百页教科书、几十个小时的课程才能讲明白的反向传播,他用100行代码就让你看懂。
为什么他能把复杂讲简单?
因为他是物理学出身,且具备查理芒格所说的「多元思维模型」,善于找到问题的本质。
我一直从Andrej Karpathy这获益良多,他的YouTube频道的每次更新再长我都会看。我一直很好奇他平时是怎么思考的,以及,作为一个AI领域走在前沿的科学家,为什么会愿意放弃在Tesla和OpenAI的工作,转身做一个AI教育者。10月17日的Dwarkesh播客访谈里,Karpathy分享了他的思维方式,他对AI现阶段发展的思考,以及他做AI教育的思路。
这些想法AI研究能用,学AI编程能用,学任何东西都能用。
今天聊聊这些方法。
第一性原理:找到"一阶项"
物理学有个概念叫"一阶项"(first order terms)。
来自泰勒级数展开(Taylor series)。
当你要分析一个复杂系统,可以把函数展开成:常数项 + 一阶项 + 二阶项 + 三阶项...
一阶近似就是:只保留前两项,忽略后面所有高阶项。
这样做,精度够用(通常能达到10%以内),但计算简单很多。
简单说,就是找到系统中最重要的那一项。其他的都是次要的。
Karpathy做研究、写代码、教学的时候,一直在用这个思维。
案例1:神经网络的核心是什么?
Karpathy说,神经网络训练的核心是反向传播。
其他的——优化算法、正则化、数据增强——都是效率问题。
反向传播才是"一阶项"。
所以Micrograd项目,100行代码,只讲反向传播。
其他的,都省略了。
这就是抓住"一阶项"的威力。
案例2:AI的本质是什么?
访谈里,Karpathy说了个挺有意思的观点。
他说,AI不是"动物",是"幽灵"(ghosts or spirit entities)。
什么意思?
动物是通过进化产生的。进化会在神经网络的权重里内置大量"硬件"。
但AI是完全数字化的,通过模仿人类在互联网上发布的数据训练出来的。
这是两种根本不同的智能。
所以,不要用进化的思路去理解AI。
这就是抓住"一阶项"——AI的训练方式,而不是AI的表现。
案例3:为什么编码是LLM的完美切入点?
Karpathy说,代码本身就是文本。
而且有大量的文本数据可供训练。
再加上,我们有现成的基础设施(VS Code、Diff工具)来处理代码。
这就是"一阶项"。
其他应用(客服、写作、翻译)都是次要的。
LLM最先在编码领域爆发,不是偶然。
怎么应用?
学新东西的时候,问自己:
-
核心是什么? -
其他是什么? -
如果只能学一个东西,我学什么?
这就是第一性原理的思考方式。
这让我想到芒格说的多元思维模型——从不同学科借鉴思维方式来解决问题。
Karpathy就是把物理学的"一阶项"思维应用到AI研究。马斯克推崇的第一性原理也是类似的——找到问题的本质,而不是被表面现象迷惑。
不同领域的顶尖思考者,用的其实是同一套底层逻辑。
"先痛苦,再解决"
Karpathy说,他教学的时候有个原则:
先让学生经历问题,再给出解决方案。
为什么?
因为这样学生才会真正理解和欣赏这个解决方案。
举个例子。
教神经网络的时候,很多老师会直接讲反向传播。
公式、推导、代码,一气呵成。
但学生听完,可能还是一脸懵。
Karpathy的做法不一样。
他会先让学生尝试手动调参数。
你会发现,手动调参数超级慢,而且完全调不准。
这时候,你会开始思考:有没有更好的方法?
然后,Karpathy才引入反向传播。
这时候,学生就会有种"卧槽,原来可以这样"的顿悟感。
这就是"先痛苦,再解决"的威力。
为什么有效?
因为人类的大脑天生就是"问题导向"的。
你没有痛苦,就不会珍惜解决方案。
你没有尝试过失败,就不会理解成功的价值。
怎么应用?
学习新东西的时候,别直接看答案。
先自己尝试解决问题。
碰壁了,再去看教程、看文档。
这时候,你会发现,理解速度快很多。
这也是为什么"做项目"是最好的学习方式。
你先遇到问题(痛苦),然后去找解决方案。
这个过程,就是学习。
我自己就是这么过来的。
之前我在即刻上说过:边学、边做、边分享,是我的事业飞轮。
当你尝试分享的时候,费曼学习法的逻辑会逼你把东西梳理得更清楚。
表达是检验理解的过程。你能不能流畅地讲出来,就能验证你是不是真的懂了。
这跟Karpathy的"先痛苦再解决"是一个道理。
"构建知识坡道"
Karpathy现在在做Eureka Labs,一个AI教育公司。
他的愿景很简单:打造"星际舰队学院"(Starfleet Academy)。
什么意思?
就是让AI成为完美的导师。
他说,理想的AI导师应该能:
-
立即理解学生的水平 -
精确探查学生的知识模型 -
提供持续、恰当的挑战(既不太难,也不太简单)
他把这叫做 "构建知识坡道"(building ramps to knowledge)。
目标是优化 "每秒顿悟次数"(Eurekas per second)。
这个概念我很喜欢。
学习最怕什么?
太难了,听不懂,放弃。
太简单了,没挑战,无聊。
最好的状态是:有点难,但努把力能搞定。
这就是"知识坡道"。
Karpathy说,如果有一个完美的AI导师,学习任何东西都会变得"微不足道且令人向往"。
人们会为了乐趣而学习,就像现在去健身房一样。
怎么应用?
学习的时候,找到合适的"坡道"。
不要一上来就挑战Hard难度。
从Easy开始,慢慢提升难度。
比如学编程,不要一上来就写分布式系统。
先写个To-Do List,再写个博客,再写个小工具。
每一步都有点挑战,但又不会太难。
这就是"知识坡道"。
克服"知识的诅咒"
Karpathy说,专家不擅长解释东西。
为什么?
因为他们把某些概念视为理所当然。
这叫"知识的诅咒"(curse of knowledge)。
你知道得太多,反而忘了新手的困惑。
举个例子。
一个资深程序员可能觉得"变量"、"函数"、"循环"这些概念很简单。
但对新手来说,这些概念可能很抽象。
专家会跳过这些"显而易见"的解释,直接讲更高级的内容。
结果,新手听不懂。
Karpathy的解决方法:
通过与他人(或LLM)分享"愚蠢的问题",来理解新手的困惑。
他会主动问一些很基础的问题。
"为什么要用反向传播?"
"损失函数到底是什么?"
"梯度下降为什么有效?"
这些问题,对专家来说可能"太简单了"。
但对新手来说,这才是最需要弄清楚的。
怎么应用?
如果你要教别人(或写教程、做分享),先问自己:
-
什么是"理所当然"的? -
新手可能在哪里卡住? -
我能不能解释得更简单?
甚至,可以找个完全不懂的人,试着给他讲一遍。
他听不懂的地方,就是你需要改进的地方。
"认知核心":知识可能拖累模型
访谈里,Karpathy提了个挺反直觉的观点。
他说,知识可能拖累模型。
什么意思?
预训练的时候,模型既学到了知识,也学到了智能。
但知识可能会让模型过度依赖已知数据,无法探索数据分布之外的可能性。
Karpathy提出了一个概念:"认知核心"(cognitive core)。
就是剥离知识,只保留智能算法、问题解决能力和策略。
他预测,这个核心可能只需要约十亿参数。
然后,他说了个更有意思的观点:
人类记忆差,反而是优势。
为什么?
因为记忆力不好,迫使人类去寻找模式。
人类不会记住所有细节,只会记住可以泛化的规律。
而LLM的问题是:过度记忆,反而忽略了可以泛化的规律。
怎么应用?
学习的时候,少记忆,多理解。
别死记硬背公式、代码、知识点。
试着理解背后的原理。
问自己:
-
这个公式为什么成立? -
这个代码为什么这样写? -
这个概念的核心是什么?
理解了原理,知识就有了泛化能力。
可以应用到其他场景。
这才是真正的学习。
最后
Karpathy在访谈里说了很多技术细节。
但我觉得,最有价值的是他的思维方式。
物理学家的思维,就是抓住"一阶项"。
找到最核心的东西,其他的都是次要的。
教育家的思维,就是"构建知识坡道"。
让学习变得既有挑战,又不至于太难。
研究者的思维,就是"先痛苦,再解决"。
经历过问题,才会珍惜答案。
这些思维方式,不只适用于AI研究。
它们适用于任何领域的学习和思考。
Karpathy说,AI时代,知识会过时。
但思维方式不会。
这套物理学思维,是可以用一辈子的框架。
-
基于:Andrej Karpathy在Dwarkesh播客的2小时访谈(2025年10月17日) -
播客链接:https://www.dwarkesh.com/p/andrej-karpathy
<
暂无评论内容