前几天在群里和朋友聊用 AI 写代码的痛点,我说我最大的抱怨是它在完成某些看似很平凡的任务的时候异常吃力,比如最常见的操作:把一个代码库里的某个变量全局统一改名。这个事显然开发环境有现成的接口,但 AI 只会逐个文件编辑,又慢又浪费还容易出错。这件事之所以荒谬,在于 cursor 自己就是个开发环境。换句话说,它在这件事上表现的像是那种两个部门老死不相往来的大公司,明明一个部门已经把某件事做到了近乎完美,另一个部门却对此不闻不问,非要用自己的笨办法重来一遍。 这听起来像是一个简单的可以修复的 bug,但它背后反映的是 AI 现状里一个巨大的鸿沟,这个鸿沟时时处处在各种 AI 应用里会以不同面貌展现出来。你试试看给一个业外人士(比如你的父母)解释为什么 AI 算不清楚两个数字谁大谁小,你会发现这种解释惊人地困难,因为人民群众的直觉在这里是合乎情理的:再怎么说,它自己就是个电脑,它为什么不直接算一下呢?另一个例子是我在玩 GPT 4o 生成图像的时候发现虽然模型虽然强大,但它仍然完成不好诸如「把一张风景照主体内容不动,把上面的天空再往上延伸一些」这样的 outpainting 任务,而这即使在十年前对传统图像处理来说就不是什么特别困难的问题了。 在这里,我们谈论的实际上仍然是自人工智能这个概念于1956年在达特茅斯诞生之日起就阴魂不散的「符号主义 vs. 联接主义」之争。在基于统计神经网络的大语言模型走上主流地位之前,人们一直认为基于符号计算的专家系统是通向智能最有希望的道路,几十年来的软件工程实践在这条路上已经走了足够远,常用的工具(比如传统的软件开发环境)基本打磨到了极致。直到上世纪末联接主义这个烧了几十年的冷灶咸鱼翻生,基于神经网络的大语言模型从零开始试图重写从轮子到火箭发动机的一切已有的软件工程成就。它遵循的是完全不同的生长逻辑,因此对习惯了旧世界的我们来说,它的表现常常好得莫名其妙也差得莫名其妙,有些技能近乎魔法,有些方面又笨拙得宛如一个弱智。前面所说的变量改名就是个有代表性的例子,事实上,这里的难点甚至都不在于语法解析,而在于更底层的文本替换——对旧世界来说,哪怕在亿兆级别的文本里要把所有的 A 都替换成 B 也不费吹灰之力,以至于你根本都不觉得这还是一个「任务」。但对大语言模型来说这件事天生困难,并且难度随着文本大小急剧上升。绘画也是这样,你想直接让今天的生图模型「对图片按照某些明确到像素级别的规则做某些明确定义好的操作」极其困难,它觉得整体重画一遍比较省事。对用户来说这种体验常常令人抓狂。 打一个不精确的比喻。这两种模式可以粗略对应于大脑的左右半脑。基于符号主义的左脑在过去几十年里得到了充分的发育,基于联接主义的右脑在过去十年里急起直追,并且仍然在极速进化。问题在于这两个半脑之间沟通——对应于人脑胼胝体的功能——极其孱弱,才会出现 cursor 的编程助手不知道如何调用 cursor 的编译功能这种奇葩问题。 于是人们开始引入中间层。 在现实中这个中间层会被人们冠以各种不同的称呼,有人认为自己做的叫垂直 AI,有人认为自己做的是 agent,也有人认为自己做的就只是单纯的 wrapper。但在这个上下文里,它实质上起到的总是类似于胼胝体的作用,让神经网络模型这个右脑可以调用已经高度成熟的传统软件左脑的功能来完成更复杂精细的任务。事实上,这一部分的历史欠账已经如此严峻,以至于哪怕接下来一两年里大模型本身的思考能力停止提高(并不是完全不可能),单单改善这个左右脑的对齐问题也能解锁许多前所未有的能力。在今天,如果一个人说自己在搞 AI 创业但又没有直接训练大模型,那他们的工作多半就实际上可以归属于这一类。 这当然在整体概念上是个充满机遇和潜在回报的领域。毕竟,现有的软件工程领域的应用如此繁荣,切入社会的所有方面。但值得改进和革新的方向又俯拾皆是。把现有的专业知识和大语言模型的智能结合起来,再造一次信息化革命,听起来是成千上万现成的创业机会。 但困难(以及有趣之处)在于,虽然这种泛泛而论听起来很难反驳,但你会发现对每一个具体例子而言,人们对它的价值都充满怀疑。问题的根源是这两个半脑中传统的那一个相对静止,而新的那一个每天都在变化。因此任何工作都像是在和历史(确切来说大模型的进化史)赛跑。一个近乎讽刺的事实是,如果两个人都在前年开始投身 AI 图像生成领域,一个花大量时间和金钱投入 ComfyUI 和工作流的研究,另一个两年都在游山玩水,本周 GPT 4o 发布更新之后他们仍然基本上站在同一起跑线上。换句话说,你很难说服自己(和投资人)相信,你不只是在一架上升中的电梯里做俯卧撑。 于是你会看到 Richard Sutton 的 The bitter lesson […]
苦涩的教训的边界
- Post author By 木遥
- Post date
- Categories In Technology