让AI辅助人类进行编程,离实现还有多远?有哪些困难和挑战?

知识点

1.AI for Code指的是使用AI技术进行编程的工作,包括但不限于使用AI支持、辅助、指导、主导软件开发的单个或全部流程。

2.常见的AI for code任务包括:代码搜索、摘要、代码补全,以及从一种编程语言到另一种的翻译等。

3.AI参与编程的难点主要包括:代码数据集本身较为离散、代码的功能语义和其字面表示之间存在较大差距、实现同一种功能的代码形式多样、代码本身具有结构复杂性。此外,代码本身是不断迭代的。

4.目前大模型已经在AI for Code领域取得了进步,CodeX、AlphaCode、PaLM等是其中的代表。

定义

AI for Code指的是使用AI技术进行编程的工作,包括但不限于使用AI支持、辅助、指导、主导软件开发的单个或全部流程。基于NLP技术,并采用代码分析和编译进行增强,最终完成实际的代码编写任务。常见的AI for code任务包括:代码搜索、摘要、代码补全,以及从一种编程语言到另一种的翻译等。[1]

随着近年来大规模预训练模型技术的快速发展,模型在语言理解和生成方面的能力取得了大幅提升,因此有研究者考虑将大模型应用在其他的序列数据上,其中就包括了编程方面的任务。

AI参与编程的难点

用深度学习直接端到端地生成代码,有一定的难度。主要的挑战有[2]:

1.代码数据集本身较为离散

据北京大学李戈教授等的研究[2],如果用视觉、语言和代码任务进行对比.

图像识别或生成中,机器学习的目标是建立一个从连续数据集到一个近乎连续,有着接近清晰边界的数据集(标签)之间的对应(映射)关系。由于图像数据稠密,标签集边界足够清晰(比如标签很详细、精确),因此视觉任务较为容易学习。

语言上的任务则相对较难,因为模型需要从一个较为连续(离散度高于图像),有着较清晰边界的数据集(如某种语言)建立与另一个数据集之间的映射关系。由于文本数据相对稀疏,所以难度较高,需要更大规模的模型来学习数据的特征。

在代码任务(如代码生成)上,从编程者的意图中生成代码,可以看所是“意图空间”到“代码空间”之间的映射。这是从一个较为连续、有较清晰边界的数据集(人类的意图,以文本的形式出现)向一个离散而没有清晰便捷的数据集进行映射(实现意图的代码数据非常稀疏),因此难度很大。

2.代码功能语义和其字面表示之间存在较大差距

代码任务要求模型的理解和生成足够精确。例如,在一些编程语言中,改变一个字符就可以改变一行代码的功能。

3.实现同一个功能的代码多种多样

有多种形式的代码能够实现同一种功能,不能说一种是对的另一种就是错的。

4.代码本身具有结构复杂性

代码的语义依赖其结构进行表达,如不同行之间的缩进关系,很难用预训练模型来捕捉这种关系。此外,代码是经常迭代的,采用预训练模型可能无法及时捕捉其最新的特征和变化。

因此,在超大规模预训练模型,如GPT-3等出现之前,即使是使用预训练模型,其性能也没有特别好。在实际的应用过程中,研究者需要改变生成方式(从完全生成转向补全),并采用规则、句法树等方式,来规范模型的结果。

当前的AI for Code发展情况

随着CodeX、AlphaCode、PaLM等模型的出现,AI在多种编程任务上的性能快速提升。

1.CodeX

CodeX是OpenAI在2021年8月发布的一个预训练模型,采用自然语言和代码进行测试,能够完成代码生成、补全、生成测试用例等功能。目前已作为Copilot插件的核心模型,在VS Code等平台应用。[5]

2.AlphaCode

AlphaCode是DeepMind在2022年2月发布的一个模型,用于解决竞赛性编程问题。AlphaCode在面对更加复杂、甚至是未知的编程问题时,都具有较强的可解释性和不错的效果。在5000名人类参与者的测试中,AlphaCode的平均性能排名在54.3%[3]。

3.PaLM

PaLM是谷歌在今年4月发布的一个超大规模预训练模型,在一些编程任务基准上击败了CodeX。[4]

参考链接

[1] IBM-Project CodeNet: https://github.com/IBM/Project_CodeNet

[2] DL时代的代码补全利器,北大出品,效果远超语言模型:https://mp.weixin.qq.com/s/NCwBMAkC3uAS9Zr7Olcp7w

[3] Chowdhery, Aakanksha, et al. "PaLM: Scaling Language Modeling with Pathways." arXiv preprint arXiv:2204.02311 (2022).

[4] Li, Yujia, et al. "Competition-Level Code Generation with AlphaCode." arXiv preprint arXiv:2203.07814 (2022).

[5] 超大规模智能模型产业发展报告:https://baai.org/l/MdRePort

内容中包含的图片若涉及版权问题,请及时与我们联系删除