当前位置:   article > 正文

【网安AIGC专题11.1】11 Coreset-C 主动学习:特征选择+11种采样方法+CodeBERT、GraphCodeBERT+多分类(问题分类)二元分类(克隆检测)非分类任务(代码总结)_主动学习代码

主动学习代码

写在最前面

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

皇甫璟轩同学分享了Active Code Learning: Benchmarking Sample-Efficient Training of Code Models《主动代码学习:样本高效的代码模型训练基准测试》

分享时清晰简洁大方
学到了benchmark基准和baseline基准线的区别
主动学习:主动选择具有最大信息量的数据样本
采样函数:旨在选择最有价值的数据样本,以便有效地提高模型性能
在这里插入图片描述

论文名片

主题: 主动代码学习:基于特征选择的研究

摘要:

  1. 问题陈述: 机器学习模型的训练数据准备需要大量人力,这对于软件工程领域尤为明显。主动学习是一种可以减少数据需求的技术,但在代码模型中的应用尚未得到充分研究。

  2. 研究目标: 本文的研究目标是探讨主动学习在代码模型训练中的有效性,并建立一个基准来评估不同的特征选择方法。

  3. 方法和实验: 收集了11个采集函数(用于数据选择),并在与代码相关的任务中使用这些函数。
    进行了实证研究,检查这些采集函数是否保持了代码数据的性能。

  4. 结果和发现: 研究结果表明,特征选择在主动学习中起到重要作用,使用输出向量选择数据是最佳选择。
    然而,在代码摘要任务中,主动代码学习被发现是无效的,导致生成的模型性能差距超过29.64%。

  5. 未来方向: 使用评估指标代替距离计算方法,并探索这些评估指标与代码模型性能之间的相关性。

结论:
本文的研究弥合了主动学习在代码模型中的应用的研究空白,并提供了有关特征选择方法的有用见解。
作者还强调了主动代码学习的限制,特别是在代码摘要任务中的有效性。
这项研究对于改进代码模型的训练过程具有重要意义,特别是在预算有限的情况下。

先验知识的补充

主动学习

主动学习是一种机器学习方法,它通过主动选择具有最大信息量的数据样本来改善模型的性能,从而减少训练数据的数量需求。
与传统的被动学习方法不同,其中所有可用数据都被用于模型训练,主动学习允许模型自己选择最具益处的样本,以便更有效地提高性能。
涉及到采样函数的算法,该算法能够评估数据样本对模型性能的潜在贡献,然后选择最有价值的样本供模型训练使用。
特别是在数据有限或成本高昂的情况下,可以提供显著的帮助。

采样函数

主动学习中的采样函数算法旨在选择最有价值的数据样本,以便有效地提高模型性能。步骤如下:

  1. 初始模型训练: 开始时,有一个初始的模型,通常是在少量标记数据上训练的。这个模型用来评估数据样本的价值。

  2. 候选样本选择: 采样函数首先从未标记的数据中选择一些候选样本。这些候选样本可以是数据池中的未标记数据,或者是通过某种主动选择策略(例如不确定性、多样性、或模型不确定性等)选出的。

  3. 样本评估: 选定的候选样本会经过当前模型的评估,以确定它们对模型性能改善的潜在贡献。通常,评估是通过一个或多个评估指标来完成,例如模型的不确定性、信息增益、错误率等。

  4. 采样函数选择: 采样函数会基于样本的评估结果,选择其中最具有信息量或价值的样本。这通常涉及到一种策略,例如不确定性最高的样本,或者最大化信息增益的样本。

  5. 标记数据: 选择出的样本会被标记,加入到已知数据中,用于下一轮模型训练。

  6. 模型更新: 使用新标记的样本重新训练模型。这一轮的模型通常会更好地适应这些新样本,从而提高性能。

  7. 重复迭代: 这个过程会反复迭代,每一轮都选择新的样本,标记它们,重新训练模型,并评估性能。迭代次数根据需要,可以持续直到模型达到所需的性能水平或收益不再显著增加。

采样函数的具体算法和策略可以因应用领域和任务而异。
通常,主动学习的目标最大限度地提高模型性能,同时最小化标记新样本的成本。
因此,采样函数的设计需要综合考虑信息增益、模型不确定性、样本多样性和成本效益等因素。

benchmark基准和baseline基准线的区别

“Benchmark” 和 “baseline” 是两个在研究和评估中常常使用的术语,区别在于:

  1. Benchmark(基准):

    • 基准通常是指在某个领域或任务中的最高标准或最佳性能水平。它代表了一个值得追求的目标,通常是由领域专家或业界认可的最佳方法或模型所达到的性能水平。
    • 基准可以用作评估其他方法或模型的性能,以确定它们是否能够达到或超越该领域的最佳已知性能。基准通常用于验证新方法的有效性,以确定它们是否值得进一步研究或应用。
    • 基准可以是一个具体的数值,也可以是一种方法的描述,例如 “state-of-the-art”(最新水平)。
  2. Baseline(基准线):

    • 基准线是指在研究或实验中作为对照的简单或基本方法或模型。它通常是一种相对简单的方法,用于比较其他更复杂或高级的方法的性能。
    • 基准线有助于评估新方法的相对性能,它可以是一种简单的规则、传统方法或者是最初的尝试,用以提供一个性能的最低标准。
    • 基准线通常不是最佳的性能,但它用于确定新方法是否能够明显改善现有的性能水平。

总结
“benchmark” 是在某个领域或任务中的最高标准或最佳性能,用作目标和参考点,
而 “baseline” 是用于比较新方法相对于简单或基本方法的性能。

基准通常是最优性能,而基准线通常是最低性能,用于建立性能改进的上下界。
在研究和评估中,它们都起到了重要的作用,以帮助评估新方法的效用和贡献。

背景Background

近年来,使用机器学习(ML)来帮助开发人员解决软件问题(ML4Code) 一直是软件工程(SE)和ML领域的热门方向。然而准备机器学习(ML)模型的训练数据需要的巨额人力成本,这阻碍了它在软件工程(ML4Code)中的应用。

因此,如何在不影响模型性能的前提下减小人力成本已成为一项挑战。为了解决这一难题,本文提出采用主动学习的方法,因为它允许开发人员用少量的数据训练模型,同时不降低模型的性能,这在计算机视觉和自然语言处理领域得到了很好的研究。

主动学习

主动学习的关键思想是迭代地选择训练数据的子集进行标记、并使用它们来训练模型。已有研究表明,只需标注不到10%的训练数据,就可以训练出与使用整个训练数据训练出的模型性能相近的模型。

一般来说,可以使用两种类型的特征,

  1. 数据本身的特征(例如图像像素和代码标记)
  2. 从模型中提取的特征(例如输出概率和代码嵌入)

在获取这些特征之后,采样函数用于选择最有价值的数据进行人工标注。
在这里插入图片描述

动机Motivation

主动学习在许多领域(如计算机视觉和自然语言处理)得到了应用,但在ML4Code领域中还未受到关注。在该领域,研究人员主要关注模型架构、代码表示方法等,却忽略了如何降低模型训练成本的问题。因此,有必要提供一个基准来支持对这一重要问题的研究。

本文旨在建立一个基准来研究主动学习如何帮助代码模型高效构建,即:主动代码学习。要解决这一问题,需要回答:

  • RQ1:基于聚类的采样函数应该选取哪些特征
  • RQ2:采样函数在代码模型上的表现如何

基准Benchmark

采样函数acquisition functions

文章选取了11种采样函数进行研究
在这里插入图片描述

设置set up

在这里插入图片描述
考虑了三种特征: Code Embeddings 、 Code tokens和Model outputs ;

三种代码任务:多类分类任务(问题分类)、二元分类任务(克隆检测)和非分类任务(代码总结)

预训练代码模型采用:CodeBERT和GraphCodeBERT

评价指标:

  • Accuracy:计算整个输入数据中正确分类数据的百分比
  • F1-score:是二元分类问题的常用度量。它计算precision和recall的调和平均值
  • Perplexity (PPL):是一种广泛用于评价语言模型的度量,可以看作loss
  • BLEU (Bilingual Evaluation Understudy):用于评估生成文本的质量

RQ1: Feature Selection特征选择

  • 比较了不同采样函数在不同标注数据比例下训练的模型的性能。
  • 结果如图2所示,相同的采样函数用不同特征训练的模型性能具有差别。特别是,对于K-Means, K-Center和Coreset函数,性能差异比较明显。相比之下,BADGE函数相对稳定。
    在这里插入图片描述

Answer to RQ1

在这里插入图片描述
总结了每个函数在图2所有情况下表现出最佳性能的百分比。
如表3所示,总的来说,Model outputs是更好的特征。

此外,有一些采样函数的特征选择还取决于任务的类型。例如:对于在K-Means和K-center,

  • 两个分类任务中,Output和Embedding分别是它们的最佳选择;
  • 而在非分类任务中,为Token和Output。

基于实验结果,对特征选择提出建议:

  • K-Means-C (KM-C):使用Output(Token)进行分类(非分类)任务。
  • K-Center-C (kC-C):使用代Embedding(Output)进行分类(非分类)任务。
  • BADGE-C:对所有代码任务使用Output 。
  • Coreset-C:对所有代码任务使用Output 。

RQ2: Acquisition Function Comparison采样函数的比较

得出结论:

  • 主动代码学习在非分类代码任务中还需要进一步研究,
  • 此外,从分类任务中得出的结论适用于非分类任务。

分类任务

对于多类分类任务(问题分类),基于输出不确定性的方法通常比基于聚类的方法取得更好的结果。
其中,仅使用输出的top-1和top-2概率的Margin在6个案例中的5个中表现最佳。
这一现象与先前的研究得出了类似的结论,即简单的方法在主动学习中表现良好

对于二分类任务(克隆检测),基于聚类的方法更好。
在这里插入图片描述

非分类任务

对于非分类任务(代码总结),有以下发现:
使用不同的评估指标得到的结论不同。例如,PPL和BLEU分别表明KC-C和Coreset-C是最好的采样函数。

对于两种评估指标,主动学习训练模型的性能与使用整个数据训练的模型的性能之间的差距很大。
例如,对于JavaScript-CodeBERT,在10%的标注预算下,最佳PPL分数和BLEU分数分别为5.1313和10.09,比完整训练模型的3.85和14.34分别低33.28%和29.64%。
这与分类任务的结果完全不同(对于克隆检测任务,使用10%的数据训练的模型(97.79%)的性能优于使用整个训练数据训练的模型(97.15%))。

在这里插入图片描述
在这里插入图片描述

Answer to RQ2

研究结果表明:

  • 对于二分类任务克隆检测,基于聚类的采样函数始终优于基于输出不确定性的采样函数。
  • 主动学习对于代码总结等非分类任务无效的,因为通过主动学习训练的模型的性能至少落后于使用整个数据集训练的模型29.64%。

探索性研究Exploratory Study

研究设计Study Design

为了探索更加有效的采样函数,提出使用评价指标作为基于聚类的采样函数的距离方法,并进行了以下实验:

  1. 准备了两组模型,第一组为初始模型
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/514638
推荐阅读
相关标签