语言递归性与AI:从嵌套结构到大模型的语言习得差距 如果你仔细观察过小孩学说话会发现一件特别反直觉的事把一个婴儿放到任何一个语言环境里他都能学会当地语言。放北京学普通话放广东学粤语放日本学日语放肯尼亚学斯瓦希里语——好像有一套“出厂设置”在背后兜底。而这件事的对面站着今天的AI。大模型背下了万亿级的语料能写代码、能翻译、能对答如流但一碰到需要真正“递归嵌套”的句子就开始露怯。我研究自然语言处理有年头了这几年最常被问到的一个问题就是AI是不是已经学会语言了我的回答通常是一句反问那你觉得人类语言最核心的特征是什么你自己可能都说不清。其实答案就藏在题目里——无限嵌套结构符号系统后天习得。这三样组合在一起才是人类语言的独特之处。这篇文章我想把这件事彻底拆开语言为什么是无限嵌套的符号系统到底指什么婴儿凭什么“给什么环境就习得什么语言”以及AI的“语言学习”和人类婴儿的“语言习得”之间究竟差在哪一层。1. 无限嵌套人类语言最反直觉的“超能力”1.1 从一个可以无限套娃的句子开始“我知道你知道小明以为小猫觉得鱼很好吃。”这句话可以无限续下去“我知道你知道小明以为小猫觉得鱼很好吃。”“老王知道我知道你知道小明以为小猫觉得鱼很好吃。”“李姐知道老王知道我知道你知道小明以为小猫觉得鱼很好吃。”……没有尽头。哪怕我把全世界的词都用光了只要还有“某个人知道/以为/觉得”句子就能再长一层。语言学的行话叫“递归性”recursion通俗讲就是把一个句子装进另一个句子里像俄罗斯套娃一样一层套一层。这不是什么艰深的学术概念你日常说话天天在用——“他说她以为我知道那件事”就是三层嵌套。这个概念之所以重要是因为它把人类语言和地球上所有动物交流系统彻底划开了一道界限。蜜蜂跳舞能告诉同伴花在哪、大概多远但蜜蜂没法说“昨天的花比前天的好而且我觉得明天还会开新的”。猴子有报警叫声能区分“蛇来了”和“鹰来了”但没法说“如果鹰没来就好了”。动物的信号系统是封闭的有多少种情形就有多少个信号人类的语言系统是开放的有限的词汇加上一条“句子可以套句子”的规则就能生成无限多的新句子。德国语言学家洪堡特在两百多年前就总结过一句话语言是“有限手段的无限运用”。乔姆斯基后来把这个思想数学化了——“离散无限”discrete infinity。离散意思是句子由一个个分立的词组成不是连续滑动的音调无限意思是可能句子的数量没有上限。这套生成机制的核心就是嵌套。1.2 语法上无限脑子上有限这里有个特别有意思的落差也是我每次做科普必讲的点语言规则允许无限嵌套但人脑处理嵌套的能力非常有限。英语里有个经典的中心嵌套center embedding例子一层The dog that the cat bit chased the rat. 猫咬的那只狗追了老鼠。两层The dog that the cat that the mouse saw bit chased the rat. 老鼠看见的那只猫咬的狗追了老鼠。三层The dog that the cat that the mouse that the flea bit saw bit chased the rat.读到第三层绝大多数人的反应是这什么玩意语法上它其实是合法的但人脑的“工作记忆”已经扛不住了。这说明什么说明“递归生成规则”和“在线理解能力”是两套系统。语法可以无限处理器有上限。就像你的电脑硬盘能装无限多的文件理论上但内存就那么点打开太大的文件照样卡死。这个落差也是AI的照妖镜。大模型在训练语料里见过的嵌套句绝大多数是一到两层的浅层嵌套深层嵌套的句子在自然文本里罕见所以模型缺乏有效统计信号。你让它生成“我知道你知道他以为……”前两层没问题到第四五层就开始丢信息、指代错乱、甚至直接语法崩坏。这不是偶然的bug是统计模型对“深度”这种结构特征的天然盲区。后面我会专门展开讲。2. 符号系统语言不是声音的堆砌2.1 能指与所指符号的任意性第二件事得说清楚语言是一套符号系统。什么叫符号符号就是“用一个东西代表另一个东西”。红灯代表停国旗代表国家文字“水”代表那个无色无味的液体。索绪尔现代语言学之父管这叫“能指”signifier和“所指”signified——声音或字形是能指心里想的概念是所指。关键在“任意性”为什么这种声音代表水的概念没有任何必然理由。英语叫water日语叫mizu中文叫“水”发音完全不同指的东西一样。反过来同一个声音shuǐ在中文里可能是“水”换个声调可能是“睡”。符号和对象之间没有自然联系全靠社会约定。这就是为什么一个婴儿放在任何语言环境里都能习得当地语言——因为符号连接是后天建立的不是先天刻在基因里的。任意性听起来简单但它是人类语言区别于动物信号的一个分水岭。动物信号往往是“索引性的”狗吼叫是因为它真的愤怒蜜蜂跳舞是因为真的有花。信号和意义强绑定甚至无法抑制。人能撒谎就是因为语言符号和现实可以脱钩——“我昨天去了图书馆”这件事跟客观事实没有绑定关系说出来就是一种符号操作。AI生成文本也是符号操作但这里有个微妙的区别人类用符号表达“自己头脑里的意义”生成式AI做的是“按概率组合语料中的符号序列”。形式上像来源上完全不同。2.2 双重分节从无意义到有意义的第一次跃迁符号系统还有一个经常被忽略但极其重要的结构特征双重分节duality of patterning。这个词听着别扭解释完你会觉得人类进化出语言真是开了挂。第一层分节是无意义的音位层。普通话里有大约二十来个声母、三十几个韵母、四个声调它们本身没有任何意思。b、a、sh、ui单独拿出来都是“零含义”。第二层分节是有意义的词素层。把无意义的音位按规则拼起来就得到了有意义的单位ba爸shui水。再从词素拼成词词拼成句子句子拼成语篇——层级一路向上无穷无尽。双重分节的意义在于“用极少的材料搭建极大的系统”。人类语言音位一般只有几十个却能拼出几万个词再拼出无限多的句子。动物交流基本停留在“一个信号对应一个意义”的单层结构上扩展现有词库只能靠增加新信号而人类靠的是组合。这也是为什么我说“语言不是声音的堆砌”——声音只是最底层的砖头真正值钱的是砖头之间的组合规则。美国语言学家Hockett把人类语言的特征总结成“设计特征”design features任意性、双重分节、位移性能谈论不在眼前的东西、生产性能说出从未听过的新句子、文化传递语言靠学习不靠基因遗传……拿这套标准去量动物信号和AI生成差距一目了然。我做语言对比时最喜欢用一张表这里直接给出来特征人类语言动物交流AI大模型生成递归嵌套语法规则支持无限嵌套基本不存在统计近似深度一高就崩符号任意性能指与所指无必然联系信号与情境强绑定学习语料里的统计关联无真正的“约定”双重分节音位层无意义词素层有意义无层级组合有token化层级但非语言学的分节机制位移性自由谈论不在场、不存在的事物大多只能“此时此地”可复述语料中的话题无真实的时空指涉习得方式有限输入即可童年期完成先天固化为主海量数据反复训练这张表列完你大概就能明白AI和人类语言之间的距离不只是“聪明不聪明”的问题而是底层机制根本不同。3. “后天学习”的真相婴儿凭什么在哪都能学会3.1 给什么语种就学什么但不等于白纸第三个关键词是“后天学习”。这句话得掰开揉碎讲因为很多人会把“后天学习”理解成“一张白纸”。真不是。婴儿确实在任何一个语言环境里都能习得当地语言——这是事实。但如果你观察过小孩学说话的细节会发现他们绝不只是被动模仿。最经典的证据是“过度泛化”overgeneralization英语母语的小孩会说“I goed to school”“I footed the ball”把不规则动词和名词硬套成规则形式。没有任何大人会教小孩“goed”——他爸妈一辈子没说过这个词。小孩自己根据“动词过去时加ed”的规则类推出来了。这说明什么说明婴儿的头脑里自带了一台“规则提取器”——只要喂给他有限的语言样本他就能自动归纳出语法规则然后举一反三地用出去。乔姆斯基管这个叫“语言习得机制”LAD强调人类天生就有点“语言器官”另一派学者强调输入和统计学习认为婴儿靠的是概率推断。两派吵了几十年但有一个共识人类婴儿对语言结构有天然的敏感这种敏感是物种级的不是哪个特定家庭、特定文化教出来的。没有这种先天机制你没法解释为什么一个孩子“给什么环境学什么语言”还能学得又快又稳。没有后天输入你也没法解释为什么狼孩回到人类社会之后再学语言就非常困难。先天倾向和后天输入缺一不可。“后天学习”这四个字指的是“语言的具体形态靠环境塑造”而不是“学习语言的能力也是环境给的”。3.2 输入、互动与关键期那婴儿具体是怎么从零开始“习得”的语言学家普遍认可几个阶段0到6个月咿呀学语发出各种音节的雏形1岁左右蹦出第一个词18到24个月词汇量爆炸式增长2到3岁开始组句3到5岁语法系统基本成型。整个过程不需要专门“上课”只需要待在活跃的语言环境里有人跟他讲话他就自己完成了。这里面有两个关键变量。一个是输入量一个是互动质量。研究者统计过不同家庭的孩子每小时听到的词汇量差距可以拉大到几倍甚至十几倍而这种差距会切实影响后来的词汇发展和学业表现。还有一个特别容易被忽视的点互动比“听到”更重要。孩子不只是“听录音”学会语言的他需要有人回应——他指着杯子说“水”大人说“对你要喝水吗”这种一来一回的“语义对齐”才是习得发生的真正现场。语言习得还有个关键期critical period。学界对具体年龄界限有争议但大方向是过了青春期再学第二语言口音和语法都很难达到母语者水平。不是不努力而是大脑的可塑性窗口已经关了一大半。这再次说明语言习得是一项“生物钟控制”的先天能力不是纯粹的通用学习能力。聋童的案例更典型只要从小接触手语他们照样能习得一套完整符号系统发展出精细的语法——说明人类要的不是“某种语言的音频”而是“可交互的符号系统”。4. 大模型学到的和婴儿学到的是同一个东西吗4.1 预测下一个词统计逼近符号系统现在该正面谈AI了。主流大语言模型LLM的核心训练任务听起来简单得像骗小孩给定前面的一段文本预测下一个词。比如输入“今天天气很”模型计算下一个词是“好”的概率、是“差”的概率、是“热”的概率……然后挑一个输出。就靠这一个任务喂进去数万亿token一个中文词大概对应一到两个token模型反复调整参数最终表现出了让全世界震惊的语言能力。为什么“预测下一个词”能产生这么强的效果因为语言本身就是一个高度有规律的符号序列。为了预测下一个词模型被迫学会词汇搭配、句法结构、语义关系、甚至一定程度上的推理模式。我在实际测试里看到过模型写出逻辑严密的三段论证——它并不是真的在“论证”而是把训练语料里类似论证的统计模式复现了出来。这有点像你听熟了方言的声调格局虽然不知道每个字怎么写但下一句该是什么调你已经能估个八九不离十。但这里有个致命的前提统计规律不等于符号规则。人类语言符号系统的核心是“规则生成”大模型的核心是“概率关联”。规则生成是因为句子可以由“名词短语动词短语”构成所以这个句子“注定”合法。概率关联是因为训练语料里这种搭配出现了很多次所以这个句子“可能”更自然。前者是决定性的后者是统计性的。4.2 深嵌套与长距离依赖AI的软肋大模型在递归嵌套上的短板是这个“统计vs规则”分歧最明显的实验场。我测试过的主流模型普遍能轻松处理“我知道你知道……”两三层嵌套但一旦深度拉到四层以上或者嵌套出现“中心嵌入”结构就是前面举的狗咬猫追老鼠那种输出质量断崖式下跌——主语和谓语对不上了修饰关系错乱了甚至直接出现语法不合法片段。问题出在哪根子上在于Transformer架构的注意力机制。注意力机制擅长捕捉“局部相关性”——相邻几个词之间的关联模式学得又快又好。但深层嵌套结构意味着“相关”的两部分之间隔着很长的距离而且中间还套着别的成分。模型没有像人脑那样的“栈”stack没法在处理完内层句子之后优雅地把外层的“待办事项”弹回来。它只是在训练数据里见多了浅层嵌套的模板然后靠模式复制来“假装”理解。换句话讲它不是不会是根本没长出处理“任意深度”的器官。学术界做过大量研究结果都指向同一个结论LLM对深层嵌套缺乏系统性泛化能力。给它一种没见过的嵌套句式它能理解换个结构再嵌套一层它又悬了。这跟人类小孩完全不同——小孩学会“句子可以套句子”这条规则后原则上能处理任何深度的嵌套生成虽然在线处理时受记忆限制但不至于完全懵。人类对递归规则的把握是“生成性的”模型对嵌套模式的把握是“记忆性的”。4.3 数据效率的鸿沟还有一个数字对比每次我拿出来都能吓到人。一个正常发育的婴儿长到三岁大概听过几千万词级的语言输入研究界估计在几百万到几千万词之间取决于家庭交谈密度。而一个主流大模型的训练语料是以万亿token为单位的——注意万亿比三岁小孩多了五六个数量级。也就是说人类婴儿用极少的数据学会了语法规则、语义系统、语用习惯大模型用海量的数据换来了一个“表面流利”的统计复制品。这中间差出来的那几个数量级恰恰就是“先天结构”和“后天堆料”的差距。我常跟朋友开玩笑说如果让婴儿像GPT一样吃语料他得读几十辈子才吃够——但人不需要因为人脑不是靠数据量赢的是靠结构约束赢的。这不是说统计方法没有价值。恰恰相反统计学习是婴儿也在用的策略之一。差别在于婴儿的统计学习发生在强先验结构的约束下而大模型的统计学习几乎没有任何结构先验。它完全靠数据“涌现”出一些类似规则的东西但那些东西本质上还是概率分布不是显式的符号规则。5. 编程语言、自然语言与AI语言三种“递归”的对照5.1 C语言递归与“非递归”规则是写死的执行是机械的说到递归中文语境里大多数人第一时间想起的其实是“语言”这个词的另一个意思——编程语言。热搜榜上天天飘着“C语言”“快速排序非递归”“递归函数”这些词。编程语言和自然语言共享一个重要属性它们都有递归结构。C语言里函数可以调用自身表达式可以套表达式语法规则用上下文无关文法context-free grammar描述天然支持无限嵌套。但编程语言的递归和人类语言的递归有个本质区别编程语言是“人写死规则机器照单执行”。编译器拿到源代码用递归下降解析器或栈结构处理嵌套表达式每一步都有明确的算法对应。它的“理解”是机械执行不是概率推测。这也是为什么编译器永远不会把花括号配对搞错——规则明确执行确定。有意思的是真实工程里程序员经常刻意把递归改成非递归。快速排序递归实现只有十行但递归深度太大会栈溢出于是有人用显式栈写出迭代版本。这个操作在AI语境下有奇妙的对应Transformer没法像人一样“推入栈再弹出”于是研究者发明了chain-of-thought思维链、显式树结构编码等方法把深层推理问题拆成一步步的浅层步骤——本质上就是把“递归”展开成“迭代”。人被栈深度限制就手动优化模型没有递归机制就靠“把步子拆碎”来近似。从这个角度说AI工程界和程序员社区踩的是同一个坑。5.2 三种“语言”的核心差异把自然语言、编程语言、AI模型语言放在一起对比能看得很清楚维度自然语言人类编程语言形式语言AI模型语言统计语言规则来源社会约定自然涌现人类设计标准文档定义从语料中统计归纳无明文规则递归结构规则允许无限嵌套语法定义允许无限嵌套仅能近似浅层嵌套语义基础与真实世界体验绑定由运行结果定义语义严格由词与词的共现模式定义歧义处理靠语境、常识消歧语法无歧义或明确定义概率排序常常把歧义“平均掉”习得方式婴儿期少量输入即可习得系统性学习语法和接口文档万亿级数据大规模训练这张表教给我一个道理“语言”这个词在三种语境下指的东西重合度没有想象中高。自然语言是“意义驱动、规则涌现”编程语言是“规则预先、执行确定”AI模型语言是“数据驱动、性能表面化”。拿编程语言的严谨去要求自然语言你会疯拿大模型的流畅去证明它理解了语言你也会疯。5.3 这给AI研究带来什么启发看清这三种语言的差异之后AI研究的破局方向其实就浮出水面了神经符号结合。也就是保留神经网络强大的统计学习能力再把显式的符号规则、递归结构注入进去。这几年有不少团队在尝试喂给模型“语法树监督信号”或者在模型内部加“栈机制”甚至直接在推理时让模型先生成结构化草图再展开成文本——都是在把人类语言的递归性、符号性以某种形式“植入”模型。我对这类方向的看法比较乐观。婴儿习得的成功本身说明大脑里那套符号系统不是凭空出现的也不是全靠样本堆出来的而是先天结构后天输入的产物。那按理说只要我们找到合适的“结构先验”注入方式AI完全有可能跨越目前这个“浅层嵌套”的天花板。难点在于我们至今还没有完全清楚人脑的“先天结构”到底是什么样——LAD是怎么编码在基因里的不同语言的参数差异是怎么在习得过程中被“设置”的如果这些问题能推进AI学语言也会迎来质变。6. 常见误区与我的实测心得6.1 围绕AI与语言的三个常见误区这些年做科普和实际测试我总结出三个反复出现的误区写在这里算是给同行排雷。第一个误区“模型能流利生成模型理解语言”。流利生成只是统计复现能力理解至少要包括对结构规则的掌握、对符号的指涉能力、对真实世界的因果建模。现在的大模型在浅层任务上表现接近人但在需要深层递归、长程依赖、真实指涉的任务上稳定翻车恰恰说明“流利”和“理解”之间隔着一道鸿沟。第二个误区“婴儿学语言就是靠大数据”。婴儿的输入量跟大模型比小得可怜如果大数据就能学会语言模型应该早就超越人类了。实际差距说明婴儿一定携带了额外的结构信息统计学习只是后天习得的一部分。那些说“孩子是纯统计机器”的说法解释不了过度泛化、关键期、聋童手语这些现象。第三个误区“递归只跟句法有关语义不需要”。递归嵌套不只是句子结构的把戏它也是语义组合的基础。“我知道你不知道”这种嵌套本质是把命题作为参数传给另一个命题——这是人类复杂思想的核心运作方式。如果AI处理不好递归那它的“推理”“常识”“因果理解”都会在深层问题上受限。6.2 把递归讲给外行听的土办法最后说点实操层面的东西。如果你也需要向非专业人士解释“为什么嵌套结构是语言的灵魂”我建议用一个三分钟就能复现的小实验先让对方念一遍“猫追老鼠”。然后让他改成“狗追猫猫追老鼠”——把两个事件串起来。再改成“我看见了那只狗狗追猫猫追老鼠”。每加一层问一个问题“这句话还是不是一个句子还能不能再套一层”对方会很快得出“似乎能一直套下去”的直觉。这个时候你再告诉他能无限套娃的机制就是递归而这是人类语言独有的。绝大多数人三分钟之内就能建立这个直觉。关于AI我还有一个固定的“体检项目”让模型写一个四层嵌套的中文句子要求保持主谓一致、指代清晰。浅套一两层的模型几乎个个能过四层还能逻辑不乱的凤毛麟角。这个测试虽然简陋但比任何复杂评测都直白——因为原生递归对人来说本来就是“语言权力的基础”模型连这关都过不了的时候你就知道它跟人类语言的差距不差在词汇量差在结构引擎。我个人在实际工作中的体会是别急着给AI判死刑也别急着给AI发语言学家证书。人类语言的无限嵌套结构、符号系统的任意性、后天习得的可塑性这三样加在一起构成了一把非常精确的尺子。拿这把尺子去量AI你会量出它真正的位置它学了一肚子“语言的影子”但还没拿到“语言的骨架”。也许下一代模型能把骨架补上——到那时候人类和机器的对话才算真正开始。