## 《发现，而非设计》1：两种工程学

我们专栏第六季还有三周就要结束了，这大概是最后一本书，叫《发现，而非设计：复杂性时代的建造之道》（Discovered, Not Designed: Building Things in the Age of Complexity）。

![图片](https://piccdn2.umiwi.com/uploader/image/ddarticle/2025051819/1876438429210816984/051819.png)

此书作者肖恩·麦克卢尔（Sean McClure）原本是个计算机化学博士，后来转向复杂性研究，专注于数据科学，也参与一些创业咨询项目。他在Medium上有个专栏（https://seanamcclure.medium.com/ ）。

![图片](https://piccdn2.umiwi.com/uploader/image/ddarticle/2025051819/1876438466791818828/051819.png)

这本书其实是将近一年前，2024年6月出版的。一方面此书的确写的很好，我们当时错过了，另一方面最近真的没有什么特别好的新书……

麦克卢尔此书抓住了一个时代精神：随着AI大模型的成功，人类建造的东西，正在从简单走向复杂。

我们传统上的各种创造，像汽车、电视机这些东西，都可以说是「简单」的：工程师理解其中每个零部件的运作；确定的输入带来确定的输出。那些东西从内到外都是精心设计的结果。

而AI大模型却不是这样。一个大模型有几万亿个参数，但是没有人知道每个参数的具体作用，更没有人精心布置那些参数。连模型的建造者也无法解释为什么这个模型这么好用。

所以我们说汽车是「简单系统」，大语言模型是「复杂系统」。但是这两个词容易引起歧义，在别的语境下没人会说汽车简单……或者我们可以用麦克卢尔的说法：汽车是被「设计」出来的 —— 而大语言模型，则是被「发现」的。

✵

人类的「设计」能力非常了不起。不知道你坐飞机的时候有没有过感慨 —— 如此庞大的东西，它是怎么飞起来的？它的发动机是怎么运作的？它的空气动力学原理是什么？它如何做到如此之安全，又如何能适应各种各样的天气条件？一架客机有超过一百万个零件，那背后是无数巧夺天工的妙想。再想想光刻机，想想计算机芯片，那个精密和复杂程度令人不得不敬畏……

但如果你考虑一些细节，你会更敬畏大自然的创造。比如我们可以把汽车和猎豹对比一下。

在笔直的公路上，汽车的速度肯定远超猎豹；但一旦到了复杂的地形，比如沙地、森林、崎岖山路，汽车就完全不行了。而猎豹可以在各种地形中极快加速、急转弯，在各种极端状态下保持身体平衡。而且它只需要很少的能量！

可以说除了绝对速度比不过汽车，猎豹在几乎所有其他方面都比汽车强。我前段时间还看过报道，人类至今都造不出动物水平的机器狗来 [1]。

再比如说，火箭发动机是人类科技的一大奇迹，但同样作为依靠流体介质推进的系统，一只鱿鱼都比它强。鱿鱼能无比灵活地控制速度和机动性，能短时间内完成高速冲刺，能长时间持续运动，它的神经系统对周围环境有极其敏锐的感知能力。更厉害的是，鱿鱼就算受伤了都能自我修复，你就算砍掉它一个触腕，它还能重新长出来一个！

因为我们设计的东西远没有动物精巧，所以我们必须让自然适应我们，而不是我们去适应自然。比如我们要实现快速交通，就得修非常平坦的公路……我们必须把环境简化，才好让我们的机器运行。

✵

麦克卢尔把世间的问题分成两类：一类叫做「困难问题（difficult problem）」，是我们传统的工程学所擅长的，是可以用设计解决的；另一类也许可以翻译成「硬核问题（hard problem）」，是我们直到最近弄出AI，才算正式开始解决的。

所谓困难问题，是说这个事儿虽然很庞大很麻烦，但仍然可以通过堆叠已知的功能逐步解决的问题。

比如说建造一座桥。如果只是一条小河，那随便搞个拱桥就够了。但如果河很宽，桥梁就会面临更多要求：你需要更深的地基、更强的桥墩和桥面结构，你需要研究负载如何分配，需要确保材料强度可以承载车辆和行人，你还得考虑热膨胀、风载、地震等等因素……你的桥会非常庞大，上面的各种模块、零部件非常多，但你终究可以设计它、搭建它：你可以通过「多」来应对「多」。

而硬核问题，或者说在这本书的语境下的「复杂问题」，却不是堆叠零件就能解决的。

比如你怎么设计一头猎豹呢？怎么才能让它在各种自然环境中都能生存，体积还不能太大，还要非常灵活……这不是说加装更多的腿、更厚的皮就能解决的问题。

你必须从根本上用完全不同的方式去思考、去构建。

复杂问题（硬核问题）和困难问题的解法完全不同。

✵

解决困难问题我们很有经验，一个是理解，一个是「抽象」，合起来就是「设计」。

所谓理解，就是搞清楚底层逻辑，明确系统所有的因果关系，知道在一定输入下会产生什么样的输出。但个人的理解能力非常有限，没有人能从头到尾掌握一座复杂桥梁，这就需要抽象。

所谓抽象，就是分层打包、封装、模块化。大工程系统都是一层一层构建出来的，每一层只要理解本层的逻辑就好，因为比自己低的一层已经被封装成模块了。

比如说软件工程 ——

最底层是机器语言，直接告诉硬件怎么操作，全是 01 的二进制指令……没有人会去读这些指令。

人能读的是封装好的上一层，叫汇编语言。使用汇编语言，你就不需要关心每条指令在CPU上具体是怎么实现的，你只要理解操作逻辑就行。

再上一层是高级编程语言，比如 C 语言、Python。这些语言允许你调用「函数」，也就是把一连串汇编语言打包成一个模块。你不用关心那个函数是怎么实现的，只要明白它的输入输出就行。

再往上一层是面向对象编程（OOP）。它引入了“对象”这种更高级的抽象，把数据和动作封装成组件。有了这些组件，程序员就方便分工合作，几个人一起开发一个软件。

再往上，比如一个电商网站，它入口的背后不只是一个软件，而是多个软件工具协同工作。

再往上则是人机交互……一个互联网公司的运营人员根本不需要懂太多技术细节，只需要调用已有的应用，完成业务动作就行了。

抽象的好处是哪怕有再多层再多模块，只要负责各个模块的人知道自己模块的原理，模块间的输入输出交代清楚，系统就能保证一个确定性。

有些人认为我们有义务理解周围的一切事物是如何运作的，但是那根本不可能。现实中大多数人连抽水马桶是怎么工作的都不清楚，更别说汽车了。但好消息是你根本不需要清楚！如果你的车是自动挡，你连「挡」的概念都不需要有；就算你开手动挡的车，你对换挡背后的机械机制也完全不需要知道。

只要有人知道就行了。

设计，就是给低层次和高层次抽象之间建立明确联系的过程。

✵

但设计只能解决“困难问题”，这种「理解-抽象」方法可解决不了复杂问题。

比如说人脸识别。你怎么让机器判断这张脸是张三，那张脸是李四呢？因果关系在哪里？是鼻子宽度相对于眉毛长度的比例吗？人脸识别系统的本质并不是一般软件那种「算法」，因为这里根本就没有能说清楚的因果关系。

当我们人类识别人脸的时候，我们依赖的根本就不是因果推理，而是「直觉」。你看着像，就知道是，没有论证可言。这种直觉不是设计的产物。

你在丛林里看到一只老虎，马上就会感到害怕、立刻逃跑。这种反应不是你先推理、又计算了生存概率才行动，而是神经系统直接做出的判断。我们的各种情感、本能，包括面对模糊复杂问题的处理能力，其实都是神经计算的产物。

神经计算跟造一辆汽车、设计一个桥梁，完全是两种路线。

✵

要知道硬核问题是怎么解决的，我们先回顾一下大语言模型是怎么训练出来的。

我们专栏讲过 [2]，大语言模型的训练分为三个阶段：预训练、监督微调和强化学习。而这三个步骤的共同点是：你都是从外部要求它，而不是从内部精确控制它。

你可以决定这个模型有多少个参数，它的神经网络有多少层、每一层的结构是怎样的 —— 但内部每一个节点上的具体参数，可不是你设计出来的，而是训练出来的。

你给它喂入海量的语料，让它不断学习预测下一个词。它的办法是试错。先自己猜，然后自己对照答案反馈参数……直到某一刻，它的回答突然变得像模像样了，你就说：预训练完成了。

接着你开始微调它、然后强化学习，让它学会输出更符合人类期望的答案。一开始它的表现还是很笨拙，但你依然不会去手动修改它的内部参数。你只是从外部告诉它：“这个回答好”“那个不好”，它根据你的反馈继续自我调整。它不断试错、迭代、优化，直到某一刻，它的输出非常符合你的期待，甚至带来惊喜，这时候你才说：模型整个训练完成了。

你能说你「设计」了这个系统吗？其实并没有。你没有把模型分成若干个明确的模块，你根本不知道它内部每个参数具体负责什么，哪些参数连在一起形成一个什么概念……你只是在某一刻，「发现」这个系统居然好用了。

发现，而非设计。

这个事实让很多人感到不安。像我们专栏多次提到的杨立昆（Yann LeCun）就批评大语言模型没有明确的因果结构；Anthropic公司的CEO达里奥·阿莫迪（Dario Amodei）也表示希望搞清楚模型内部到底是怎么运作的……如果我们始终不理解它，我们感到恐惧。

但是麦克卢尔提醒我们，人类社会中有些系统，本来就是我们不理解的！

比如说市场。没有人能清晰地解释为什么一只股票现在是这个价格。它背后也没有明确的因果关系。价格，是在无数交易者的博弈过程中自发形成的，不是谁设计出来的。

再比如说城市。任何城市的现今形态，都不是当初哪个规划师设计出来的。城市是在无数人的迁徙、建设、拆迁、再建设中逐步演化而来的。

更不用说大自然本身：猎豹的身体为什么如此匀称高效？你能说出它每块肌肉的“设计原理”吗？不能。它根本就没有“被设计”。它是大自然在千百万年里，通过无数次变异、迭代、自然选择一点点地「发现」出来的。

所以复杂问题不是不能解决，只是不能用设计解决。你可以用大自然的办法解决：从外部施加压力，让系统在反复变异、迭代、筛选中自己找到路径。

你无法从内部精确操控，等你「发现」它的时候，它已经把问题解决了。

✵

大自然具体怎么解决硬核问题，包括复杂系统的「涌现」到底是怎么回事，我们后面慢慢讲。这里我想再说一点思维。

现代人有些思想，比如什么“全国一盘棋”“统一思想”“领导一切”之类的说法，本质上都属于设计思维。这种思维古代没有，不属于中国传统文化，是基督教和工业革命的产物。现在我们已经意识到这种思维的片面性。

现实是，复杂经济从来就不是被设计出来的。你考察一下中国改革开放的历史：从包产到户，到乡镇企业的兴起，到个体户出现，到沿海外贸经济的发展，再到地方政府之间的竞争，到土地财政 —— 所有这些拉动经济增长的机制，没有一项是中央自上而下顶层设计出来的。它们全都是老百姓、基层和地方在实践中自发探索出来的路径，中央的角色只是事后给予确认和合法化。邓小平不仅是「总设计师」，我看还应该叫他「总允许师」。

伟大不是计划出来的，繁荣不是设计出来的，增长不是领导出来的。

社会不是机器，而是个有机体，它善于自组织。历史表明儒家的等级秩序和法家的严密控制都不能带来经济繁荣，最适合复杂社会的其实是道家思想 —— 「我无为而民自化」。

![图片](https://piccdn2.umiwi.com/uploader/image/ddarticle/2025051821/1876446199881728504/051821.jpeg)

注释

[1] Elena Kazamia, "Why Animals Run Faster than Robots", Nautilus, May 7, 2024. https://nautil.us/why-animals-run-faster-than-robots-579590/

[2] Deeper Seeker

### 💡 精华要点
- 1.随着AI大模型的成功，人类建造的东西，正在从简单走向复杂。汽车是被「设计」出来的 —— 而大语言模型，则是被「发现」的。
- 2.解决问题的方法可分为两类：对于「困难问题」，我们可以通过理解和抽象来设计解决方案。
- 3.对于「硬核问题」(复杂问题)，我们需要采用类似自然界的方法：从外部施加压力，让系统在反复变异、迭代、筛选中自己找到路径。
