【网安AIGC专题10.11】论文1:生成式模型GPT\CodeX填充式模型CodeT5\INCODER+大模型自动程序修复(生成整个修复函数、修复代码填充、单行代码生产、生成的修复代码排序和过滤)

简介: 【网安AIGC专题10.11】论文1:生成式模型GPT\CodeX填充式模型CodeT5\INCODER+大模型自动程序修复(生成整个修复函数、修复代码填充、单行代码生产、生成的修复代码排序和过滤)

写在最前面

本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。

10.11分享论文1:Automated Program Repair in the Era of Large Pre-trained Language Models

《llm在程序修复中的应用》

马兴宇学长分享论文,深入浅出,简洁明了

写博客记录这篇论文的分享

论文总结

主要是将主流的预训练代码专项的大模型应用到了代码修复领域,包括生成式大模型和填充式大模型

方法上并没有什么创新点,都是比较主流的模型和方法。

实验量比较大,涉及多个预训练模型的不同角度对比,包括代码修复准确率、代码生成结果的熵等等内容、以及与传统的NMT模型例如seq2seq等模型对比。

背景知识介绍

语言模型

类似于输入法,输入前几个字,自动推荐后面可能衔接哪些内容

现在主要的语言模型有单向语言模型和双向语言模型:

1、单向语言模型就是正向预测,即已知前面的文本信息预测下一个字。

按顺序处理输入文本的每个单词或字符,并依赖于先前处理的文本信息来预测下一个单词或字符。这种模型通常用于诸如序列标注、命名实体识别和文本分类等任务。

2、双向语言模型就是可以利用上下文信息来预测。

双向语言模型

双向语言模型适合做语言理解,不适合做生成任务。

双向语言模型有很多,最主流的双向语言模型BERT,后续的类似模型几乎都是基于该结构上调整,只是预训练目标不同

BERT也是最主流的掩码语言模型或自编码语言模型,主要基于Transformer的Encoder模块实现

单向语言模型

目前比较主流的大模型都是基于单向语言模型,也就是Transformer的Decoder模块

因为单向语言模型更适合生成任务,而现在主流的大模型例如ChatGPT、LLAMa所执行的所有任务均可以被归类为生成任务。

基于Encoder和Decoder架构的预训练模型由于参数量和推理速度原因也很少被选择作为基座模型。

自动程序修复(APR)

技术

自动程序修复(APR):旨在帮助开发人员发现和修复程序中存在的漏洞,目前广泛使用的自动程序修复技术主要是基于专家手工指定的模板和基于学习方式的程序修复。

1)基于模板修复方式:比较依赖于专家手工制定的模板,而模板获取通常较难,且难以准确的设计。

2)基于学习的方式则需要依赖于大量的标注数据集,标注数据集的获取成本很高,也会对效果带来一定的影响。

发展

1、传统基于专家手工指定模板和规则

2、借鉴NMT方法,基于可学习的神经网络,训练修复模型,如Seq2Seq、Transformer等

3、基于预训练大模型,做有监督微调或者不训练模型直接做zero-shot、few-shot等任务,如代码专项模型:starcoder、codex、codeBert等

论文

概述

该论文将APR技术与LLMs进行结合,进行了广泛的研究,LLMs由于在海量数据上进行了训练,因此具备大量的知识,可以用来做zero-shot以及few-shot等工作,从而不需要训练就可以具备代码漏洞检测与修复功能,大大提升了代码修复与检测技术的效率。

论文选择了9个最新的LLMs,包括生成模型和填充模型,大小从125M到20B不等。设计了3种不同的修复方式来评估使用LLMs生成补丁的不同方式

1)生成整个修复函数:输入是一个有bug的函数,输出是修复后的函数

2)根据前缀和后缀填充代码块:也就是前面提到的预测mask位置的输出

3)输出单行修复

模型选择

生成式模型

GPT-Neo、GPT-J,GPT-NeoX、CodeX

填充式模型

CodeT5、INCODER、CodeX

方法

生成整个修复函数

生成整个修复函数就是将有bug的函数直接输入给模型,然后模型输出修复后的数据,但是由于预训练模型的预训练数据里没有APR数据,所有直接给喂数据,效果可能不好,所以作者又构建了前缀模板来做in-context learning,这里作者用的是one-shot

修复代码填充

作者参考掩码语言模型思路,将错误代码行视为mask然后使用掩码语言模型对mask位置进行预测,得到正确代码输出,掩码语言模型可以利用双向的上下文信息

单行代码生产

单行代码生成就是只生成错误地方的那一行代码

作者这里即用了:

1、上下文去预测掩码位置的输出

2、基于生成式的模型去生成单行,生成单行后就停止生成,然后拼接上后缀代码

生成的修复代码排序和过滤

作者利用

1、预训练模型中默认的核采样参数,来生成多个修复后的代码

2、再利用熵来对生成的代码进行排序,熵可以代表生成代码的natural,作者选用熵低的,也就是生成的代码越符合人类思维。

3、最后再过滤掉编译失败的和语法错误的等数据

实验

实验数据集

实验结果对比

实验量比较大,涉及多个预训练模型的不同角度对比,包括:

1、代码修复准确率

2、代码生成结果的熵等等内容

3、以及与传统的NMT模型例如seq2seq等模型对比

这里没有一一展示实验结果。

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
110 2
|
1月前
|
数据采集 API 决策智能
华为诺亚联合中科大发布工具调用模型ToolACE,效果持平GPT-4获开源第一
 【10月更文挑战第10天】华为诺亚方舟实验室与中国科学技术大学合作推出ToolACE,一种自进化合成过程的工具调用模型。ToolACE通过多智能体交互和双重验证系统生成准确、复杂、多样化的工具学习数据,显著提升大型语言模型(LLM)的功能调用能力。实验结果显示,使用ToolACE数据训练的80亿参数模型性能媲美GPT-4,在伯克利功能调用排行榜上获得开源第一。
59 4
|
2月前
|
API 云栖大会
通义千问升级旗舰模型Qwen-Max,性能接近GPT-4o
通义旗舰模型Qwen-Max全方位升级,性能接近GPT-4o
963 11
|
3月前
|
知识图谱
ARTIST的中文文图生成模型问题之通过GPT生成图像序列的问题如何解决
ARTIST的中文文图生成模型问题之通过GPT生成图像序列的问题如何解决
|
1月前
|
存储 数据采集 数据安全/隐私保护
商汤、清华、复旦等开源百亿级多模态数据集,可训练类GPT-4o模型
商汤科技、清华大学和复旦大学等机构联合开源了名为OmniCorpus的多模态数据集,规模达百亿级,旨在支持类似GPT-4级别的大型多模态模型训练。该数据集包含86亿张图像和1696亿个文本标记,远超现有数据集规模并保持高质量,具备广泛来源和灵活性,可轻松转换为纯文本或图像-文本对。经验证,该数据集质量优良,有望促进多模态模型研究,但同时也面临存储管理、数据偏见及隐私保护等挑战。
147 60
|
1月前
|
API
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
41 0
|
1月前
|
开发工具 git
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
57 0
|
2月前
|
人工智能 自然语言处理 数据挖掘
【通义】AI视界|性能超越GPT-4o?最强大的开源AI模型来了……
本文介绍了五项最新AI技术动态,包括性能超越GPT-4o的开源AI模型Reflection70B、智谱清言App限时免费的视频通话功能、哈佛医学院研发的癌症诊断AI模型CHIEF、Replit推出的AI编程助手,以及英特尔与日本AIST合作设立的芯片制造研发中心。这些进展展示了AI领域的快速创新与广泛应用。更多详情,请访问通义官网体验。
|
3月前
|
机器学习/深度学习 自然语言处理 测试技术
87.8%准确率赶超GPT-4o登顶!谷歌DeepMind发布自动评估模型FLAMe
【8月更文挑战第21天】谷歌DeepMind推出的FLAMe(Foundational Large Autorater Models)是一种基于深度学习的自动评估模型,旨在通过分析输入文本与参考答案的差异来评估大型语言模型(LLMs)的输出质量。FLAMe采用多任务学习方法,在涵盖500万个手工评分的100多种质量评估任务上训练,展现出强大的泛化能力。在RewardBench基准测试中,FLAMe以87.8%的准确率超越GPT-4等先进模型。这一突破不仅降低了人工评估成本,还提高了评估效率,为自然语言处理等领域带来革新。
58 1
|
3月前
|
数据采集 SQL 人工智能
如何基于gpt模型抢先打造成功的产品
如何基于gpt模型抢先打造成功的产品