这篇AI论文解释了如何通过指令调优来增强编程语言之间的互补性
This AI paper explains how to enhance the complementarity between programming languages through instruction tuning.
大型语言模型(LLMs)的引入席卷了整个世界。这些模型以模仿人类生成独特且有创造力的内容以及回答问题的方式而闻名。这些模型还能够对长段落的文本进行摘要,翻译语言和完成代码。专门用于生成代码的LLMs的发展最近取得了显著的增长。这些模型出色的代码生成能力,也被称为代码LLMs,引起了学术界和工业界的广泛关注。CodeGeeX、StarCoder、CodeLlama和Codex是最近推出的一些值得注意的代码LLMs。
指令调整算法的应用是代码LLMs领域的一项令人着迷的突破。最近的研究探讨了向LLMs教授如何按照特定指令进行操作以提高其代码生成能力的想法。最近的一项研究探索了一个有趣的思路,即一旦人类程序员掌握了一种编程语言,他们可能更容易学习第二种语言。这项研究的主要目标是确定在大型语言模型调整指令时,各种编程语言是否可以相互补充。
为了探索和研究这个理论,一组研究人员进行了一系列广泛的实验,涉及到八种流行的编程语言:Python、JavaScript、TypeScript、C、C++、Java、Go和HTML。这些语言包括了广泛的编程范式和用例,从像HTML这样的标记语言到像C和C++这样的系统级语言,以及像Python和JavaScript这样的脚本语言。这些测试的主要目标是观察是否在一种编程语言中进行指令微调可以提高代码LLM在另一种语言中的性能。这些测试使用的代码LLM是StarCoder。
为了确保指令符合每种语言的语法和要求,创建这些语言特定指令的方法包括通过深入进化或在HTML的情况下进行广度进化来修改最初的基于Python的种子指令。深入进化是一种通过从基于Python的种子指令开始,使其更加复杂和针对目标语言的方法,以捕捉特定于语言的细微差别。另一方面,广度进化涉及到创建完全针对HTML的全新指令,而不是从基于Python的指令开始,以认识到HTML在Web开发中的独特性。
实验的结果得出了一些强有力的结论。研究表明,在代码生成任务中,编程语言确实有能力比其他语言表现明显更好。例如,在使用HumanEval-X基准测试的Java代码上进行测试时,一个名为CODEM-Python 15B的代码模型,该模型是在Python数据上训练的,显示出了17.95%的绝对准确率提升。这一发现表明,对一种语言(如Python)的了解可以显著提高在另一种语言(如Java)中的代码生成能力。
更令人惊讶的是,当应用于HTML(一种标记语言)的语料库时,CODEM-HTML 7B显示出了15.24%的显著绝对准确率提升。这意味着即使是根本不同的语言,如标记语言HTML和传统的编程语言Java,也可以相互提高彼此的代码生成能力。