如何迭代与进步
前几天我刷到 Andrej Karpathy 的一条推文,讲「如何成为某个领域的专家」,有三条:第一,先找一个具体项目去做,过程中遇到不懂的再查,用「输出驱动」的方式学习;第二,不要「自下而上」,别像学生时代那样先把基础理论学完才动手;第三,只跟过去的自己比,不跟别人比。
这让我想到费曼的一句话:如果你不能把一个东西讲给完全不懂的人听明白,说明你自己也没真懂。
两人说的是同一件事:用输出来检验输入。 你以为自己懂了,但只有真的动手或开口,才知道到底懂没懂。这篇文章想讲清楚:这种方式为什么有效、为什么难做、以及怎么坚持下去。
与深度学习的相似之处
训练一个神经网络,是四个步骤的循环:
- Forward(前向传播): 网络根据当前参数产生一个输出。
- 计算 Loss(损失): 把输出和正确答案对比,算出差距。
- Backward(反向传播): 根据差距,反推每个参数该往哪个方向调。
- 梯度下降: 按这个方向,把参数调整一点点。
然后回到第一步,重复成千上万次,输出就越来越准。
人的学习几乎一样:「先做项目」就是 Forward,你做出来的东西和理想结果的差距就是 Loss,你复盘「哪里没做好、下次怎么改」就是 Backward 和梯度下降。Karpathy 说「投入足够多次数就会成为专家」,本质上是在说:这是个迭代算法,没有一步到位的解,威力全部来自小步、大量、持续的重复。
人的局限性
人和神经网络最大的不同是:网络面对很大的 Loss 没有任何感觉,但人会痛。
而且这种痛绕不开。道理很简单:想进步,就必须在自己还没掌握的领域里先输出,过程中必然频繁犯错、不断撞见自己的无知。反过来,已经完全掌握的东西,再练也不会有新进步。真正的成长一定发生在能力的边缘,而边缘按定义就是不舒服的。
所以这种方式真正的难点不是智力,而是如何承受这个过程中的不适感。
为什么人会痛、网络不会?因为人容易把「我做得怎么样」和「我这个人怎么样」混在一起。一旦自我价值建立在「我很能干」上,每个错误就都成了对你这个人的否定,于是你会本能逃避一切可能暴露不足的场合,也就是逃避一切成长。
要面对这种痛,关键是把两件事拆开:可以毫不留情地批判自己的「行为」,但不要伤到自己的「价值」。
用神经网络理解:梯度下降调整的是参数,对应你的行为、技能、方法,本来就该被一次次修正;而架构是更底层、不该被乱动的东西。你应该把自我价值放在架构那一层,而不是参数那一层。这样错误改的只是行为,不会动摇「你是谁」。如果反过来,让每次 Loss 都去冲击架构本身——相当于每犯一次错就把整个网络推翻重建——训练根本不会收敛,只会剧烈震荡然后崩掉。这就是「一犯错就全盘否定自己」的状态。稳定的训练,前提是 Loss 只更新参数,不炸架构。
Ray Dalio 的原则

前面这套东西,其实早有人把它整理成了一整套可操作的系统——桥水基金创始人瑞·达利欧(Ray Dalio)写的《原则》(Principles)[1]。这本书是他把自己几十年里犯过的错、以及从错里总结出的做法一条条写下来,最后攒成的一部「决策手册」。有意思的是,他从投资和管理实践里独立摸索出来的东西,和前面用神经网络推出来的结论几乎一一对应。
他最著名的一个公式是:痛苦 + 反思 = 进步(Pain + Reflection = Progress)。 这跟前面「人会痛、而痛绕不开」是同一件事——痛苦本身不是要躲开的信号,而是要拿来反思的原材料;只有痛而不反思,才是纯粹的损耗。用训练的话说,Loss 大不可怕,可怕的是不做 Backward。
达利欧反复强调拥抱现实、直面痛苦:把现实看成一台按因果规律运转的机器,你要做的是搞清楚它怎么运转,而不是抱怨它「本该是什么样」。犯错不丢人,从错误里没学到东西才丢人——这正对应前面说的「批判行为、但不否定价值」:错误是用来更新参数的数据,不是对你这个人的判决。
他把「怎么解决问题」提炼成一个五步流程:
- 设定清晰的目标;
- 找出挡在目标前面的问题,并且不回避它;
- 诊断问题,找到根本原因,而不是只处理表面症状;
- 设计一个能绕过或解决问题的方案;
- 照方案坚决执行。
这其实就是人类版的训练循环:目标是理想输出,识别问题是算 Loss,诊断根因是 Backward——把差距反推到「哪个环节该改」,设计方案加执行是梯度下降。达利欧特别指出这五步要一步步来、别混着做,跟训练里 Forward、Loss、Backward、更新必须分清次序是一个道理。
支撑这套流程的,是他在桥水推行的极度求真与极度透明(radical truth & radical transparency):有问题就摆到台面上说,不因为难堪而掩盖,也欢迎别人毫不留情地指出你的不足。放到个人身上,就是前面那个「毫不留情地批判行为」——你得先允许真实的 Loss 被算出来、被看见,反思才有依据;一个把错误藏起来的人,等于在给自己喂假数据。
而达利欧做的最关键一件事,是把这些心得写下来、系统化:每遇到一类问题,就总结出一条应对原则,下次碰到同类情况直接调用;甚至把原则写成明确的判断标准,让它像一台「机器」一样自动运转,并在实践中不断迭代修正。这跟后面要讲的「把错误序列化地写下来」完全是一回事,只是他做得更彻底:不止记录,还把记录提炼成可复用的决策规则。他也强调要区分一阶后果和二阶后果——很多对的选择一阶是痛的(比如锻炼、拒绝短期诱惑),二阶才是好的;只盯着一阶的舒适,就会系统性地做错决定。
一个管对冲基金的人和一个训练神经网络的比喻,最后收敛到同一套方法,这本身就说明:这套「小步、持续、从错误里更新自己」的迭代逻辑,大概是任何复杂系统进步的通用形式。
两个技巧
技巧一:把错误序列化地写下来。
每次遇到错误、无知或想改进的地方,就用日志或笔记记下来。这件事有个极好的榜样:罗马皇帝马可·奥勒留写的《沉思录》,本意就是「写给自己的」私人手记,即使贵为皇帝,他每天也记录和复盘自己的不足。
写下来为什么有用?痛苦待在脑子里时是一团绕圈的东西,很多念头同时翻涌、落不了地,这正是它最折磨人的状态。而写字这个动作强迫你把它排成一条线——一次只能写一句,一句只能说清一个意思。这种「序列化」逼大脑进入理性状态,把事情冷静想清楚,而不是任由情绪在脑子里乱窜、损耗信心。
技巧二:写完就立刻开始下一轮。
日志写完,就意味着这一轮的 Backward 和梯度下降已经完成。下一步不要在痛苦里停留,直接进入下一轮 Forward——投入新的行动。这也有依据:训练时你不会拿同一批数据反复 Backward 十遍,那会让网络过拟合到这一个样本上。人也一样,对同一个错误反复咀嚼,只会陷进这次失败的细节,学不到能用在下次的教训。「再多想只会有痛苦」,本质上就是「再多 Backward 只会过拟合」。
这两个技巧配套,而且有先后:你之所以敢「忘」,正是因为已经「写」下来了。 事情既然清楚归档,脑子里那个「得一直记着否则吃亏」的警报就能解除,以后要回想翻记录就行。写日志给上一轮收尾,立刻行动给下一轮起步。
参考资料
- Ray Dalio. Principles: Life and Work. principles.com