当“模糊编程”遇上C++:Bjarne对机器学习的冷思考

AI PM 编辑部 · 2019年11月09日 · 1 阅读 · AI/人工智能

正在加载视频...

视频章节

在这次与Lex Fridman的对话中,C++之父Bjarne Stroustrup直面机器学习与传统软件工程的根本冲突:模糊性与精确性。通过自动驾驶、航空控制等高风险场景,他阐述了为何“软件2.0”无法替代工程纪律,以及不同技术范式必须各守边界、协同共存。

当“模糊编程”遇上C++:Bjarne对机器学习的冷思考

在这次与Lex Fridman的对话中,C++之父Bjarne Stroustrup直面机器学习与传统软件工程的根本冲突:模糊性与精确性。通过自动驾驶、航空控制等高风险场景,他阐述了为何“软件2.0”无法替代工程纪律,以及不同技术范式必须各守边界、协同共存。

为什么机器学习像“编程”,却又完全不是

这个讨论的起点,看似是一个“疯狂的问题”:能否把机器学习看成一种新的编程方式?从形式上看,确实相似——程序接收输入、产生输出;神经网络通过训练后,也能完成同样的映射。但Stroustrup立刻指出,这种相似是表面的。

他认可机器学习是一种“做事的方法”,却强调它的本质是“fuzzy(模糊的)”。他用人类成长作比喻:我们从环境中学习、不断试错,本身就是一个充满噪声、不可靠的系统。神经网络也是如此,只能通过大量数据和实验,得到“在99.8%的情况下似乎有效”的结论。

而这正是他与C++世界的根本分歧。C++代表的是另一种哲学:确定性、可验证性、可度量性。程序是否正确,不是靠统计概率,而是靠逻辑、测试和工程方法来证明。在他看来,机器学习不是“更高级的C++”,而是一个完全不同的技术物种,只适用于特定问题空间。

84%准确率够不够?取决于你在干什么

Stroustrup并非反对机器学习本身,他反对的是不加区分的滥用。讨论中,他给出了一个非常具体、也极具工程味道的判断标准:准确率是否足够,取决于应用场景。

他提到,在他看到的许多实际系统中,模型准确率往往在84%左右,投入“大量血汗(blood, sweat and tears)”后,可能提升到92.5%。这样的水平,在某些场景下完全合理,比如作为人工审核前的预筛选工具,速度快、成本低,甚至比人类更稳定。

但一旦进入生命攸关的领域,这种“还不错”的概率就变得不可接受。飞机控制、汽车控制、核反应堆运行——在这些系统里,16%的错误率不是统计问题,而是灾难。他直言:“我不想让‘每个人都能编程’的理念,进入我的飞机控制系统。”

在这里,他把工程师与普通使用者明确区分开来:就像不会让不懂数学的人计算登月轨道一样,关键系统必须由受过严格训练的人,用可证明正确的方法来构建。

最让他害怕的,是人类被当作“最后补丁”

在自动驾驶的话题上,Stroustrup罕见地使用了情绪化的表达:“this is scary”。真正让他不安的,并不是神经网络本身,而是一种系统设计思路。

他描述了一种场景:自动驾驶系统在大多数情况下运行良好,但当问题“过于复杂”时,会请求人类接管。问题在于,这个人类司机可能正在看书、打瞌睡,只有几秒甚至几十秒时间,去理解AI无法处理的异常情况。

在他看来,这种“人机切换”几乎是不可能被可靠设计的。AI之所以请求帮助,恰恰是因为情况已经超出了常规模型的能力边界,而这正是人类最难在短时间内理解和决策的时刻。

相比之下,他更愿意相信一种极端但清晰的方案:用C++等高可靠语言构建系统,让它“永远不要向人类求助”。即使这条路异常艰难,也比把人类当作不稳定的最后补丁,更符合工程理性。

不是谁取代谁,而是各自守住边界

讨论的最后,Stroustrup给出了一个更宏观、也更现实的判断:未来的大型系统,不可能只用一种技术或一种语言构建。

机器学习擅长处理模糊、感知型问题,例如图像识别、模式发现;传统软件工程擅长处理规则清晰、可验证的核心逻辑。真正的挑战,不在于证明哪一方“更先进”,而在于如何划清边界、定义接口、管理它们之间的交互。

他强调,今天几乎没有任何重要系统是用单一语言完成的,这并非历史偶然,而是工程复杂性的必然结果。不同工具,服务于不同原则;不同原则,适用于不同风险等级。

这也解释了他为何会持续关注AI领域,却“永远不会成为这个领域的专家”:他的角色,是守住工程底线,提醒世界在追逐智能与效率时,不要忘记可靠性与责任。

总结

Bjarne Stroustrup并没有否定机器学习的价值,而是用一位老工程师的直觉,为它划定了边界:模糊性可以是优势,但不能被假装成精确性。真正成熟的软件世界,不是“软件2.0”取代“软件1.0”,而是让统计模型与严格工程各司其职。对开发者而言,这种克制与分辨,或许比掌握任何新框架都更重要。


关键词: Bjarne Stroustrup, 机器学习, C++, 自动驾驶, 软件工程

事实核查备注: 人物:Bjarne Stroustrup(C++设计者);访谈主持:Lex Fridman;技术概念:机器学习、深度学习、神经网络、C++;关键数字:84%准确率、92.5%准确率(作为示例性讨论);核心观点:生命攸关系统不应依赖模糊统计模型;场景案例:自动驾驶中AI向人类请求接管的风险。