大模型与程序代码生成相关论文

1.Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation(NeurIPS 2023)

ChatGPT生成的代码真的正确吗?用于代码生成的大语言模型的严格评估

主要内容

评估由大型语言模型(LLMs)如ChatGPT生成的代码是否真正正确。

创新点

论文的创新点在于提出了一个名为EvalPlus的框架,旨在通过自动化的测试输入生成来增强给定的评估数据集,从而更严格地检查LLMs合成代码的正确性。EvalPlus使用了结合LLM和突变策略的自动测试输入生成器来产生大量的新测试案例。具体来说,它首先利用LLM生成高质量的种子输入(种子输入指的是有ChatGPT生成的一组高质量的初始测试案例),然后通过类型感知的突变进一步扩展大量输入(类型感知是指在生成或修改测试输入时考虑到数据类型的特性;突变是一种测试技术,他通过故意引入错误或改变现有代码的行为来评估测试用例的有效性)。此外,EvalPlus还提出了一种测试套件缩减方法,通过贪婪集合覆盖算法选择最有价值的测试案例,同时保持代码覆盖率和突变分析。

2.CodeGeeX: A Pre-Trained Model for Code Generation

with Multilingual Benchmarking on HumanEval-X

CodeGeeX:一个基于HumanEval-X的多语言基准测试代码生成预训练模型

主要内容

模型规模与训练数据:CodeGeeX是一个拥有130亿参数的大规模预训练模型,它在包含23种编程语言的超过8500亿个标记的代码语料库上进行了预训练。

性能评估:研究者们开发了名为HumanEval-X的多语言基准测试集,用于评估CodeGeeX在C++、Java、JavaScript和Go等语言上的代码生成能力。这是基于Python-only的HumanEval基准进行扩展的。

实际应用:CodeGeeX被集成到Visual Studio Code、JetBrains和Cloud Studio等编辑器和IDE中,每周为数以万计的活跃用户提供超过80亿个标记的代码生成服务。

创新点

开源性质:与OpenAI的Codex不同,CodeGeeX不仅开源了模型本身,还分享了如何训练如此大规模代码模型的方法,这有助于推动预训练代码模型领域的研究进展。

多任务支持:除了代码生成和代码补全功能,CodeGeeX还支持代码解释和不同编程语言之间的代码翻译。

性能优势:实验表明,CodeGeeX在代码生成和翻译任务上相对于其他同规模的多语言代码生成模型,如CodeGen-16B GPT-NeoX-20B、InCoder-6.7B和GPT-J-6B,表现出了更优的性能。

运用技术:

   神经网络架构:使用了基于Transformer架构的神经网络,这种架构特别适合处理序列数据,如自然语言或代码序列。

训练策略:采用了生成式预训练策略,以及模型并行和数据并行的训练方法,利用ZeRO-2优化器来减少优化器状态的内存消耗。

效率优化:通过内核融合和自动调优技术(如Auto Tune)提高了训练效率,特别是在Ascend 910 AI处理器集群上的计算效率。

动态学习率调整:使用Adam优化器,并且采用余弦退火策略(在训练过程中周期性的降低学习率,从而帮助模型在损失函数的最小值附近收敛)调整学习率,以保持训练过程中的稳定性和效率。

3.CodeT5+: Open Code Large Language Models for

Code Understanding and Generation

CodeT5+:用于代码理解和生成的开放代码大型语言模型

主要内容

问题与限制:现有的代码大型语言模型(LLMs)在架构上存在局限性,要么仅使用编码器或解码器,要么依赖统一的编码器-解码器网络,这在不同下游任务中可能表现不佳。同时,预训练目标的有限性也可能导致性能下降。

CodeT5+模型:提出了一种灵活的编码器-解码器架构,允许组件模块根据不同的下游代码任务进行组合。通过混合预训练目标来解决预训练与微调之间的差异,这些目标包括跨度去噪、对比学习、文本-代码匹配和因果语言模型预训练任务。

预训练数据与方法:使用多模态和多语言的代码语料库进行预训练,并且利用冻结的现成LLMs进行初始化,避免从头开始训练,以高效地扩展模型。

指令微调:探索指令微调技术,使模型能够更好地理解自然语言指令,与指令对齐,提高在零样本设置下的性能。

创新点

创新点

灵活的架构:CodeT5+的组件可以针对特定任务进行定制,提高了模型的灵活性和适用性。

混合预训练目标:采用多种预训练目标,以适应更广泛的下游任务,减少预训练与微调阶段的不一致性。

高效训练策略:利用冻结的LLMs进行初始化,结合DeepSpeed的ZeRO Stages和混合精度训练,加速大规模模型的训练过程。

指令微调:通过使用合成的指令数据进行微调,增强了模型对自然语言指令的理解能力。

运用的技术

AdamW优化器:用于所有实验,具有权重衰减功能。

DeepSpeed的ZeRO Stages:提供了训练加速,特别是在混合精度训练下,对于较大的模型版本,使用FP16冻结解码器权重,保持其他可训练权重在FP32。

“浅编码器和深解码器”架构:只有小编码器和交叉注意力层是可训练的,而深度解码器LLM被冻结。

4.Bugs in Large Language Models Generated Code:

An Empirical Study

大语言模型生成代码中的错误:一项实证研究

主要贡献

1. Bug模式分类:研究者们确定了十种独特的bug模式,包括:

   - Misinterpretations(误解释)

   - Syntax Errors(语法错误)

   - Silly Mistakes(愚蠢错误)

   - Prompt-biased code(提示偏向性代码)

   - Missing Corner Case(缺失边界情况)

   - Wrong Input Type(错误输入类型)

   - Hallucinated Object(虚构的对象)

   - Wrong Attribute(错误属性)

   - Incomplete Generation(不完整生成)

   - Non-Prompted Consideration(未提示的考虑)

2. 实证研究:研究通过在线调查验证了这些bug模式的重要性与普遍性,调查对象为34位LLM领域的实践者和研究人员。

3. 教训总结:对于用户和研究人员提供了基于研究结果的教训和建议,例如在使用LLM生成代码时可能遇到的问题,以及如何更有效地利用LLM生成代码。

4. 相关工作回顾:论文回顾了与LLM生成的bug代码相关的先前研究,强调了自动程序修复(APR)工具和基准测试在评估LLM生成代码质量方面的作用。

5. 创新点:这项研究首次系统地分析了LLM生成的bug代码特征,并构建了一个基于观察到的bug模式的分类体系。此外,通过调查研究验证了提出的分类体系对LLM生成的bug代码的适用性。与其他研究相比,该分析基于来自CoderEval基准数据集的真实编程任务,而不是仅从像LeetCode这样的平台收集的编程任务,这使得发现更具综合性。

6. 技术应用:研究中提到的Interpretable AI技术可以用于分析LLM的输入变化如何影响输出,帮助诊断和修复代码中的bug。同时,提出创建专门的基准测试来评估LLM生成代码的相关特性,以及改进现有的APR工具以适应LLM生成的代码。

5.On the Prospects of Incorporating Large Language Models (LLMs) in Automated

Planning and Scheduling (APS)(ICAPS 2024)

大语言模型在自动计划与调度中的应用前景

创新点

论文的创新点在于提出了一个综合框架,概述了LLMs如何在(自动化规划与调度)APS领域发挥作用,并识别了现有方法的局限性和研究缺口。特别是,它强调了在无需外部专家干预的情况下,从自然语言到(规划领域定义语言)PDDL的自主翻译能力是当前的一个重要研究空白。此外,论文还讨论了如何通过整合神经符号方法(神经符号方法是人工智能领域的一种混合方法,它试图结合神经网络的统计学习能力和符号推理的精确性和可解释性。这种方法旨在克服纯神经网络和纯符号系统各自的局限性,从而创建更强大、更灵活、更可解释的AI系统)来弥补LLMs在理解和操作现实世界对象方面的不足。

技术方面,研究提到了使用不同的LLMs,包括GPT-4、Claude-v1、GPT-3.5-turbo等,以及诸如Chain-of-Thought和Tree of Thoughts这样的新策略来增强LLMs的推理能力。这些技术在处理长视距机器人推理任务、视觉到语言的解释、以及创建用于顺序决策问题的有限状态自动机等方面发挥了作用。

6.PLANNING WITH LARGE LANGUAGE MODELS

FOR CODE GENERATION (ICLR 2023)

基于大语言模型的代码生成规划

主要内容

该论文的主要研究内容集中在改进基于大语言模型的代码生成方法。具体来说,它针对现有的代码生成管道在解码过程中依赖于波束搜索(beam search)或抽样算法的问题,这些方法虽然能生成匹配度高的代码序列,但生成的代码往往无法编译或存在逻辑错误。论文提出了一种新的Transformer解码算法,称为Planning-Guided Transformer Decoding(PG-TD),其创新点在于结合了规划算法进行前瞻搜索,指导Transformer生成更高质量的程序代码。

创新点

创新点

前瞻搜索与规划集成: PG-TD利用规划算法进行前瞻搜索,预测哪些代码片段会导致最终产生高质量的代码,这比单纯优化生成序列的概率更为高效。

信息共享机制: 设计了一种机制,允许Transformer和规划器之间共享信息,提高了算法的整体计算效率。

模型无关性: PG-TD是模型无关的,可以与任何标准的代码生成Transformer模型结合使用,不需要了解生成程序的语法结构。

无需额外样本或微调: PG-TD不依赖于获取更多样本解决方案或对Transformer模型进行微调来提高性能。

运用的技术:

Transformer模型: 作为代码生成的基础,用于处理序列建模任务。

规划算法: 在代码生成过程中执行前瞻搜索,寻找能够导致高质量代码的代码片段。

集成策略: 将规划算法与Transformer解码过程直接集成,同时避免重复使用Transformer的波束搜索算法,从而提高计算效率。

  1. Fully Autonomous Programming with Large Language Models

使用大型语言模型的完全自治编程

主要内容

研究问题:

1、探索在自主编程设置中使用不同树搜索策略的影响,即修复与替换之间的权衡。

2、比较由LLM生成的错误总结与静态指令对自动合成代码修复性能的影响。

研究内容:

该论文主要研究的是利用大型语言模型(LLMs)进行程序合成时遇到的“近似正确综合症”问题。这类模型倾向于生成在语义上与正确答案相似但未能通过单元测试的程序,通常是因为一些小的缺陷,如输入或输出格式错误。

创新点

引入了SED框架,将程序修复集成到程序合成算法中,以解决“最后一英里”问题。SED方法首先生成解决方案的草稿,然后执行一个修复阶段来解决未能通过的测试。为了使这种方法适用于指令驱动的LLMs,需要确定哪些提示最适合指导这些模型,并且要在修复失败的程序和替换新生成的程序之间找到平衡点。

利用指令驱动的大型语言模型,这些模型在训练过程中使用人类反馈,并接受文本命令来编辑源代码。

  1. ACM Transactions on Software Engineering and Methodology )

基于大型语言模型的自规划代码生成

主要内容

该论文的主要研究内容是关于如何利用大型语言模型(LLMs)来改善代码生成任务,特别是解决人类意图表达的复杂性问题。论文提出了一个名为“自我规划代码生成”(self-planning code generation)的方法,其创新点在于引入了一个计划阶段来帮助模型理解复杂的任务要求,并通过分解问题和安排解决方案步骤来降低解决问题的难度。

技术与方法:

两阶段方法:该方法分为规划阶段和实施阶段。在规划阶段,LLMs结合少量示例提示(few-shot prompting)来规划出简明的解决方案步骤。在实施阶段,模型根据先前规划的步骤逐步生成代码。

Few-shot Prompting:这种方法允许模型通过给定少量的输入输出示例来学习新任务,而无需针对每个新任务微调单独的语言模型检查点。

Chain of Thought (CoT):虽然原本用于解决一系列推理任务,如数学、符号和常识推理,但未直接应用于代码生成任务。受此启发,该论文中的方法可以被视为一种扩展,将规划策略引入代码生成领域。(COT,全称为Chain-of-Thought,是一种在大型语言模型(LLMs)中使用的提示技术,旨在激发模型展示其推理过程。COT的基本理念是鼓励模型在生成最终答案前,先逐步推导出一系列的中间步骤,这类似于人类在解决复杂问题时采用的思维过程。)

创新点

创新点:

将规划引入代码生成过程,使模型能够更好地理解复杂的人类意图。

提出了一个预处理策略,与现有的后处理策略正交,可以同时使用。

实验结果显示,在多个编程语言的代码生成基准上,自我规划代码生成方法相比直接代码生成有显著提升,特别是在代码的正确性、可读性和鲁棒性方面。

9.Framework for evaluating code generation ability of large

language models

大型语言模型代码生成能力评估框架

主要内容

该论文的主要研究内容聚焦于开发一个全面的框架,用于评估大型语言模型(LLMs)在代码生成任务上的能力。具体来说,这个框架旨在自动化处理代码生成过程中涉及的重复性工作,如生成提示(prompts)、执行推理以及运行生成的代码。为了实现这一目标,研究者们考虑了与诸如LeetCode这样的在线编程平台集成的可能性,以便利用这些平台丰富的编程题目和测试案例。

创新点

新评价指标:提出了一个名为pass-ratio@n的新评价指标,它能够更细致地衡量代码的准确度。这个指标通过考虑代码通过测试用例的比例来评估代码的质量,而不仅仅是判断代码是否完全正确,这提供了对代码完整性和功能性的多层面评估。

系统化评估框架:设计了一个系统化的评估框架,用于评估LLMs生成代码的能力,尤其强调了与常见编程平台的整合,以实现评估过程的自动化。

数据集选择指南:鉴于之前的研究在数据集的选择上存在差异,论文强调了制定数据选择指导原则的重要性,以确保评估的现实性和无偏见性。

自动化流程:为了简化评估过程,引入了全自动化的工作流,涵盖了从生成查询、执行推理到运行生成代码的所有步骤。

10.Fine Tuning Large Language Model for Secure Code Generation

用于安全代码生成的大语言模型的微调

主要内容

这篇论文的主要研究内容是关于如何通过微调大语言模型来生成更安全的代码。具体来说,作者关注的是GitHub的Copilot等AI辅助编程工具在自动代码生成时可能引入的安全漏洞问题。为了应对这一挑战,他们探索了微调大语言模型的方法,旨在提高生成代码的安全性。

创新点

(1)使用现实世界中的漏洞修复提交作为微调数据集,这个数据集包含了从580个开源项目中收集的4,900个修复了安全漏洞的提交记录,涉及14,622个C/C++源代码文件。

(2)构建了一个用于评估和比较预训练模型与微调后模型的代码生成场景数据集,特别针对C/C++语言,以检验模型生成安全代码的能力。

(3)选择GPT-J作为微调的大型语言模型,并展示了微调后的模型在生成非易受攻击代码方面取得了显著改善,对于C语言提高了10%,达到70.4%的非易受攻击代码生成率;对于C++也有轻微提升,达到64.5%。

这些都是我自己整理的,可能有地方存在欠缺,望多多包涵 抱拳抱拳

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值