展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 业界资讯 > 深度学习中的代码数据增强:5年89篇研究综述

深度学习中的代码数据增强:5年89篇研究综述

Air Explorer Pro
Air Explorer Pro

Air Explorer Pro是一款跨平台多网盘管理工具,可实现一站式完成不同网盘间文件的互传、搜索和同步等操作。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

¥99
Windows/macOS 2026-08-22
正版软件 Windows macOS软件 Pro 文件搜索工具 Pro下载 Pro正版软件 Pro购买
立即下载

随着深度学习和大型模型的快速发展,对创新技术的追求不断增加。在这个过程中,数据增强技术展现出了不可忽视的价值最近,由蒙纳士大学、新加坡管理大学、华为诺亚方舟实验室、北京航空航天大学以及澳大利亚国立大学联合进行的对近5年的89篇相关研究调查,发布了一份关于代码数据增强在深度学习中应用的全面综述。论文地址:https://arxiv.org/abs/2305.19915项目地址:https://github.com/terryyz/DataAug4Code这份综述不仅深入探讨了代码数据增强技术在深度学习领域的

本文目录

    随着深度学习和大型模型的快速发展,对创新技术的追求不断增加。在这个过程中,数据增强技术展现出了不可忽视的价值

    最近,由蒙纳士大学、新加坡管理大学、华为诺亚方舟实验室、北京航空航天大学以及澳大利亚国立大学联合进行的对近 5 年的 89 篇相关研究调查,发布了一份关于代码数据增强在深度学习中应用的全面综述。

    深度学习中的代码数据增强:5年89篇研究综述

    • 论文地址:https://arxiv.org/abs/2305.19915
    • 项目地址:https://github.com/terryyz/DataAug4Code

    这份综述不仅深入探讨了代码数据增强技术在深度学习领域的应用,还展望了其未来的发展潜力。作为一种在不收集新数据的情况下增加训练样本多样性的技术,代码数据增强已在机器学习研究中获得广泛应用。这些技术对于资源匮乏领域的数据驱动模型性能提升具有显著意义。

    深度学习中的代码数据增强:5年89篇研究综述

    然而,在代码建模领域,这种方法的潜力还没有被充分挖掘。代码建模是机器学习和软件工程相交的新兴领域,涉及应用机器学习技术来解决各种代码任务,例如代码补全、代码摘要和缺陷检测。代码数据具有多模态特性(编程语言和自然语言),这为定制数据增强方法带来了独特的挑战

    这份综述报告是由多个顶级学术和工业机构联合发布的。它不仅深入揭示了代码数据增强技术,还为未来的研究和应用提供了指导。我们相信,这份综述将激发更多研究者对代码数据增强在深度学习中的应用产生兴趣,并推动该领域的进一步探索和发展

    背景介绍

    代码模型的兴起与发展:代码模型是基于大量源代码语料库训练的,能够精准地模拟代码片段的上下文。从早期采用 LSTM 和 Seq2Seq 等深度学习架构,到后来融入预训练语言模型,这些模型已经在多个源代码的下游任务中显示出了出色的性能。例如,有些模型在预训练阶段就考虑了程序的数据流,这是代码的语义层面结构,用于捕捉变量间的关系。

    数据增强技术的意义:数据增强技术通过数据合成来增加训练样本的多样性,从而提高模型在各方面(如准确性和稳健性)的性能。在计算机视觉领域,例如,常用的数据增强方法包括图像裁剪、翻转和颜色调整。而在自然语言处理中,数据增强则大量依赖于语言模型,这些模型能够通过替换词汇或重写句子来改写上下文。

    代码数据增强的特殊性:与图像和纯文本不同,源代码受到编程语言严格句法规则的限制,因此增强的灵活性较低。大多数代码的数据增强方法必须遵守特定的转换规则,以保持原始代码片段的功能性和语法。常见的做法是使用解析器构建源代码的具体句法树,然后转换为抽象句法树,简化表示的同时保留关键信息,如标识符和控制流语句。这些转换是基于规则的数据增强方法的基础,它们帮助模拟现实世界中更多样的代码表示,提高了代码模型通过增强数据训练的稳健性。

    代码数据增强方法的深度探索

    在深入探讨代码数据增强的世界中,作者将这些技术主要分为三类:基于规则的技术、基于模型的技术和示例插值技术。下面简要介绍了这些不同的分支。

    基于规则的技术:许多数据增强方法利用预定规则来转换程序,同时保证不破坏语法规则和语义。这些转换包括替换变量名、重命名方法名和插入无效代码等操作。除了基本的程序语法,一些转换还考虑更深层的结构信息,如控制流图和使用 - 定义链。有一部分基于规则的数据增强技术专注于增强代码片段中的自然语言上下文,包括文档字符串和注释。

    深度学习中的代码数据增强:5年89篇研究综述

    基于模型的技术:一系列针对代码模型的数据增强技术旨在训练各种模型来增强数据。例如,一些研究利用辅助分类生成对抗网络(ACGAN)来生成增强程序。另一些研究则训练了生成对抗网络,以同时提升代码生成和代码搜索的能力。这些方法主要是针对代码模型特别设计的,旨在通过不同方式增强代码的表示和上下文理解。

    示例插值技术:这类数据增强技术源自 Mixup,它通过插值输入和两个或更多实际样本的标签来操作。例如,给定计算机视觉中的二分类任务和两张分别是狗和猫的图片,这些数据增强方法可以将这两张图片的输入和它们对应的标签根据随机选择的权重混合在一起。然而,在代码领域,这些方法的应用受到独特的程序语法和功能的限制。相比于表面层次的插值,大多数示例插值数据增强方法通过模型嵌入将多个真实样例融合为单一输入。例如,有研究将基于规则的技术与 Mixup 结合,混合原始代码片段及其转换后的表示。

    深度学习中的代码数据增强:5年89篇研究综述


    深度学习中的代码数据增强:5年89篇研究综述

    策略与技术

    在实际应用中,针对代码模型的数据增强技术的设计和有效性受到多种因素的影响,例如计算成本、样本多样性和模型的稳健性。本节重点介绍了这些因素,提供了设计和优化适合的数据增强方法的洞见和技巧。

    方法堆叠:在之前的讨论中,许多数据增强策略在单一工作中被同时提出,目的是增强模型的性能。通常,这种组合包括两种类型:同类型数据增强或不同数据增强方法的混合。前者通常应用于基于规则的数据增强技术,其出发点在于单一代码转换无法完全代表现实世界中多样的代码风格和实现。一些工作展示了将多种类型的数据增强技术融合可以增强代码模型的性能。例如,结合基于规则的代码转换方案和基于模型的数据增强来创建增强的语料库,用于模型训练。而另一些研究则在编程语言上增强,包括两种数据增强技术:基于规则的非关键词提取和基于模型的非关键词替换。

    优化:在某些场景中,如增强稳健性和最小化计算成本,选择特定增强样例候选者至关重要。作者将这种目标导向的候选选择在数据增强中称为优化。文章主要介绍三种策略:概率性选择、基于模型的选择和基于规则的选择。概率性选择是通过从概率分布中采样进行优化,而基于模型的选择则由模型指导选择最合适的例子。在基于规则的选择中,使用特定预定的规则或启发式来选择最合适的例子。

    概率性选择:作者专门选择了三种代表性的概率性选择策略,包括 MHM、QMDP 和 BUGLAB-Aug。MHM 采用 Metropolis-Hastings 概率采样方法,这是一种马尔可夫链蒙特卡洛技术,用于通过标识符替换选择对抗性示例。QMDP 使用 Q-learning 方法来战略性地选择和执行基于规则的结构转换。

    基于模型的选择:采用这种策略的一些数据增强技术利用模型的梯度信息来指导增强样例的选择。一个典型的方法是数据增强 MP 方法,它基于模型损失进行优化,选择并通过变量重命名生成对抗性示例。SPACE 通过梯度上升对代码标识符的嵌入进行选择和扰动,目标是在保持编程语言的语义和语法正确性的同时最大化模型的性能影响。

    基于规则的选择:基于规则的选择是一种强大的方法,它使用预定的适应度函数或规则。这种方法通常依赖于决策指标。例如,IRGen 使用基于遗传算法的优化技术和基于 IR 相似性的适应度函数。而 ACCENT 和 RA 数据增强 R 分别使用 BLEU 和 CodeBLEU 等评估指标来指导选择和替换过程,以实现最大的对抗性影响。

    应用场景

    数据增强方法可直接应用于几种常见的代码场景中

    对抗性示例用于稳健性:稳健性在软件工程中是一个关键且复杂的维度。设计有效的数据增强技术来生成对抗性示例,以识别和减轻代码模型中的漏洞,已成为近年来的一个研究热点。多个研究利用各种数据增强方法测试和增强模型的稳健性,进一步加强了代码模型的稳健性。

    低资源领域:在软件工程领域,编程语言资源严重不平衡。流行的编程语言如 Python 和 Java 在开源仓库中扮演主要角色,而许多语言如 Rust 资源非常匮乏。代码模型通常基于开源仓库和论坛进行训练,编程语言资源的不平衡可能会对它们在资源匮乏的编程语言上的性能产生不利影响。在低资源领域内应用数据增强方法是一个反复出现的主题。

    检索增强:在自然语言处理和代码领域,检索增强的数据增强应用越来越受到关注。这些针对代码模型的检索增强框架在预训练或微调代码模型时纳入来自训练集的检索增强示例,这种增强方法提高了模型的参数效率。

    对比学习:对比学习是另一个代码场景中部署数据增强方法的应用领域。它使模型能够学习一个嵌入空间,在这个空间中,相似样本彼此接近,而不相似的样本则相距较远。数据增强方法被用于构造与正样本相似的样例,以提高模型在缺陷检测、克隆检测和代码搜索等任务中的性能。

    接下来的文章讨论了几个常见的代码任务,以及数据增强工作在评估数据集上的应用,包括克隆检测、缺陷检测和修复、代码摘要、代码搜索、代码生成和代码翻译

    挑战与机遇

    在代码数据增强方面,作者认为面临着许多重大的挑战。然而,正是这些挑战为该领域带来了新的可能性和令人激动的机遇

    理论探讨:目前,对代码中数据增强方法的深入探索和理论理解存在明显差距。大多数现有研究集中在图像处理和自然语言领域,将数据增强视为一种应用预先存在的关于数据或任务不变性的知识的方法。转向代码时,虽然以前的工作引入了新方法或演示了数据增强技术如何有效,但它们经常忽略了特别是从数学角度来看的原因和方式。代码的离散性质使得理论讨论变得更为重要。理论讨论使大家能够从更广阔的视角理解数据增强,而不仅仅是根据实验结果。

    预训练模型的更多研究:近年来,预训练的代码模型在代码领域得到了广泛应用,通过大规模语料库的自我监督积累了丰富的知识。尽管许多研究利用预训练代码模型进行了数据增强,但大多数尝试仍局限于遮罩令牌替换或微调后的直接生成。在代码领域中,利用大规模语言模型的数据增强潜力是一个新兴的研究机会。

    不同于以前在数据增强中使用预训练模型的方式,这些工作开启了「基于提示的数据增强」时代。然而,在代码领域中,基于提示的数据增强探索仍然是一个相对未被触及的研究领域。 重写后的内容:不同于以前在数据增强中使用预训练模型的方式,这些工作开启了「基于提示的数据增强」时代。然而,在代码领域中,基于提示的数据增强的研究仍然相对较少

    处理特定领域数据:作者重点调查了处理代码的常见下游任务的数据增强技术。然而,作者意识到在代码领域的其他特定任务数据方面仍有少量研究。例如,API 推荐和 API 序列生成可以被视为代码任务的一部分。作者观察到在这两个不同层次之间的数据增强技术存在差距,为未来工作探索提供了机会。

    项目级别代码和低资源编程语言的更多探索:现有方法在函数级别代码片段和常见编程语言方面取得了足够的进展。同时,低资源语言的增强方法虽然需求更大,但却相对稀缺。在这两个方向的探索仍然有限,作者认为它们可能是有前景的方向。

    缓解社会偏见:随着代码模型在软件开发中的进步,它们可能被用于开发以人为中心的应用程序,如人力资源和教育,其中偏见程序可能导致对代表性不足的人群做出不公正和不道德的决定。虽然 NLP 中的社会偏见已经得到了很好的研究并可以通过数据增强进行缓解,但代码中的社会偏见尚未受到关注。

    小样本学习:在小样本场景中,模型需要实现与传统机器学习模型相媲美的性能,但训练数据极其有限。数据增强方法为这个问题提供了直接的解决方案。然而,在小样本场景中采用数据增强方法的工作还很有限。在少数样本场景中,如何通过生成高质量的增强数据为模型提供快速泛化和问题解决能力,作者觉得这是一个有趣的问题。

    多模态应用:需要注意的是,仅关注函数级别的代码片段并不能准确地代表真实世界编程情况的复杂性和细微差别。在这种情况下,开发人员通常同时处理多个文件和文件夹。尽管这些多模态应用变得越来越流行,但尚未有研究对它们应用数据增强方法。挑战之一是在代码模型中有效地桥接每种模态的嵌入表示,这已在视觉 - 语言多模态任务中进行了研究。

    缺乏统一:当前的代码数据增强文献呈现出一个具有挑战性的景观,其中最流行的方法通常被描绘为辅助性的。一些实证研究试图比较代码模型的数据增强方法。然而,这些工作没有利用大多数现有的先进数据增强方法。尽管存在针对计算机视觉(如 PyTorch 中的默认增强库)和 NLP(如 NL-Augmenter)的公认数据增强框架,但对于代码模型的通用数据增强技术相应库明显缺失。此外,由于现有数据增强方法通常使用各种数据集进行评估,因此很难确定其有效性。因此,作者认为通过建立标准化和统一的基准任务,以及用于比较和评估不同增强方法的有效性的数据集,将大大促进数据增强研究的进展。这将为更系统和比较性地理解这些方法的优势和局限性铺平道路。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    业界资讯 AI 模型
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?