
1. 一个反直觉的现象越“高级”的事机器反而越早搞定如果你在十年前跟我说机器能在一对一的对弈中赢下顶尖人类棋手我大概会觉得那是科幻片里的桥段。可现实是这件事早就发生了而且发生得悄无声息。更让人摸不着头脑的是同一时期机器在写代码、做数学证明这些看起来“高智商”的活儿上也突飞猛进可你让它去叠一件衣服、拧一个瓶盖、从一堆杂物里挑出那个没摔坏的鸡蛋它立马就露怯了。这个现象有个专门的名字叫Moravec 悖论。简单说就是对人类越难的事情对机器反而越容易对人类越简单的事情对机器反而越难。这个悖论不是最近才冒出来的几十年前就有研究者注意到了只是那时候大家还没太当回事。直到最近几年大模型把“写代码”“做数学题”这类任务的门槛踩得稀碎而机器人叠衣服的视频还在网上被当成搞笑素材大家才重新把这件事翻出来琢磨。我写这篇东西不是要跟你掉书袋讲认知科学史。我想做的是把这个悖论拆开看看它背后到底藏着什么逻辑为什么“智能”这件事的难度分布跟我们直觉完全相反以及——如果你正好在做机器人、做自动化、做AI应用这个悖论对你意味着什么。不管你是刚入行的算法工程师还是对机器人感兴趣的产品经理或者只是单纯好奇“为什么AI连衣服都叠不好”的普通读者这篇内容应该都能让你有点收获。2. Moravec 悖论到底在说什么从“难易倒置”说起2.1 一个被反复引用的经典表述Moravec 悖论的核心表述最早来自一位机器人领域的研究者在几十年前写下的观察。大意是让计算机在智力测试或下棋中达到成人水平相对容易但要让它在感知和运动方面达到一岁小孩的水平却极其困难。这句话后来被反复引用成了机器人圈子里的一句“老话”。我第一次读到这句话的时候觉得它像是在玩文字游戏。下棋多难啊要考虑那么多步要预判对手要计算得失。一岁小孩会干什么爬来爬去抓东西往嘴里塞看到妈妈会笑。这有什么难的可后来我自己动手做了一些机器人相关的小项目才慢慢体会到这句话的分量。下棋的规则是明确的棋盘是固定的每一步的合法走法是可以穷举的。而“抓东西往嘴里塞”这件事涉及视觉识别、距离判断、力度控制、手眼协调、实时反馈每一个环节都充满了不确定性和噪声。机器在这些方面确实笨得像个婴儿。2.2 为什么“难”和“易”跟我们想的不一样要理解这个倒置得先搞清楚一件事人类觉得“难”的任务往往是因为它需要大量的抽象推理和符号操作而人类觉得“易”的任务往往是因为它依赖的是几百万年进化打磨出来的感知和运动系统。这两套系统的运作方式完全不同。抽象推理这件事人类其实做得很吃力。你让一个普通人去算一个复杂的数学证明他得抓耳挠腮半天还未必算得对。但机器不一样机器天生就是做符号操作的料。给它明确的规则和充足的计算资源它可以在极短的时间内穷举大量可能性找到最优解。所以下棋、写代码、做数学证明这些任务对机器来说反而是“对口”的。而感知和运动这件事人类做起来毫不费力是因为我们的大脑和身体经过了漫长的进化已经把这些能力“固化”成了本能。你走路的时候不需要思考先迈哪条腿你抓杯子的时候不需要计算手指该用多大的力。这些能力被深深地刻在了我们的神经系统里以至于我们根本意识不到它们有多复杂。可机器没有这套进化遗产它得从零开始学而且学的还是我们自己也说不清楚的“隐性知识”。2.3 一个生活化的类比写菜谱和炒菜我经常用“写菜谱”和“炒菜”来类比这件事。写菜谱是符号操作你把食材、用量、步骤写清楚别人照着做就行。这件事机器很擅长你给它足够的菜谱数据它能生成出看起来像模像样的菜谱。但炒菜是感知和运动你得看火候、闻味道、听油声、感受锅的温度还得根据食材的状态随时调整。这些信息很难用文字完全描述清楚就算描述清楚了机器也很难实时地感知和执行。所以你会发现机器能写出米其林级别的菜谱却炒不出一盘像样的蛋炒饭。这不是因为炒饭比写菜谱“高级”恰恰相反是因为炒饭涉及的感知和运动能力是我们进化了几百万年才打磨出来的而写菜谱涉及的符号能力是我们最近几千年才发展出来的。机器在符号能力上可以快速追赶因为符号是离散的、可枚举的、可计算的但在感知和运动能力上它得从头搭建一套完全不同的系统。3. 为什么符号任务先被攻克计算范式的天然适配3.1 符号主义的黄金时代与局限早期的人工智能研究走的是“符号主义”的路子。核心思路是智能就是对符号的操作只要把世界抽象成符号把推理抽象成规则机器就能表现出智能。这个思路在棋类游戏、数学证明、逻辑推理这些领域取得了巨大的成功。因为这些问题本身就是符号化的棋盘状态可以用符号表示走法可以用规则描述证明过程可以用逻辑链条串联。但符号主义很快就撞上了“常识知识”的墙。你想让机器理解“杯子放在桌子上如果桌子被推倒杯子会掉下来”这件事你得把“杯子”“桌子”“推倒”“掉下来”这些概念以及它们之间的关系全部编码成符号和规则。可现实世界里的常识是无穷无尽的你不可能把所有情况都穷举出来。更麻烦的是很多常识是模糊的、有例外的、依赖语境的用刚性的符号规则很难处理。3.2 数据驱动范式的崛起后来随着算力和数据的增长“连接主义”的路子开始占据上风。核心思路变成了不要手动编码规则而是让机器从大量数据中自己学习模式。这个范式在图像识别、语音识别、自然语言处理这些领域取得了突破性的进展。尤其是深度学习出现之后机器在感知任务上的能力有了质的飞跃。但有意思的是深度学习最先攻克的依然是那些“符号化程度较高”的感知任务。比如图像分类你给机器看几百万张标注好的图片它就能学会区分猫和狗。这件事看起来是感知任务但它的输出是离散的类别标签本质上还是一种符号操作。而像“叠衣服”这种任务它的输出是一系列连续的动作涉及力觉、触觉、视觉的实时融合深度学习在这里就显得力不从心了。3.3 大模型为什么先学会了写代码最近几年大语言模型在写代码这件事上表现惊人。你给它一个需求描述它能生成出结构完整、逻辑通顺的代码。这件事之所以能成是因为代码本身就是一种高度结构化的符号系统。它有明确的语法规则有大量的开源代码作为训练数据有清晰的输入输出关系。模型要做的是在这个符号空间里学习概率分布然后生成符合语法和语义的序列。写代码和下棋在本质上是一样的都是在离散的符号空间里做搜索和生成。这类任务的共同特点是状态空间虽然大但是离散的、可枚举的规则虽然复杂但是明确的、可形式化的反馈虽然稀疏但是可以量化的。这些特点让它们天然适合用计算的方法来处理。所以机器在这些任务上超越人类并不奇怪。4. 感知与运动为什么这么难隐性知识的壁垒4.1 莫拉维克说的“一岁小孩”到底难在哪回到那个经典表述让机器达到一岁小孩的感知和运动水平极其困难。一岁小孩能做什么他能识别妈妈的脸能抓住递过来的玩具能爬向感兴趣的东西能根据声音判断方向。这些能力看起来简单但背后涉及的是极其复杂的神经计算。以“抓玩具”为例。小孩要先通过视觉识别出玩具的位置和形状然后判断距离和方向接着规划手臂的运动轨迹同时控制手指的张开程度和抓握力度最后还要根据触觉反馈实时调整。这一连串的动作涉及视觉、触觉、本体感觉的融合涉及运动规划和控制涉及实时反馈和调整。而且这一切都是在毫秒级的时间内完成的小孩自己根本意识不到这个过程有多复杂。机器要做同样的事得把这一连串过程拆解成独立的模块视觉识别模块、距离估计模块、运动规划模块、力控模块、反馈调整模块。每个模块都需要大量的数据和训练而且模块之间的接口和协调也是个大问题。更麻烦的是现实世界是动态的、不确定的玩具可能会滑动光线可能会变化小孩的手臂可能会被挡住。机器得学会在这些不确定性中保持鲁棒。4.2 隐性知识说不清道不明的那些事哲学家迈克尔·波兰尼提出过一个概念叫“隐性知识”指的是那些我们知道但说不出来的知识。比如你能认出老朋友的脸但你说不清你是怎么认出来的你能骑自行车保持平衡但你说不清你是怎么做到的。这些知识是隐性的无法用语言完全表达。感知和运动任务中大量依赖的就是这种隐性知识。你叠衣服的时候手指能感受到布料的质地和厚度眼睛能看到衣服的褶皱和形状身体能感知到手臂的位置和力度。这些信息综合起来让你能灵活地调整动作。但你要把这些信息用语言描述出来几乎是不可能的。你只能说“凭手感”“看着来”“差不多就行”。机器学习的时候需要的是显性的、可量化的数据。但隐性知识很难被量化成数据。你可以给机器看一百万张叠衣服的图片但它依然不知道手指该用多大的力因为力觉信息不在图片里。你可以给机器记录一百万次叠衣服的动作轨迹但它依然不知道在布料滑动的时候该怎么调整因为调整的策略是隐性的。4.3 感知的“鸡尾酒会效应”与运动的“自由度灾难”感知任务还有一个大麻烦叫“鸡尾酒会效应”。你在一个嘈杂的派对上能专注于听一个人说话同时过滤掉周围的噪音。这件事人类做起来毫不费力但机器做起来极其困难。因为机器得先把混合在一起的声音信号分离出来然后识别出目标语音同时抑制背景噪音。这个过程涉及复杂的信号处理和注意力机制而且现实场景中的噪音是千变万化的很难用固定的算法处理。运动任务也有类似的麻烦叫“自由度灾难”。人的手臂有七个自由度加上手部的二十多个自由度总共近三十个自由度。要控制这么多自由度完成一个动作理论上存在无穷多种可能的组合。人类的大脑能轻松地从中选出一个合适的组合但机器得在巨大的解空间里搜索而且还得考虑动力学约束、能量消耗、避障等因素。这个搜索空间太大了传统的规划算法很难在实时性要求下找到可行解。5. 从叠衣服看机器人学习的真实困境5.1 叠衣服到底难在哪一个拆解叠衣服这件事看起来简单拆开来看却是一连串的难题。我试着把它拆成几个环节每个环节都有各自的挑战。第一识别和抓取。机器人得从一堆衣服里识别出目标衣服判断它的材质、形状、正反面然后决定从哪里抓取。衣服是柔性的形状不固定抓取点很难确定。抓得太紧会皱抓得太松会掉。而且衣服可能是团在一起的机器人得先把它展开。第二展开和铺平。抓住衣服之后机器人得把它展开铺平。这个过程涉及对衣服形状的实时感知和调整。衣服可能会滑落可能会翻转可能会被其他衣服缠住。机器人得根据视觉和触觉反馈实时调整动作。第三折叠和对齐。铺平之后机器人得把衣服折叠起来。折叠涉及对折、对齐、压平这些动作。衣服的边角很难对齐折叠的力度也很难控制。折得太用力会留下折痕折得太轻又容易散开。第四堆叠和整理。折好之后机器人得把衣服堆叠起来。堆叠涉及对位置的精确控制衣服可能会滑动堆叠的高度和稳定性也得考虑。每一个环节都涉及感知、规划、控制的紧密耦合而且每个环节都有大量的不确定性和噪声。机器人得在这些不确定性中保持鲁棒这比下棋难太多了。5.2 为什么仿真训练和现实迁移这么难有人可能会说那就在仿真环境里训练呗仿真环境里可以无限次试错成本低速度快。这个思路是对的但问题在于“仿真到现实的迁移”。仿真环境里的物理模型是简化的它无法完全模拟真实世界的复杂性。比如布料的形变仿真里可以用弹簧-质点模型来近似但真实布料的形变涉及纤维的微观结构、湿度、温度等因素仿真很难完全还原。更麻烦的是仿真里训练出来的策略到了现实世界往往会失效。因为现实世界有仿真里没有的噪声和不确定性。比如视觉传感器的噪声、执行器的误差、光照的变化、衣服材质的差异。这些因素在仿真里很难完全模拟导致策略在现实中的表现大打折扣。我见过一些团队的做法是先在仿真里做大量的预训练然后在现实里做少量的微调。这个思路在一定程度上能缓解迁移问题但依然需要大量的现实数据。而现实数据的采集成本很高尤其是涉及力觉和触觉的数据需要专门的传感器和设备。5.3 数据稀缺与标注成本感知和运动任务还有一个大麻烦数据稀缺。下棋的数据可以无限生成因为规则是明确的你可以让机器自己跟自己下生成海量的对局数据。写代码的数据可以从开源社区爬取量也很大。但叠衣服的数据呢你得真的去叠衣服还得记录下每一个动作、每一个力觉反馈、每一个视觉帧。这个采集成本太高了。而且标注也是个大问题。下棋的标注很简单输赢是明确的。写代码的标注也不难代码能不能跑通是明确的。但叠衣服的标注呢什么叫“叠得好”是折痕整齐还是堆叠稳定还是速度快这些标准很难量化也很难标注。没有明确的标注机器就很难学习。6. 智能难度倒置对AI从业者的启示6.1 选赛道的时候先看看任务的性质如果你在做AI相关的项目Moravec 悖论给你的第一个启示是选赛道的时候先看看任务的性质。如果任务主要是符号操作比如文本生成、代码生成、数据分析、逻辑推理那机器已经能做得不错了你可以比较快地看到效果。如果任务涉及大量的感知和运动比如机器人操作、自动驾驶、人机交互那你就得做好打持久战的准备因为这里的坑比你想的要多得多。我见过一些团队看到大模型在文本任务上表现好就以为同样的方法可以迁移到机器人任务上。结果发现把大模型用到机器人上效果远不如预期。因为大模型擅长的是符号空间里的概率生成而机器人任务需要的是实时感知和运动控制两者的底层逻辑完全不同。6.2 不要低估“简单”任务的复杂度第二个启示是不要低估“简单”任务的复杂度。很多看起来简单的任务比如抓取、放置、折叠、拧螺丝背后涉及的感知和运动控制极其复杂。如果你要做一个涉及物理操作的产品一定要留足时间和资源不要以为“不就是抓个东西吗能有多难”。我自己的经验是做一个能抓取固定位置物体的机械臂可能几天就能搞定。但做一个能从杂乱场景中抓取任意物体的机械臂可能需要几个月甚至几年。而且每增加一点鲁棒性难度都是指数级上升的。所以做产品规划的时候一定要把感知和运动的难度考虑进去不要被“简单”的表象迷惑。6.3 混合范式可能是出路第三个启示是混合范式可能是出路。纯粹的符号主义搞不定感知纯粹的连接主义搞不定推理。最近的一些研究开始尝试把两者结合起来用符号系统做高层的推理和规划用神经网络做底层的感知和控制。这个思路在机器人领域有一些初步的成果比如用大模型做任务规划用小模型做动作控制。这个方向我觉得很有前景因为它承认了不同任务的难度分布是不同的也承认了不同的方法有不同的适用场景。与其追求一个“万能”的模型不如根据任务的特点选择合适的工具组合。当然混合范式也带来了新的挑战比如模块之间的接口设计、信息的传递和融合、系统的整体优化。这些问题还需要更多的研究和实践。7. 常见问题与排查思路7.1 为什么我的机器人抓取成功率这么低这是机器人领域最常见的问题之一。抓取成功率低通常有几个原因。第一视觉识别的精度不够。如果相机标定不准或者光照变化太大视觉系统可能无法准确估计物体的位置和姿态。第二抓取点的选择不合理。对于形状不规则的物体抓取点的选择很关键。如果抓取点选在物体的边缘或者重心不稳的位置抓取就容易失败。第三力控不够精细。抓取力度太大物体会被捏碎或者弹开力度太小物体会滑落。力控需要根据物体的材质和形状实时调整。排查的时候我一般会先检查视觉系统看看位置估计的误差有多大。然后检查抓取点的选择策略看看是不是选在了不稳定的位置。最后检查力控参数看看是不是需要调整。如果这些都没问题那可能是执行器的精度不够或者机械臂的刚度不足。7.2 仿真训练的策略为什么在现实中失效仿真到现实的迁移失败通常有几个原因。第一物理模型的差异。仿真里的摩擦系数、弹性模量、阻尼系数等参数跟现实世界有差异。这些差异会导致策略在现实中表现不同。第二传感器噪声的差异。仿真里的传感器数据通常是干净的而现实中的传感器数据有噪声。如果策略没有在噪声数据上训练过到了现实中就容易失效。第三视觉外观的差异。仿真里的纹理、光照、阴影跟现实世界不同导致视觉系统在现实中识别不准。解决这个问题的常见做法是“域随机化”。在仿真里随机化物理参数、传感器噪声、视觉外观让策略学会在这些变化中保持鲁棒。这个做法在一定程度上能缓解迁移问题但依然需要现实数据的微调。7.3 柔性物体操作为什么比刚性物体难这么多柔性物体操作难核心在于它的形状不固定而且形变是非线性的。刚性物体的形状是固定的你可以用固定的抓取点和运动轨迹来操作。但柔性物体的形状会随着抓取和运动而变化你得实时感知和调整。而且柔性物体的形变涉及复杂的物理过程很难用简单的模型来描述。我见过一些团队用“关键点”的方法来处理柔性物体比如在衣服上标记几个关键点通过追踪关键点来估计衣服的形状。这个方法在一定程度上能简化问题但关键点的检测和追踪本身也是个难题尤其是在衣服被遮挡或者形变很大的时候。8. 我个人的一些实操体会做了几年机器人相关的东西我对 Moravec 悖论的理解越来越深。最开始的时候我也觉得下棋比叠衣服难觉得机器能下棋就一定能叠衣服。后来自己动手做了才知道叠衣服涉及的感知和运动控制比下棋要复杂得多。下棋的规则是明确的状态是可枚举的反馈是清晰的。而叠衣服的每一步都充满了不确定性和噪声机器得在这些不确定性中保持鲁棒。我的体会是做机器人相关的东西一定要有耐心。不要指望用一个大模型就能解决所有问题也不要指望仿真里训练好的策略能直接迁移到现实。现实世界比仿真复杂得多你得做好打持久战的准备。而且感知和运动任务的难度分布是不均匀的有些任务可能比你想象的简单有些任务可能比你想象的难。多做实验多收集数据多迭代才能慢慢找到感觉。另外我觉得混合范式是个值得关注的方向。纯粹的符号主义搞不定感知纯粹的连接主义搞不定推理。把两者结合起来用符号系统做高层的推理和规划用神经网络做底层的感知和控制可能是未来的出路。当然这个方向还有很多问题需要解决比如模块之间的接口设计、信息的传递和融合、系统的整体优化。但我觉得这条路是值得走的。最后分享一个小技巧如果你在做机器人抓取相关的项目不妨先从“固定位置、固定姿态”的物体开始把基本的抓取流程跑通然后再逐步增加难度比如改变物体的位置和姿态增加物体的种类引入光照变化和遮挡。这样一步步来比一上来就挑战“杂乱场景中的任意物体抓取”要靠谱得多。每一步都积累数据和经验慢慢迭代才能把成功率提上去。