无语义的语法:教会大语言模型用未见过的语言编程

arXiv cs.CL 论文

摘要

本文介绍了PyLang,一种在所有预训练语料库中都不存在的编程语言,并表明在其上微调的大语言模型可以学习语法但无法迁移算法推理,导致出现“实现忠实度差距”——模型理解算法但无法用不熟悉的语言表达它们。

arXiv:2605.15607v1 Announce Type: new 摘要:大型语言模型(LLMs)在代码生成基准测试中取得了高通过率,但它们能否将此能力迁移到预训练中未出现的语言,目前仍知之甚少。我们引入了PyLang——一种在所有预训练语料库中均不存在的最小命令式语言,并评估了前沿模型在零样本和微调Qwen3(4B、8B、32B)情况下在352个问题上的表现。我们发现,微调能快速教会语法,但无法迁移语义能力:在所有配置中,Python比PyLang高出多达19%,且没有任何干预措施(多任务学习、偏好调整、代码填充或潜在空间目标)能缩小这一差距。一个LLM评判器显示,前沿模型80%的时间选择了与Python相同的算法,却无法将其转化为可工作的PyLang实现。CKA分析证实,微调模型在不同语言上收敛到几乎相同的内部表示(CKA > 0.97),但在输出阶段出现分歧。我们将此称为实现忠实度差距:模型拥有与语言无关的算法理解能力,但无法用不熟悉的语言表达出来。我们的研究结果强调了需要研发将推理与特定语言实现解耦的训练方法。
查看原文
查看缓存全文

缓存时间: 2026/05/18 06:33

# 无语义的语法:教授大语言模型用一种未见过的语言编程 来源:https://arxiv.org/html/2605.15607 Vinayshekhar Bannihatti Kumar\*, Disha Makhija\*, Manoj Ghuhan Arivazhagan Rashmi Gangadharaiah AWS AI Labs \{vinayshk,dismakhi,mghuhan,rgangad\}@amazon\.com ###### 摘要 大语言模型(LLM)在代码生成基准测试中取得了很高的通过率,但它们在预训练中未见过的语言上能否迁移这种能力,仍然知之甚少。我们引入了 PyLang,一种在预训练语料中完全不存在的最小化命令式语言,并在 352 个问题上评估了前沿模型的零样本表现以及微调后的 Qwen3(4B、8B、32B)。我们发现微调能快速教会语法,但无法迁移语义能力:在所有配置下,Python 的性能比 PyLang 高出多达 19%,而且没有任何干预措施(多任务学习、偏好调优、代码填充或潜在空间目标)能弥合这一差距。一个 LLM 评判器揭示,前沿模型 80% 的时间会选择与 Python 相同的算法,却无法将其转化为可工作的 PyLang 实现,而 CKA 分析证实,微调后的模型在不同语言上收敛到几乎相同的内部表示(CKA > 0.97),但在输出阶段出现分歧。我们将此称为**实现保真度**差距:模型具备与语言无关的算法理解能力,但无法用不熟悉的语言表达它。我们的研究结果强调了训练方法需要将推理与特定语言的实现解耦。 11footnotetext:同等贡献。 ## 1 引言 大语言模型(LLM)在代码生成基准测试中取得了很高的通过率,并为数百万开发者提供生产级编码助手(Chen 等人,2021(https://arxiv.org/html/2605.15607#bib.bib1);Rozière 等人,2023(https://arxiv.org/html/2605.15607#bib.bib3);Li 等人,2023(https://arxiv.org/html/2605.15607#bib.bib4))。然而,现实世界的需求远远超出了预训练语料:领域特定语言、专有语法以及像 Mojo 和 Carbon 这样的全新语言仍在不断涌现。跨语言评估表明,模型在低资源语言上的性能急剧下降(Cassano 等人,2023b(https://arxiv.org/html/2605.15607#bib.bib16);Baltaji 等人,2023(https://arxiv.org/html/2605.15607#bib.bib19)),最近关于深奥语言的研究表明,LLM 推理可能过度拟合训练语法(Sharma 和 Chopra,2026(https://arxiv.org/html/2605.15607#bib.bib24);Han 等人,2025(https://arxiv.org/html/2605.15607#bib.bib25))。为了使 LLM 在这些场景中有用,它们必须将在预训练中获得的算法推理迁移到新语言,而不仅仅是学习其表面语法。如果这些技能仍然局限于熟悉的语言,LLM 对于新兴语言的实际价值将受到严重限制。

这种期望基于一个隐含的假设:预训练赋予模型**通用的算法推理**能力,这种能力可与任何特定语言分离,并能与新学习的语法组合,从而在目标语言中生成正确的代码。如果这个假设成立,适应过程就很简单:教会模型新语法和少量惯用表达,已有的算法知识就会迁移。如果不成立,且代码生成能力与预训练中见过的特定语言深度纠缠,那么每一种新语言都需要远远超出实践者预期的数据和计算资源,预训练的好处仍然局限于它已经覆盖的语言。

区分这两种可能性需要回答一个具体问题:*当我们微调模型学习一种新语言的代码时,它实际上学到了什么?* 它是否获得了在新语言中的真正问题解决能力,还是仅仅学习了语法,而将其算法知识局限于熟悉的语言?用现有语言回答这个问题很困难:对 Python 或 Java 进行微调会将新学习与预训练中已经见过的数十亿行相同语言代码混淆(Cassano 等人,2023a(https://arxiv.org/html/2605.15607#bib.bib18);Giagnorio 等人,2025(https://arxiv.org/html/2605.15607#bib.bib21))。我们通过引入 PyLang 来解决这个混淆问题,这是一种特意设计的、在任何预训练语料中均未出现过的编程语言。PyLang 使用熟悉的 C/JavaScript 语法,但去掉了 for 循环、标准库和所有高级抽象,因此学习语法很容易,但编写正确的解决方案需要从头构建常用操作(§2(https://arxiv.org/html/2605.15607#S2))。我们分别对 Qwen 3 模型(Yang 等人,2024(https://arxiv.org/html/2605.15607#bib.bib11))在 Python 和 PyLang 解决方案上进行微调,针对相同问题。Python 模型的能力反映的是预训练*加上*微调的结果;PyLang 模型的能力*完全*来自微调。比较两者可以清晰地分离出有多少算法推理实际上迁移到了新语言。

我们的贡献如下:
1.  **PyLang:跨语言迁移的受控测试平台**。我们设计并发布了 PyLang,一种在预训练语料中完全不存在的最小化图灵完备语言,并提供了 2,250 个训练问题和 352 个测试问题(251 个分布内 Codeforces(Penedo 等人,2025(https://arxiv.org/html/2605.15607#bib.bib41))和 101 个分布外 MBPP(Austin 等人,2021(https://arxiv.org/html/2605.15607#bib.bib2)))的并行 PyLang 和 Python 解决方案。PyLang 熟悉的语法但刻意贫乏的语义,将模型能从微调中学到的内容与从预训练继承的内容分离开来,为未来代码生成研究提供了一个可重复使用的基准(§2(https://arxiv.org/html/2605.15607#S2))。
2.  **跨规模、方法和模型族的系统评估**。我们评估了前沿模型(Sonnet 4.5, Sonnet 4, GPT 5.4)的零样本表现,并在两种 SFT 策略(直接问题到代码和多任务配合中间推理(Jiang 等人,2024(https://arxiv.org/html/2605.15607#bib.bib31)))、两种偏好调优方法(DPO(Rafailov 等人,2024(https://arxiv.org/html/2605.15607#bib.bib37))和 GRPO(Shao 等人,2024(https://arxiv.org/html/2605.15607#bib.bib38)))以及两种定向干预(代码填充和 JEPA)下微调了开源 Qwen 3 模型(4B、8B、32B)。差距在前沿模型中已经存在,但在开源模型中更为严重:Sonnet 4.5 显示出 30% 的缺陷,而微调的 Qwen 模型在所有配置下显示出 11-34% 的差距(§3.3(https://arxiv.org/html/2605.15607#S3.SS3)、§4.3(https://arxiv.org/html/2605.15607#S4.SS3))。
3.  **通过汇聚证据诊断瓶颈**。我们确定了**实现保真度**,即用给定的语言将正确算法实现为可工作代码的能力,是主要的瓶颈,这得到了三条证据的支持:(i) 一个 LLM 评判器显示,前沿模型在 PyLang 和 Python 中 80% 的时间选择相同算法,但 PyLang 实现却无法通过测试用例;(ii) 错误分解显示,75% 的失败涉及正确的算法但实现有 bug,而非错误的算法选择;(iii) 机制可解释性证实,微调后的 PyLang 和 Python 模型收敛到几乎相同的内部表示(CKA > 0.97),但在输出阶段出现分歧(§4.1(https://arxiv.org/html/2605.15607#S4.SS1)、§5(https://arxiv.org/html/2605.15607#S5))。这些贡献共同表明,LLM 具备与语言无关的算法理解能力,但无法用不熟悉的语言表达它(Basu 等人,2026(https://arxiv.org/html/2605.15607#bib.bib36)),并为开发将推理与特定语言实现解耦的训练方法提供了基础和基准。

## 2 PyLang:语言设计与原理

将微调的贡献与预训练的贡献分离开来,需要一个满足两个特性的目标语言:(i) 它必须*不在*任何预训练语料中,这样该语言的任何能力完全来自微调;(ii) 它必须是*图灵完备*的,这样每个在 Python 中可解的问题在目标语言中也可解,跨语言比较才有意义。我们设计了 PyLang 来满足这两个要求,同时创建一个分离语法习得与语义能力的受控测试平台。

PyLang 是一种最小化命令式语言,其设计反映了三个深思熟虑的选择。

**熟悉的表面语法**:PyLang 从 C/JavaScript 家族借用了花括号块定界符、分号终止语句以及 `function` 关键字。这些元素在预训练语料中有很好的代表性,允许模型利用已有的分词和语法模式知识。意图是使语法习得*容易*:如果模型在学习语法后仍然失败,那么失败一定在其他地方。

**刻意贫乏的语义**:PyLang 省略了 for 循环、列表推导式、类、异常处理和整个标准库。所有迭代必须使用 while;所有字符串到整数的转换、分词和排序必须从原始操作手动实现。这在语法能力(编写能解析的代码)和语义能力(编写能计算出正确答案的代码)之间创造了巨大的差距,这正是我们希望测量的差距。

**受控的特性集**:表 1(https://arxiv.org/html/2605.15607#S2.T1)列出了支持的和排除的特性,并附有说明实际后果的示例。包含的原始类型(整数算术、字符串连接、while 循环、条件判断、用户定义函数、基于字典的数组、print() 和 len())使 PyLang 图灵完备。排除的特性代表了使 Python 简洁且模型有丰富组合经验的高级抽象。通过移除它们,我们迫使模型从基本原理重建常用操作,测试预训练期间获得的算法知识是否能够通过不熟悉的低级构造表达出来。成对计数示例说明了这种差距:算法核心在两种语言中是相同的,但 PyLang 缺少 int()、split() 和 for 循环,增加了实现错误的表面,而没有改变底层的算法挑战。

**表 1:特性对比与说明性示例,展示 PyLang (PL) 刻意贫乏的语义。**

| 特性 | PL | Py |
|------|----|----|
| 算术 | ✓ | ✓ |
| 字符串 | ✓ | ✓ |
| 变量 | ✓ | ✓ |
| while | ✓ | ✓ |
| if/else | ✓ | ✓ |
| 函数 | ✓ | ✓ |
| 字典 | ✓ | ✓ |
| print/len | ✓ | ✓ |
| for | ✗ | ✓ |
| 推导式 | ✗ | ✓ |
| 类 | ✗ | ✓ |
| 异常 | ✗ | ✓ |
| 标准库 | ✗ | ✓ |

```python
def solve(a, n):
    total = sum(a)
    count = 0
    for i in range(n):
        for j in range(i+1, n):
            if n * (a[i] + a[j]) == 2 * total:
                count += 1
    print(count)
```
Python 函数 `solve(a, n) {
    count = 0; i = 0; sum = 0; t = 0;
    while (t > 0.97)` 但产生了显著不同的输出。关于相关工作综合讨论,参见附录 E(https://arxiv.org/html/2605.15607#A5)。

## 7 结论

LLM 代码生成的一个核心问题是,预训练期间获得的算法推理能力能否迁移到模型从未见过的语言。本文的研究表明,答案是微妙的:模型通过微调快速学习新语言的语法,但始终无法产生语义正确的实现。我们使用 PyLang,一种不在任何预训练语料中的特意构建的语言,在前沿模型和开源模型中研究这一差距,发现尽管训练数据相同,Python 比 PyLang 高出多达 19%,而且没有任何干预措施能弥合这一差距。一个 LLM 评判器显示,前沿模型 80% 的时间选择相同的算法,却无法将其转化为可工作的 PyLang 代码,证实了缺陷在于实现而非推理。这项研究的结果为更系统地研究代码生成中的跨语言迁移以及开发将算法推理与特定语言实现解耦的训练方法打开了大门。

## 伦理声明

本工作引入了一种合成编程语言(PyLang),仅用于研究目的,不涉及人类受试者、个人数据或敏感信息。基准问题来自公开可用的竞技编程平台(Codeforces)和现有的学术基准(MBPP)。我们的 LLM 评判器评估使用商业可用的 API 服务,遵循其标准使用条款。我们承认,本工作中关于 LLM 迁移限制的见解既可以带来有益的应用(改进欠服务语言的代码助手),也可能带来潜在的误用(识别代码生成系统的弱点)。我们相信理解这些限制的好处大于风险。我们计划发布 PyLang、解释器和基准,以促进可重复性和进一步研究。

## 参考文献

- 用大语言模型进行程序综合。arXiv 预印本 arXiv:2108.07732。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px1.p1.1),条目 1(https://arxiv.org/html/2605.15607#S1.I1.i1.p1.1),§6(https://arxiv.org/html/2605.15607#S6.p1.1)。
- R. Baltaji, S. Pujar, L. Mandel 等人(2023)编程语言中的跨语言迁移:一项广泛的经验研究。机器学习汇刊。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px2.p1.1),§1(https://arxiv.org/html/2605.15607#S1.p1.1),§6(https://arxiv.org/html/2605.15607#S6.p2.1)。
- S. Basu, S. Y. Patel, P. Sheth 等人(2026)无行动能力的可解释性:尽管内部表示近乎完美,但机械论方法无法纠正语言模型错误。arXiv 预印本 arXiv:2603.18353。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px4.p1.1),§1(https://arxiv.org/html/2605.15607#S1.p7.1),§6(https://arxiv.org/html/2605.15607#S6.p4.1)。
- M. Budnikov 和 I. Yamshchikov(2025)合成语言的结构知识迁移。大语言模型与结构建模联合研讨会。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px3.p1.1)。
- F. Cassano, J. Gouwar, F. Lucchetti 等人(2023a)从高资源编程语言到低资源编程语言的知识迁移:用于代码 LLM。ACM 编程语言论文集 8(OOPSLA),第 677–708 页。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px2.p1.1),§1(https://arxiv.org/html/2605.15607#S1.p3.1),§6(https://arxiv.org/html/2605.15607#S6.p2.1)。
- F. Cassano, J. Gouwar, D. Nguyen 等人(2023b)MultiPL-E:一种可扩展的多语言神经代码生成基准方法。IEEE 软件工程汇刊 49(7),第 3849–3863 页。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px1.p1.1),§1(https://arxiv.org/html/2605.15607#S1.p1.1),§6(https://arxiv.org/html/2605.15607#S6.p1.1)。
- F. Chen, F. Fard, D. Lo, 和 T. Bryksin(2022)预训练语言模型在低资源编程语言上的可迁移性。IEEE/ACM 国际程序理解会议。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px2.p1.1)。
- M. Chen, J. Tworek, H. Jun 等人(2021)评估在代码上训练的大语言模型。arXiv 预印本 arXiv:2107.03374。引用自:附录 E(https://arxiv.org/html/2605.15607#A5.SS0.SSS0.Px1.p1.1),§1(https://arxiv.org/html/2605.15607#S1.p1.1),§6(https://arxiv.org/html/2605.15607#S6.p1.1)。
- M. Davari, S. Horoi, A. Natik 等人(2022)CKA 作为深度学习相似度度量的可靠性。国际机器学习大会。引用自:§5(https://arxiv.org/html/2605.15607#S5.p5.1)。

相似文章

大语言模型中的语言习得装置

arXiv cs.CL

本文提出了一种受LAD启发的预预训练方法,使用一种名为MP-Struct的形式语言,该语言编码了类自然语言结构。研究表明,这种方法提高了token效率,并赋予了模型类似人类的对结构不合理语言的抵抗力,挑战了先前关于有效预预训练语言的假设。

让语言模型学会用代码思考

arXiv cs.CL

本文介绍了 ThinC(Thinking in Code,用代码思考)框架。在该框架中,语言模型在简短的自然语言规划步骤后,仅使用代码块进行推理,在数学基准测试中优于现有的工具集成推理基线。

论大语言模型的固有可解释性:设计原则和架构调查

arXiv cs.CL

一份综合调查,回顾了大语言模型(LLM)固有可解释性的最新进展,将方法分为五个设计范式:功能透明性、概念对齐、表示可分解性、显式模块化和潜在稀疏性诱导。论文解决了在模型架构中直接构建透明性,而不是依赖事后解释方法的挑战。

rasbt/LLMs-from-scratch

GitHub Trending (daily)

该仓库提供开源代码,用于从零开始构建、预训练和微调一个类似GPT的大型语言模型,是Sebastian Raschka同名书籍的官方代码配套。