TypeProbe: 从预训练代码模型的隐藏状态中恢复类型表示

arXiv cs.CL 论文

摘要

本文探究预训练代码模型是否在其隐藏状态中编码了类型信息,通过对Java和Python示例使用线性探针进行研究。结果表明,即使是从无类型代码中也会出现跨语言的类型表示,并且这些表示对词汇扰动和句法变化具有鲁棒性。

arXiv:2607.08339v1 公告类型: 新 摘要:最先进的代码模型取得了令人瞩目的性能,但它们内部编码类型信息的程度仍知之甚少。我们使用Java和Python代码示例的平行数据集,对预训练代码模型的残差流进行内部类型表示的探测。结果表明,即使是从无类型代码中也会出现跨语言的类型表示。此外,我们通过在一个语言上训练探针来推断另一个语言中的参数和结果类型,测试隐藏状态是否线性地编码了由类型化函数应用隐含的结果类型。最后,我们发现这种结构对词汇扰动和跨语言句法变化具有一定的鲁棒性。据我们所知,先前关于代码模型可解释性的工作并未直接针对形式类型语义或跨语言类型表示。我们已公开代码和数据集。
查看原文
查看缓存全文

缓存时间: 2026/07/10 06:14

# TypeProbe: 从预训练代码模型的隐藏状态中恢复类型表示

来源:https://arxiv.org/html/2607.08339

ILLC,阿姆斯特丹大学,阿姆斯特丹,荷兰
[email protected], [email protected]

###### 摘要

当前最先进的代码模型取得了令人印象深刻的性能,但它们在内部编码类型信息的程度仍知之甚少。我们使用 Java 和 Python 代码示例的并行数据集,探测预训练代码模型的残差流中的内部类型表示。我们的结果表明,即使从未类型化的代码中,也能出现跨语言的类型表示。此外,我们通过在一个语言上训练探针来推断另一个语言中的参数和结果类型,测试隐藏状态是否线性编码了类型化函数应用所隐含的结果类型。最后,我们发现这种结构在一定程度上对词汇扰动和跨语言句法变化具有鲁棒性。据我们所知,先前关于代码模型可解释性的工作并未直接针对形式类型语义或跨语言类型表示。我们公开发布了代码和数据集<sup>1</sup>。

<sup>1</sup>https://github.com/anticleiades/TypeProbe

## 1 引言

当前最先进的代码模型在下一个词元预测方面表现出色,但仍然可能违反形式类型系统的约束。例如,在生成的 TypeScript 中,近 94% 的编译错误源于类型检查失败[10](https://arxiv.org/html/2607.08339#bib.bib10)。类型约束解码[10](https://arxiv.org/html/2607.08339#bib.bib10)通过外部强制语言特定的规则来缓解这一问题,但这种方法假设模型无法内化形式类型信息,并且需要为每种语言设计专门的机制。诊断探针已成为研究神经表示中编码的抽象信息的标准工具[1](https://arxiv.org/html/2607.08339#bib.bib1), [7](https://arxiv.org/html/2607.08339#bib.bib7), [4](https://arxiv.org/html/2607.08339#bib.bib4),而先前关于预训练代码模型的工作表明,它们更容易捕获语法、标识符和命名空间,而非复杂的语义属性[13](https://arxiv.org/html/2607.08339#bib.b

相似文章

编码智能体提前思考

Hacker News Top

本文研究了编码智能体中的语言模型如何在迭代编辑过程中内部表示不断演变的程序。作者发现,线性探针可以从残差流中解码程序属性(例如解析、测试通过率),并且令人惊讶的是,这些表示在代理实际进行编辑之前就能预测未来结果,揭示了一个“潜在编程视野”。