大家读完觉得有帮助记得关注和点赞!!!
摘要
尽管自动化恶意软件检测系统取得了显著进展,但为威胁检测生成详尽的自然语言解释仍然是网络安全研究中的一个悬而未决的问题。在这项工作中,我们提出了 AutoMalDesc,一个自动化的静态分析摘要框架,该框架在少量专家整理的示例上进行初始训练后,即可大规模独立运行。该方法利用迭代的自步学习流程,通过合成数据生成和验证循环逐步提高输出质量,无需大量手动数据标注。在五种脚本语言的 3,600 个多样化样本上进行评估,结果显示迭代之间在统计上具有显著改进,在摘要质量和分类准确性方面均显示出持续提升。我们全面的验证方法结合了基于既定恶意软件标签的量化指标与来自人类专家和基于LLM的评判者的定性评估,确认了生成摘要的技术精确性和语言连贯性。为了促进该领域的可重复性和研究进展,我们发布了包含超过 10 万个脚本样本的完整数据集,包括带标注的种子(0.9K)和测试(3.6K)数据集,以及我们的方法和评估框架。
代码 — https://github.com/CrowdStrike/automaldesc
1 引言

图 1:自训练方法。 一个包含 900 个高质量标注样本的种子数据集通过伪标注启动半监督学习。在种子数据上训练的 LLM 为未标注数据生成经过滤的伪标签,从而能够通过扩展训练数据实现迭代改进。

图 2:一个恶意 JavaScript 程序的模型预测演变。 预训练(基础)模型无法识别代码的恶意意图,只关注表面细节。通过自学习,模型学会检测恶意软件并识别攻击机制。
表 1:按语言和恶意性标签划分的数据集中脚本分布。 种子集和测试集通过多个来源(包括专家验证)进行了严格验证。*初始语料库和训练集标签源自内部标注自动化,仅供参考。由于这些标签固有的噪声,训练集被视为未标注数据。语言:Bash (sh)、Batch (bat)、JavaScript (js)、PowerShell (ps) 和 Python (py)。**
| 语言 | 初始语料库* | 训练数据* | 测试集 | 种子数据集 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| 良性 | 恶意 | 总计 | 良性 | 恶意 | 总计 | 良性 | 恶意 | 总计 | 良性 | 恶意 | 总计 |
| sh | 16,207 | 20,616 | 36,823 | 9,059 | 19,926 | 28,985 | 295 | 512 | 807 | 66 | 100 | 166 |
| bat | 5,000 | 2,838 | 7,838 | 2,775 | 2,575 | 5,350 | 594 | 226 | 820 | 64 | 103 | 167 |
| js | 35,000 | 30,000 | 65,000 | 21,242 | 14,132 | 35,374 | 380 | 475 | 855 | 95 | 139 | 234 |
| ps | 12,827 | 17,007 | 29,834 | 9,337 | 6,820 | 16,157 | 311 | 345 | 656 | 61 | 105 | 166 |
| py | 10,236 | 7,395 | 17,631 | 7,584 | 7,827 | 15,411 | 236 | 262 | 498 | 66 | 101 | 167 |
| 总计 | 79,270 | 77,856 | 157,126 | 49,997 | 51,280 | 101,277 | 1,816 | 1,820 | 3,636 | 352 | 548 | 900 |
随着大语言模型在不同领域持续表现出色(Roberts-IEEE-CVPRW-2024; Wang-IEEE-2024; Thirunavukarasu-Nature-2023; Wang-Nature-2023; Rivas-AI-2023),它们日益增长的数据需求引发了人们对自我奖励和自我改进方法的极大兴趣(Dong-ICLR-2025; Zelikman-NeurIPS-2024; Liang-CoRR-2024; Huang-EMNLP-2023; Gulcehre-ArXiv-2023)。这在专家标注数据稀缺且获取成本高昂的专业领域尤其相关。
网络安全领域正是这些挑战的例证,快速演变的威胁和对恶意软件样本的受限访问为数据集创建设置了巨大障碍(Guo-ASE-2023)。动态的威胁态势,加上稀缺的专家标注和机密数据,使得自我改进技术对于推进以安全为中心的 LLM 应用至关重要。除了数据限制之外,另一个挑战在于生成详细、人类可读的恶意软件行为描述。虽然当前的分析工具在威胁检测和分类方面表现出色(Wang-CNCC-2025; Rudd-DigitalThreats-2024; Dambra-CCS-2023; Eren-ACM-2023; Wu-ICCNS-2018),但它们在自动生成全面的行为描述方面存在不足(He-ISSTA-2025)。技术检测能力与可解释分析需求之间的差距代表了当前研究的一个关键瓶颈(He-ISSTA-2025; Jelodar-ArXiv-2025; Fujii-ESORICS-2024)。
为了弥合这些差距,我们提出了关于自改进 LLM 用于恶意软件脚本分析的首个全面研究,具有三个关键贡献:
-
自改进流程:一种新颖的迭代方法,通过 LLM 生成的标注来增强网络安全脚本分析,并对其有效性进行了实证验证(见图 1 和图 2)。
-
公共数据集:包含 15.7 万个脚本(7.8 万恶意,7.9 万良性)的平衡集合,涵盖与恶意软件分析相关的 5 种编程语言(见表 1)。
-
评估框架:一个结合了量化指标(恶意性标签和语言准确性)与人类和 LLM 评判者对技术精确性和摘要质量评估的综合基准。
2 相关工作
我们的研究建立在两个关键领域的先前工作基础上:能够通过迭代学习增强能力的自改进语言模型,以及针对基于脚本的威胁的静态安全分析技术。
2.1 迭代和自改进方法
先前的研究表明,语言模型可以通过自我生成的训练数据来增强其能力。Wang-ArXiv-2022 的早期工作引入了 Self-Instruct,从一小组人类提示出发,生成并过滤用于模型微调的指令-响应对。基于这一概念,STaR 系统(Zelikman-NeurIPS-2024)实现了一个反馈循环,模型在其中生成逐步推理并向成功示例学习,显著提高了在数学和常识任务上的性能。已经出现了几种策略来应对有限真实数据下的自我改进。Huang-EMNLP-2023 利用思维链提示和跨多个推理路径的多数投票来识别可靠的预测,而 Li-ICLR-2024 则通过从网络文档中推导提示来开发指令反向翻译。对于资源受限的环境,Dong-ICLR-2025 提出了 Self-Boost,它使用单一模型来生成和验证新示例。最近的创新包括 Yuan-ICML-2024 的使用基于 LLM 判断的自我奖励模型,Gulcehre-ArXiv-2023 的将数据生成与离线微调相结合的强化学习策略,以及 Wang-ArXiv-2024 的通过模型生成的比较将自我改进扩展到评估。
我们的工作将这些自改进技术应用于网络安全,特别解决了恶意软件分析中数据稀缺的关键挑战。
2.2 脚本的静态安全分析
在网络安全中,半监督学习在减少手动标注需求方面一直显示出潜力。虽然大量工作集中在可移植可执行文件恶意软件分析上(joyce2023motif; CybIN; Corlatescu-NeurIPS-2023; Anderson-ArXiv-2018),但基于脚本的威胁提出了独特的挑战。Alam-ArXiv-2025 使用伪标注在其自身预测上重新训练恶意软件分类器,而 Feng-IEEE-2025 则通过特征提取和提示工程展示了 LLM 在 Android 恶意软件检测中的有效性。关于我们工作的主要焦点,即网络威胁的自然语言解释,Fujii-ESORICS-2024 表明 LLM 可以准确解释恶意软件功能,但他们强调了高质量训练数据有限这一重大挑战。Lu-IEEE-2025 通过创建一个名为 MalS 的新数据集来解决这一局限性,该数据集使用 LLM 生成的摘要草稿并经过轻度人工 refinement,并通过微调取得了强劲的结果。
我们的工作通过引入一种跨五种语言的脚本分析的迭代自训练方法来扩展这些努力。与之前专注于二元分类或需要人工 refinement 的工作不同,我们的方法生成详细的安全解释,并通过最少人工输入的多轮迭代展示了持续的质量改进。

图 3:我们数据集中显示恶意和良性脚本的代表性示例。 种子集和测试集摘要是使用基于沙箱引爆报告的 LLM 生成的,而训练集摘要使用我们的迭代方法,没有使用引爆数据。代码引用使用等宽字体格式化以便清晰。
3 数据集
我们首先描述用于初始模型训练的高质量种子数据集。然后解释我们如何从 VirusTotal 收集更大的未标注数据集,该数据集用于我们的迭代学习方法。最后,我们介绍用于评估的测试集。
3.1 种子数据集
鉴于专家标注的稀缺性和成本,我们遵循先前的研究(Li-ICLR-2024; Wang-ArXiv-2022),从 VirusTotal 组成了一个包含 900 个脚本的种子数据集。该数据集支持三项任务:恶意软件检测、脚本语言分类和自然语言描述生成。表 1 显示了跨语言和恶意性标签的分布,而图 3 提供了示例条目及其相应的描述。
为确保恶意软件标签的质量,我们结合了多个验证来源:(1)用于检测已知恶意模式的 YARA 规则(Lockett-CoRR-2021),(2)用于动态分析的沙箱引爆(Guven-IJCESEN-2024)以及(3)专家手动验证。为了生成高质量的脚本行为描述,我们利用沙箱引爆报告获取技术背景,并使用 Llama-3.3-70B-Instruct(温度 τ=0.3)。我们注意到,手动验证是由具有专业网络安全知识的主题专家(SME)进行的。他们审查了脚本内容和相应的沙箱引爆报告,以确保准确分类恶意和良性样本。这种方法遵循了先前的研究方法(Li-ICLR-2024; Corlatescu-NeurIPS-2023; Wang-ArXiv-2022; Anderson-ArXiv-2018),同时解决了获取专家标注数据的挑战。
3.2 训练数据收集
我们从 VirusTotal 收集了 157,126 个脚本,涵盖通常与网络安全威胁相关的五种语言(Feng-IEEE-2025a; Li-SIGSAC-2024; Srinivasan-STCR-2023; Sohan-IEEE-2020):Bash (sh)、Batch (bat)、JavaScript (js)、PowerShell (ps) 和 Python (py)。初始语料库分布如表 1(第一部分)所示。虽然数据在良性和恶意样本之间似乎平衡,但这些标签——源自内部基于 YARA 规则的噪声标注自动化——仅供参考,并且由于固有的噪声而未用于训练。
通过多个过滤和验证步骤,包括一致性检查和质量阈值,我们将这个初始语料库精炼到 101,277 个示例,得到我们最终的训练数据集,如表 1 第二部分所示。完整的过滤方法和验证过程在第 4 节中详细描述。

图 4:伪标签质量过滤流程。 LLM 标注器使用多种配置(例如温度设置)生成元数据和自然语言解释以确保可靠性。如果元数据在不同配置下保持一致并满足置信度阈值,则样本通过过滤。然后,一个 LLM 评判者验证生成的解释与元数据标签之间的一致性。
3.3 测试集
遵循基准研究建议(Guo-NeurIPS-2024),我们为每种语言额外采样 700 个样本,创建一个包含 3,636 个样本的测试集。测试集的质量保证遵循第 3.1 小节描述的方法,生成基于行为的脚本摘要,并验证脚本语言和恶意性标签。分析显示,至少 6% 的测试样本存在混淆技术,反映了现实世界的恶意软件。
最后,我们发布了本节描述的三个子集:一个包含 101,277 个样本的过滤训练集,一个包含 900 个样本的高质量种子集,以及一个包含 3,636 个样本的测试数据集。每个条目包含脚本的 SHA256 标识符、恶意性和脚本语言标签,以及生成的脚本摘要。种子集和测试集包含基于沙箱信息的摘要,而训练集摘要遵循我们的迭代方法,详见第 4.1 节。为确保负责任地披露,我们的公共版本不包含脚本内容,但所有样本仍可通过 VirusTotal 平台供已完成必要背景验证和合规性检查的认证用户访问。
4 方法
我们的自训练方法(图 1)利用一个小的、高质量的种子数据集来微调 LLM,然后该 LLM 用于为更大的未标注脚本语料库生成伪标签。通过迭代 refinement,我们以自监督的方式扩展训练数据。本节详细介绍了两个关键组成部分:迭代数据集扩展和自训练策略。我们在三项任务上评估我们的方法:恶意软件分类、编程语言识别(在后续章节中统称为元数据)和自然语言行为解释。
4.1 迭代数据集扩展
本小节涉及我们的合成数据生成过程及随后的数据集 refinement(图 4)。我们首先在种子数据集上微调一个大语言模型以创建 LLM 标注器 V1,然后用它为我们最初的 157,126 个未标注脚本生成伪标签。鉴于训练数据有限,我们实施了严格的过滤以确保质量,如下所述。
-
初始生成:
使用标注器 V1(在种子数据上微调的 Llama-3.3-70B-Instruct),我们在多个温度设置下为 157,126 个脚本生成 JSON 格式的解释和元数据(恶意性标签和语言标识)。 -
质量过滤:
我们的过滤流程包括多个阶段。初始清理删除了空响应(9,095)、截断的摘要(17)和不完整的 JSON(7,825),使数据集减少了 10.76%。跨三个温度(0.4, 0.6, 0.8)的一致性检查消除了恶意标签不一致的样本,使数据再减少 14.28%。使用 Phi-3.5-Mini(因其在我们的测试集上达到 99.5% 的准确率而被选中),我们删除了 219 个(0.22%)摘要与恶意性标签存在差异的样本。最后,我们应用了 90% 的 logit 概率置信度阈值,大多数值聚集在 1 附近(图 5)。最终过滤后的数据集包含 101,277 个示例(表 1)。这种过滤策略在正确性和数据集大小之间取得了平衡,但阈值可能需要针对不同应用进行调整。

图 5:基于置信度得分的训练数据保留。 模型置信度得分的分布,源自恶意性预测的 logit 概率。在我们的案例中,90% 的阈值平衡了质量和数量,尽管该值是任务特定的。最好彩色查看。
表 2:三种模型版本(Base:预训练的 Llama-3.3-70B-Instruct,V1:第一次迭代,V2:第二次迭代)在五种脚本语言上的语言检测和恶意软件检测准确率百分比。 注意批处理脚本恶意软件检测的显著改进(从 Base 到 V2 提高了 52.7%)以及通过迭代训练在所有语言上的一致增益。
| 模型 | sh | bat | js | ps | py | 平均 |
|---|---|---|---|---|---|---|
| Base | 89.2 | 92.3 | 98.4 | 89.9 | 100 | 93.7 |
| V1 | 98.0 | 94.2 | 99.5 | 92.7 | 99.8 | 96.8 |
| V2 | 99.3 | 94.9 | 99.8 | 91.8 | 100 | 97.1 |
| 模型 | bash | batch | js | ps | py | 平均 |
|---|---|---|---|---|---|---|
| Base | 92.4 | 52.7 | 90.8 | 94.2 | 89.8 | 83.1 |
| V1 | 93.2 | 77.9 | 90.6 | 95.3 | 91.8 | 89.3 |
| V2 | 96.3 | 82.4 | 92.2 | 95.3 | 92.6 | 91.5 |
4.2 自训练策略
我们的完整自训练方法如图 1 所示。为了训练 LLM 标注器,我们使用了指令微调方法,使这些模型专门用于我们的任务——即恶意软件检测、语言分类和摘要生成。鉴于数据集相对较小且整个实验中使用的架构较大,我们决定使用低秩自适应(LoRA)(Hu-ICLR-2022),该方法已知能以最少的可训练参数高效地适应大模型。每次迭代遵循相同的训练过程但使用不同的数据集:标注器 V1 在种子数据上训练,而标注器 V2 则包含种子和 V1 生成的样本。为防止过拟合,我们监控在保留子集上的验证损失,训练直到收敛(V1 训练了 11 个 epoch,在较小的种子数据集上训练;后续迭代训练了 13 个 epoch)。
5 实验
在本节中,我们简要介绍我们的实验设置和配置参数,然后详细分析我们自改进方法的性能和结果。
5.1 实验设置
在我们的实验中,我们使用低秩自适应(LoRA)在 NVIDIA H100 Mega GPU 上微调了 Llama-3.3-70B-Instruct。基础超参数包括:16k 上下文大小、批大小为 1、学习率为 0.0001、权重衰减为 0.001、预热比例为 0.05,并启用了梯度检查点和打包以进行内存优化。标注器 V1 使用 LoRA 参数(秩为 8,α=16,丢弃率为 0.05),目标模块设置为“all-linear”,训练了 15 个 epoch,其中第 11 个 epoch 提供了最佳性能。标注器 V2 保持基础配置,但将 LoRA 的秩和 α 加倍(分别到 16 和 32),并将丢弃率增加到 0.1。在其 20 个训练 epoch 中,第 13 个 epoch 被证明是最佳的。
根据验证损失收敛选择性能最佳的检查点以防止过拟合,然后在我们保留的测试数据集上进行评估。补充材料中提供了更多细节。
5.2 结果
我们通过定性和定量分析来评估我们的标注器模型 V1 和 V2。对于检测能力(即语言识别和恶意软件检测),我们使用大约 3,600 个样本的测试集(第 3.3 小节),与基础的 Llama-3.3-70B-Instruct 模型比较性能。对于脚本理解,我们评估了五种语言(Bash、Batch、Javascript、PowerShell 和 Python)下 215 个小于 3KB 的样本。人类和 LLM 评判者都对生成的摘要进行了成对评估,并在适当时可以选择将 V1 和 V2 的输出评定为等效。
-
检测能力:
基础模型 Llama-3.3-70B-Instruct 即使在微调之前也表现出强大的语言检测能力,在所有脚本语言上平均准确率达到 93.70%。它在 Javascript 和 Python 上表现特别好,但对 Bash(89.22%)的鲁棒性较差。其恶意软件检测效果差异很大,从 Bash、Javascript 和 PowerShell 超过 90% 的准确率,到批处理脚本的 52.68%,平均为 83.09%。
我们的微调过程在两项检测任务中都带来了显著改进。V1 将 Bash 语言检测提高了 8.8%,而 V2 在 Bash 和 Javascript 上实现了超过 99% 的语言准确率,在 Python 上达到了完美的 100%。同样,恶意软件检测在所有语言上都有所改善,大多数语言的改进范围在 1.1% 到 3.8% 之间,而批处理脚本则有显著的 29.9% 的改进。
McNemar 检验(McNemar-Psychometrika-1947)证实了 V2 相对于 V1 的改进在统计上是显著的(p < 10⁻⁵),V2 纠正了 V1 预测中的 110 个误报和 49 个漏报。
这些结果凸显了我们的微调方法在增强模型正确识别脚本语言和恶意样本能力方面的有效性,特别是解决了基础模型在先前具有挑战性的脚本类型检测能力方面的特定弱点。 -
脚本理解的人类评估:
我们通过人类和 LLM 评判者评估生成的摘要,人类评估是盲法进行的以防止偏差。每位人类评判者评估大约 20 对随机化的摘要对,提供他们的偏好和选择背后的理由。
人类评估者发现,在 50.42% 的情况下,两种模型产生了相似且事实准确的摘要,展示了可比的脚本理解能力。模型之间的偏好主要反映了风格差异(例如,冗长程度、细节水平、信息流和结构),而不是事实准确性。尽管这些个人偏好影响了决策,但手动评估显示对 V1 有微弱的偏好(50.46%),V1 被选中 54 次,而 V2 被选中 53 次,有 9 个实例两种模型被评为同等有效。不太积极的一面是,我们观察到两个模型总共有 27 个幻觉实例(V1:13,V2:14),在不同编程语言中分布不同。V1 在处理 PowerShell(5 个实例)和批处理/Python 脚本(各 3 个)时更容易出现幻觉,而对 Javascript 样本则完全可靠。相比之下,V2 主要问题在于批处理脚本(8 个实例),但在 Python 上有所改进(仅 1 个实例)。 -
LLM 评判脚本理解:
为了补充人类评估,我们采用了多个 LLM 评判者。使用标准化提示(图 6),每个 LLM 评估摘要的脚本识别、技术覆盖、安全影响、构成质量和网络安全术语准确性。如表 3 所示,六个 LLM 评判者中的三个与人类评估者一致,倾向于 V1,而 Claude 3.7 Sonnet 和 GPT-5 则显著偏离,表现出对 V2 更强的偏好。其他 LLM 评判者则一致倾向于 V1。LLM 偏好的分歧表明,当事实准确性 consistently 很高时,不同的评估框架可能强调脚本摘要的不同品质。值得注意的是,Phi-3.5-Mini-Instruct 由于其较小的架构(38 亿参数),无法完成完整的评估集,这可能是由于其与较大模型相比容量有限。
表 3:不同评估者对 V1 与 V2 性能的比较。 人类和 LLM 评判者各评估了大约 215 个样本。百分比显示了模型版本被偏好的胜率。该表排除了人类评估者评为等效的 19 个案例,因为 LLM 评判者没有此选项。
| 评估者 | V1 | V2 |
|---|---|---|
| 人类标注者 | 46.26% | 44.85% |
| Llama-3.3-70B-Instruct | 48.85% | 51.15% |
| Claude 3.7 | 47.57% | 52.43% |
| Phi-3.5-Mini-Instruct | 56.22% | 43.78% |
| Mixtral-7x22B-Large | 52.07% | 47.93% |
| GPT-4o | 51.15% | 48.85% |
| GPT-5 (low) | 47.47% | 52.53% |

图 6:用于评估模型 V1 和 V2 脚本理解能力的完整评估提示。 该相同提示用于所有四个评判者模型:Claude 3.7 Sonnet、Llama 3.3 70B Instruct、Phi 3.5 Mini Instruct 和 Mixtral 7x22B Large。
6 讨论
本节扩展了第 5.2 小节中提出的评估,重点关注两个方面。首先,我们讨论基于沙箱信息的种子摘要如何通过跨迭代的模式保留来提高生成质量。其次,我们提出了关于标注器 V1 和 V2 之间风格演变的人类详细观察,为我们的模型生成特征提供更深入的见解。
-
来自引爆报告的知识迁移:
为了评估基于沙箱信息的种子标注的有效性,我们分析了种子摘要与标注器 V1 生成的描述之间的行为模式保留。表 4 展示了在两个数据集中发现的一些较短常见模式的几个示例,更长的示例包括“查询敏感的 IE 安全设置”、“调用通常用于创建 HTTP 或 FTP 会话的 API”和“输入文件包含长的 base64 编码字符串”。具体来说,超过 50 个种子摘要和超过 1,300 个 V1 生成的描述包含完全匹配。这些模式在超过 50 个种子摘要和 1,300 个 V1 生成的描述中的存在证明了通过微调成功迁移了沙箱衍生的知识。
特别是,对于标注大型数据集,我们的方法相较于传统的引爆分析具有显著优势。虽然沙箱引爆成本高昂、耗时且依赖于特定的环境条件,但基于 LLM 的分析提供了更快的,并且根据用例,甚至更具成本效益的洞察。此外,静态分析可以识别潜在行为,即使在动态执行失败时,特别是对于依赖于不可访问资源、沙箱感知恶意软件或特定环境配置的脚本。
表 4:在基于沙箱信息的种子摘要和后续 V1 生成的描述中都存在的行为模式示例。
| 短语 | 种子 | V1 |
|---|---|---|
| 向远程进程写入数据 | 10 | 141 |
| 写入注册表键 | 9 | 32 |
| 创建新进程 | 8 | 98 |
| 修改代理设置 | 8 | 48 |
| 删除注册表键 | 8 | 26 |
| 执行 shell 命令 | 7 | 214 |
| 执行 JavaScript 文件 | 5 | 269 |
| 查询进程信息 | 5 | 24 |
| 查询敏感的 IE 安全设置 | 5 | 30 |
| 释放 cabinet 归档文件 | 5 | 9 |
| 调用 C# 编译器 | 3 | 10 |
| 搜索文件内容 | 2 | 256 |
-
摘要生成风格进展:
我们的人类评估揭示了 V1 和 V2 摘要之间截然不同的风格模式,尽管它们的技术准确性相似。V1 保持了更技术和保守的方法,专注于特定的实现细节,如命令标志、内存分配参数和 API 调用。V2 产生了更具可读性的摘要,并改进了叙事流程,同时显示出几个值得注意的特征。首先,V2 表现出一种戏剧化描述的倾向,偶尔将脚本描述为“强大的威胁”,并对脚本意图做出更广泛的假设。这在处理良性脚本时尤其明显,它有时会高估安全风险,而 V1 则保持更中立的立场。标注者 consistently 注意到了这种差异,通常更倾向于 V1 对干净脚本的更谨慎的方法。其次,虽然 V2 的摘要通常更具可读性和流畅性,但它们偶尔表现出冗余,特别是在描述混淆技术或编码方案时。V1 的简洁、技术性描述尽管在风格上不那么叙事化,但通常更受青睐。这些观察结果表明在迭代过程中存在技术精确性和自然语言流畅性之间的权衡。虽然 V2 改进了可读性和叙事流程,但它也引入了一种倾向于假设恶意意图的偏见,并偶尔为了表达性而牺牲了精确性。这种模式在多个标注者中是一致的,他们经常指出他们的偏好是由摘要风格驱动的,而不是技术准确性,因为两种模型保持了相似水平的事实正确性。重要的是,这种 V1/V2 的权衡满足了不同的操作需求:V1 为需要详细实现细节的工程师和恶意软件分析师提供了技术精确性,而 V2 则为更广泛的受众优先考虑可读性,同时不牺牲分类性能。
7 局限性
我们的方法面临三个局限性。首先,模型上下文长度限制阻止了对较长脚本的分析,特别是影响了具有大量代码块的 PowerShell 和 JavaScript 样本。其次,语言检测准确性(V2 为 97.14%)在迭代中显示出最小的改进,表明存在性能天花板。第三,我们观察到可读性和技术精确性之间存在明显的权衡,V2 倾向于自然语言流程,偶尔以技术准确性为代价,人类评估者发现这种差异是细微的且主要是风格上的。
8 结论
在这项工作中,我们展示了自改进语言模型如何增强恶意软件脚本分析,在最少人工监督下,在分类和摘要生成方面实现了统计上显著的改进。我们的方法 notably 将批处理脚本恶意软件检测从接近随机(52.7%)提高到在两个迭代后达到稳健的(82.4%)准确率。为了支持可重复性和未来研究,我们发布了一个包含超过 10 万个示例的数据集,涵盖五种脚本语言,并平衡了良性和恶意样本的代表性。此外,我们提供了一个评估框架,结合了量化指标与人类和基于 LLM 的定性评估,为该领域的未来工作建立了一个稳健的基准。结果证实,LLM 可以有效地从有限的种子数据中学习识别恶意行为模式, substantially 减少了对成本高昂的沙箱引爆和专家标注的依赖。
附录
相关工作
表 5 展示了几个为脚本恶意软件分析提出的数据集。然而,这些数据集大多专注于单一编程语言,并且缺乏自然语言解释。在本小节的后续部分,我们根据它们涵盖的主要脚本语言对现有工作进行分类。
-
专注于 PowerShell 的数据集:
最大的 PowerShell 特定数据集包括 Fang-Neurocomputing-2021 和 Hung-JIT-2024 的工作,分别包含大约 4,200 和 4,100 个恶意样本,两者都具有可比数量的良性样本。Varlioglu-IEEE-2024 引入了一个较小的包含 200 个恶意 PowerShell 脚本的数据集,但没有良性对应物。 -
以 Python 为中心的集合:
Python 脚本数据集主要关注包级分析。Guo-ASE-2023 提出了最大的 Python 特定集合,包含 4,669 个恶意和 549 个良性样本。其他值得注意的贡献是 Samaana-SIGAPP-2025 和 Vu-ArXiv-2022 的工作,他们专注于 PyPI 包,分别包含 138 和 168 个恶意样本,并辅以更大的良性样本集。 -
多语言数据集:
很少有数据集涵盖多种脚本语言。Ladisa-ACSAC-2023 分析了 Python 和 JavaScript 脚本,而 Erdemir-ArXiv-2024 提供了最大的多语言数据集,涵盖 Python、Bash 和 Perl,包含 48,259 个恶意和 363,998 个良性样本。 -
现有数据集的局限性:
现有数据集表现出几个显著的局限性。最值得注意的是,它们通常专注于单一脚本语言,限制了它们在现实世界场景中的适用性,因为在现实场景中多种语言通常一起使用。此外,现有数据集中没有一个包含批处理脚本,这在基于 Windows 的脚本分析中造成了一个明显的空白。所有现有数据集中都缺乏自然语言解释,这使得研究人员难以理解和验证所研究的恶意行为。此外,许多这些数据集在恶意和良性样本之间存在显著的类别不平衡,可能会影响在此数据上训练的机器学习模型的有效性。
我们的工作通过引入一个涵盖五种脚本语言(PowerShell、Bash、Batch、JavaScript 和 Python)的综合数据集来解决这些局限性,包含 2,368 个恶意和 2,168 个良性样本,保持了更好的类别平衡。独特的是,我们的数据集包含所有样本的自然语言解释,便于更好地理解和分析恶意行为。
表 5:公开可用的脚本数据集与我们的工作(AutoMalDesc)的比较。 标有 * 的条目代表包级脚本(例如,Python 的 PyPI 包)。现有数据集主要专注于单一脚本语言,并且缺乏批处理脚本覆盖和自然语言解释。该表显示了不同编程语言中恶意和良性脚本的样本计数。
| 数据集 | 恶意样本 | 良性样本 | 涵盖语言 | 解释 |
|---|---|---|---|---|
| (Fang-Neurocomputing-2021) | 4,202 | 4,316 | PowerShell | 否 |
| (Hung-JIT-2024) | 4,100 | 5,189 | PowerShell | 否 |
| (Varlioglu-IEEE-2024) | 200 | 0 | PowerShell | 否 |
| (Samaana-SIGAPP-2025) | 138* | 5,193* | Python | 否 |
| (Ladisa-ACSAC-2023) | 194* | 1,640* | Python, JavaScript | 否 |
| (Guo-ASE-2023) | 4,669* | 549* | Python | 否 |
| (Vu-ArXiv-2022) | 168* | 2,416 | Python | 否 |
| (Fang-Wiley-2021) | 515* | 1,511* | Python | 否 |
| (Erdemir-ArXiv-2024) | 48,259 | 363,998 | Python, Bash, Perl | 否 |
| 我们的(种子 + 评估) | 2,368 | 2,168 | PowerShell, Bash, Batch, JavaScript, Python | 是 |
种子数据生成
本小节详细介绍了我们为种子数据集生成高质量脚本解释的系统性提示工程方法。通过多轮提示开发和测试,我们识别并解决了在实现一致且准确的恶意软件评估中的几个显著挑战。
-
初始方法:
我们从一个极简主义的提示开始,包含 5-6 个分析要求的要点和基本的格式指南。跨多个温度设置(0.2, 0.3, 0.5)的实验评估暴露了模型响应中的两个关键局限性。首先,生成的分析表现出机械重复,模型以僵化、公式化的方式处理每个指令点,缺乏专家恶意软件分析特有的自然流畅性。其次,输出经常被过多的元评论所破坏,模型会中断其分析,插入诸如“我现在将总结脚本”或“我必须只写 1-2 段”之类的自我引用短语。这种行为展示了基础模型固有的 tendency 保持其助手角色,而不是完全体现提供直接技术评估的恶意软件分析师角色。 -
基于段落的方法:
为了解决我们初始方法中发现的机械响应和元评论问题,我们将提示重组为更自然的段落格式。这次修订将指令组织成两个不同的部分:“内容指令”和“禁止事项”,脱离了产生刚性响应的要点结构。我们的假设是,以流畅的散文呈现要求, coupled with 流畅写作的明确指令,将鼓励模型产生更自然的分析性响应。与我们的预期相反,这种修改导致输出质量下降。模型产生了极其 condensed、类似列表的分析,与我们最初的要点方法相比,技术深度 substantially 降低。这种分析质量的意外回归表明,提示结构和响应复杂性之间的关系比最初假设的更为复杂,仅仅将指令重新格式化为段落不足以实现期望的专家级分析。 -
基于模板的方法:
基于从初始方法和基于段落的方法中吸取的经验教训,我们的第三次迭代回到了结构化格式,同时引入了明确的分析部分(例如,技术功能、安全影响)来指导模型响应的组织。使用温度设置 0.3 进行测试揭示了与我们先前尝试不同的新挑战。模型开始逐字合并部分标题并增加了其元评论(例如,“最佳答案是…”),同时也通过在其分析中包含代码片段而 disregarding 明确的禁止事项。我们试图通过更强的禁止性指令来解决这些问题,但这适得其反,因为模型变得过于专注于避免禁止行为,而不是提供实质性的分析。这种过度校正表现在包含自我引用语句的响应中,如“无代码片段”和“我不能包含元评论”, alongside 要么过早终止要么包含冗余内容的碎片化分析。一个显著的改进来自于通过移除过度代表的战术、技术和程序(TTP)来优化输入特征,这些 TTP 出现的频率是其他签名的 20 倍,在输出中产生了过多的噪声。虽然这种调整提高了响应质量,但大约 20% 的生成分析仍然表现出质量问题,表明需要进一步的提示工程 refinements。

图 7:使用 LLama3.3-70B-Instruct 生成高质量脚本分析的全面种子提示工程。 该提示建立了一个角色扮演场景,其中 LLM 扮演高级恶意软件分析师,确保技术准确性和专业分析。它包括处理干净和恶意脚本的具体指令,以及对分析深度、结构和内容的详细要求。该提示通过合并恶意和可疑签名作为上下文输入来利用引爆报告数据。关键组成部分包括:(1) 为一致的 analyst persona 设置系统上下文,(2) 用于脚本内容和分类元数据的结构化输入格式,(3) 明确的依赖于分类的分析要求,(4) 详细的格式和风格指南以确保一致、高质量的输出,以及 (5) 特定约束以防止常见的 LLM 分析缺陷,例如不确定性陈述或直接分类引用。这种精心设计的提示结构确保生成的分析保持技术精确性,同时提供脚本功能或恶意行为的全面覆盖。
-
系统提示集成:
在遇到响应质量、元评论和结构一致性方面的持续问题后,我们通过从根本上重新考虑模型的操作上下文取得了重大突破。我们的第四次迭代引入了一个系统提示,明确将 AI 的角色定义为“专注于技术威胁评估的高级恶意软件分析师”。这种方法将详细的人物角色定义与结构化的三部分分析模板和全面的格式指南相结合,解决了许多在先前迭代中观察到的机械和元评论问题。虽然这种修改 substantially 改善了响应清晰度并减少了阻碍早期尝试的元评论,但它揭示了一个关键的准确性问题:大约 25% 的干净样本被错误地描述为恶意,表明存在严重的幻觉问题,即模型在良性脚本中 actively 寻找恶意指标。我们试图通过温度调整(0.7 和 0.9)来缓解这一问题,旨在鼓励更多的自然语言变化,但这些修改产生了相反的效果,降低了技术精确性,同时加剧了幻觉问题。这一经验凸显了在自动化恶意软件分析中保持技术准确性和实现自然语言流畅性之间的微妙平衡。 -
最终优化的提示:
基于从我们先前迭代中获得的见解,特别是系统提示方法中发现的幻觉问题,我们最终的提示工程解决方案(详见图 7)实施了几个关键的结构修改。我们消除了在早期版本中导致机械响应的 rigid 编号部分格式,转而采用更流畅、自然的语言指令。为了解决我们第四次迭代中观察到的对良性脚本的持续错误分类,我们为干净脚本分析引入了具体的内容指导,明确指示模型专注于合法功能,避免搜索不存在的恶意行为。通过加入关于分类标签准确性的权威性陈述,宣布它们“100% 可信和权威”,以防止模型对提供的分类进行二次猜测,进一步缓解了幻觉问题。此外,我们引入了对多样化段落结构和多样化开头句的明确要求,以对抗在所有先前尝试中观察到的重复模式。这种对我们提示工程方法的全面 refinement 导致了 significantly 改进的分析质量,成功地在技术精确性和自然语言流畅性之间取得了平衡,同时保持了准确的分类对齐。最终的提示结构有效地解决了我们迭代开发过程中遇到的主要挑战:机械响应、元评论、幻觉和重复模式。
数据集特征和令牌分布分析
为了提供用于两个 LLM 标注器的训练数据的全面洞察,并解决对上下文长度限制的潜在担忧,我们对数据集中跨数据集的脚本令牌分布进行了探索性数据分析。
图 8 展示了种子数据集(900 个样本)的令牌计数分布。大多数样本都远在我们基础模型的 128k 令牌上下文限制之内,平均值为 3,520 个令牌,中位数为 1,158 个令牌。这种右偏分布表明,虽然大多数脚本相对紧凑,但一小部分样本包含 substantially 更多的令牌。

图 8:种子数据集的令牌计数分布(n=900)。
按编程语言细分种子数据(图 9),我们观察到跨语言的脚本大小存在显著差异。JavaScript 样本显示出最长的脚本,少数超过 30,000 个令牌,而 PowerShell 也包含一部分较长的样本。相比之下,Bash、Batch 和 Python 脚本往往更紧凑,大多数聚集在较低的令牌范围内。

图 9:种子数据集按编程语言的令牌计数分布。
对于 substantially 更大的 V2 训练数据集,图 10 说明了大约 101,000 个样本的大小分布。该分布保持了类似的模式,平均值为 5,738 个令牌,中位数为 1,196 个令牌。为了更好地可视化并放大分布,图 11 在对数刻度上呈现了相同的数据,显示脚本频率随令牌计数呈指数下降。这证实了极长的脚本只占训练数据的一小部分,减轻了对上下文长度瓶颈的担忧。

图 10:V2 训练数据集的令牌计数分布(n=101K)。

图 11:在对数刻度上显示的 V2 训练数据集令牌计数分布。
在种子数据中观察到的语言特定模式在更大的 V2 训练集中持续存在(图 12)。JavaScript 继续在令牌计数的上限范围内占据主导地位,有几个样本接近 80,000 个令牌。

图 12:V2 训练数据集按编程语言的令牌计数分布。
数据过滤洞察
虽然前一小节详细介绍了我们生成种子和测试数据集的迭代提示工程过程,但本小节介绍我们对 LLM 标注器 V1 生成的解释的全面数据过滤方法。
-
概率过滤:
我们对标注器 LLM 的 logit 输出的分析表明,在分类决策中 consistently 具有高置信度,支持了主论文中提出的发现。如图 13 所示,恶意软件预测令牌的概率分布显示出强烈的偏向于接近 1 的值,表明模型在其分类中具有 robust 的信念。这种高概率预测的集中表明模型为恶意软件识别开发了强大的判别特征,而不是产生不确定或模糊的分类。

图 13:标注器 V1 产生的分类标签令牌的概率分布。 直方图显示了根据模型的原始 logit 输出计算的令牌概率,提供了对整个数据集中模型分类置信度的洞察。x 轴代表概率范围,y 轴显示每个概率区间的出现频率。
-
用于过滤的置信度阈值选择:
我们过滤流程中 90% 置信度阈值的确定源于对数据保留和标注准确性之间权衡的仔细分析,特别是考虑到大语言模型倾向于对其预测过度自信的已知 tendency。
我们的标签保留分析,如图 14 所示,表明 90% 的阈值在各种温度设置下实现了最佳平衡,保持了 86.49% 的最低标签保留率,同时基于语言识别保留了 96.84% 的样本。更高的置信度阈值导致显著的数据丢失——高达总样本的约 35%,尤其是在更高温度下(例如 0.8)——并且更关键的是,通过 flattening 分布降低了恶意软件样本的多样性。相反,较低的阈值(80% 或以下)尽管对标签和语言识别的数据保留率很高,但选择性不足,允许太多来自 V1 的低质量预测通过过滤器。
这种阈值选择反映了我们为标注器 V2 创建高质量训练数据的战略重点,该数据同时保持样本多样性和预测准确性。我们将过滤标准 exclusively 集中在标签保留上,因为基础 LLM 在其预训练数据中表现出强大的编程语言识别准确性(如图 15 所示),而恶意软件分类仍然是主要挑战。90% 的阈值代表了一个经验优化的平衡点,能有效过滤不可靠的预测,同时保留足够的数据集规模以进行有效的迭代学习。

图 14:置信度阈值和温度设置对恶意软件分类数据保留的影响。 该图展示了模型置信度阈值(x 轴)与在不同温度值下保留样本百分比(y 轴)之间的关系。

图 15:置信度阈值和温度设置对语言识别数据保留的影响。 该图展示了模型置信度阈值(x 轴)与在不同温度值下保留样本百分比(y 轴)之间的关系。
表 6:跨不同置信度阈值和温度设置的数据保留率。 该表显示了基于标签置信度(标签保留率)和语言识别(语言保留率)在不同模型置信度阈值(80-99%)和采样温度(0.4-0.8)下保留样本的百分比。粗体条目突出显示了我们选择的 90% 置信度阈值操作点,该点平衡了保留率和预测可靠性。更高的温度和置信度阈值通常导致更低的保留率,特别是对于标签分类任务。
| 置信度 | 温度 | 标签保留率 (%) | 语言保留率 (%) |
|---|---|---|---|
| 80.0% | 0.4 | 97.40 | 99.14 |
| 80.0% | 0.6 | 96.07 | 98.62 |
| 80.0% | 0.8 | 94.20 | 97.55 |
| 85.0% | 0.4 | 96.88 | 98.99 |
| 85.0% | 0.6 | 94.23 | 97.90 |
| 85.0% | 0.8 | 90.71 | 97.27 |
| 90.0% | 0.4 | 95.23 | 98.77 |
| 90.0% | 0.6 | 92.02 | 97.60 |
| 90.0% | 0.8 | 86.49 | 96.84 |
| 95.0% | 0.4 | 93.28 | 97.92 |
| 95.0% | 0.6 | 86.49 | 97.01 |
| 95.0% | 0.8 | 81.08 | 96.34 |
| 99.0% | 0.4 | 86.50 | 97.09 |
| 99.0% | 0.6 | 75.56 | 96.10 |
| 99.0% | 0.8 | 65.76 | 94.32 |
与基础模型的定性比较
为了建立一个全面的基线比较,我们进行了额外的评估,将我们微调的标注器模型与预训练的 Llama-3.3-70B-Instruct 进行对比。值得注意的是,标注器以最少的指令运行,只接收一个单句提示,而基础模型则需要一个更精细的、结构化的提示,类似于种子数据生成期间使用的提示。
表 7 展示了基础模型和标注器 V1 之间的比较。结果显示,六个评判者中的三个更喜欢 V1 的摘要(Llama-3.3-70B-Instruct: 53.02%, Claude-3.7-Sonnet: 52.44% 和 Phi-3.5-Mini-Instruct: 55.35%),而其余三个显示出对基础模型的微弱偏好(范围从 50.70% 到 51.39%)。这种混合结果表明,在种子数据集上的微调使得能够以显著降低的提示复杂性实现竞争性能,V1 摘要在一半的评估者中显示出相对于基础模型的 modest 但一致的优点。
表 7:预训练的 Llama-3.3-70B-Instruct 基线(Base)与 V1 标注器(在种子数据上微调)在四个 LLM 评判者之间的摘要质量比较。 百分比代表对 215 个脚本样本的偏好率。
| 评估者 | Base | V1 |
|---|---|---|
| Llama-3.3-70B-Instruct | 46.98% | 53.02% |
| Claude 3.7 | 47.56% | 52.44% |
| Phi-3.5-Mini-Instruct | 44.65% | 55.35% |
| Mixtral-7x22B-Large | 50.70% | 49.30% |
| GPT-4o | 51.16% | 48.84% |
| GPT-5 | 51.39% | 48.61% |
表 8 显示了对 V2 摘要与基础模型的评估。虽然百分比差异相对较小,但六个评判者中只有两个更喜欢 V2(Claude-3.7-Sonnet 为 53.95%,Phi-3.5-Mini-Instruct 为 50.70%)。这一结果值得注意,因为 V2 的训练方法不同:与 V1 在 900 个高质量的、基于沙箱信息的样本上微调不同,V2 是在大约 101K 个通过 V1 伪标注过程生成的样本上训练的。与需要大量提示的基础模型近乎持平表明,V2 成功地保持了摘要质量,尽管训练数据规模 substantially 增加,并且从专家策划转向模型生成的标注。这进一步证实了我们的迭代自训练方法在 notably 扩展数据集大小的同时保持了质量,尽管它没有产生与 V1 训练观察到的相同偏好增益。这种偏好的边际变化反映了在人类评估研究中也观察到的技术精确性和自然语言质量之间的权衡。
表 8:预训练的 Llama-3.3-70B-Instruct 基线(Base)与 V2 标注器(在种子数据上微调)在四个 LLM 评判者之间的摘要质量比较。 百分比代表对 215 个脚本样本的偏好率。
| 评估者 | Base | V2 |
|---|---|---|
| Llama-3.3-70B-Instruct | 50.23% | 49.77% |
| Claude 3.7 | 46.05% | 53.95% |
| Phi-3.5-Mini-Instruct | 49.30% | 50.70% |
| Mixtral-7x22B-Large | 54.67% | 45.33% |
| GPT-4o | 51.85% | 48.15% |
| GPT-5 | 50.69% | 49.31% |
方法细节
-
微调实现:
我们的微调方法将交叉熵优化与低秩自适应(LoRA)相结合,以有效地使 LLM 适应我们的特定任务。我们实施了指令微调,并在响应令牌上选择性计算梯度以优化训练效率。该实现利用了 HuggingFace Transformers 库(Wolf-EMNLP-2020)。代码在我们的代码库中公开可用。 -
自训练框架:
主论文中描述的自学习和合成数据过滤过程在算法 1 和 2 中正式呈现。
算法 1 概述了我们的迭代自学习方法,该方法通过重复的微调和过滤循环逐步改进标注器模型。该算法接受五个关键输入:一个由配对输入和输出组成的种子数据集 (Sₓ, Sᵧ),一组未标注的输入 Uₓ,一个初始的基础 LLM 标注器 A₀,一个用于验证的 LLM 评判者 J,以及指定的学习迭代次数 k。从空的合成标签 Uᵧ,₀ 开始,该算法执行 k 次迭代的三个核心操作:在组合的种子和先前生成的合成数据上微调模型 Aᵢ,通过推理为未标注的输入生成新标签 Ûᵧ,ᵢ,并对生成的标签应用质量过滤,产生精炼的标签 Uᵧ,ᵢ。这创建了一个反馈循环,其中每次迭代都建立在先前代的过滤输出之上,逐步精炼模型的能力,同时通过过滤保持输出质量。这种方法的迭代性质允许模型利用日益精炼的合成数据进行训练,而过滤机制确保生成的标签质量在整个过程中保持高位,最终产生具有增强性能特征的最终 LLM 标注器 Aₖ。
算法 2 实现了我们的多阶段过滤流程,确保对 LLM 标注器生成的合成标签进行质量控制。该算法接受在不同温度 T 下生成的合成标签 Ûᵧᵗ,以及源 LLM 标注器 A,一个用于验证的 LLM 评判者 J 和一个置信度阈值 α。过滤过程包括五个顺序阶段。首先,一个基本的完整性检查确保所有标签在句法上可解析。其次,一个共识检查识别在不同温度设置下标签预测保持一致的样本,仅保留那些具有一致标签分配的样本。第三,一个置信度检查根据模型的 logit 分数过滤标签,仅保留超过阈值 α 的标签。第四,一个连贯性检查通过 LLM 评判者验证标签,确保摘要内容与分配的标签保持一致。最后,采样阶段选择在温度 0.6 下生成的输出,产生最终的过滤集 Uᵧ。这种顺序过滤通过集合理解操作逐步精炼标签集,确保只有高质量、一致和连贯的标签留存用于后续模型训练。
所提出的训练框架保持了适应不同上下文的灵活性。这些算法支持多种修改路径。温度设置可以用替代的多样性控制超参数替换。合成标签生成期间的采样策略可以调整以满足特定需求。过滤标准可以修改以适应不同的质量要求。这种适应性确保了框架在不同用例中的适用性,同时保持其核心自学习功能。
算法 1 通用自学习方法。
输入: (Sₓ, Sᵧ) # 种子输入和输出
输入: Uₓ # 未标注输入
输入: A₀ # 基础 LLM
输入: J # LLM 评判者
输入: k # 学习迭代次数
输出: Aₖ # LLM 标注器
1: Uᵧ,₀ ← ∅
2: for i = 1 to k do
3: Aᵢ ← FineTuning((Sₓ, Sᵧ) ∪ (Uₓ, Uᵧ,ᵢ₋₁))
4: Ûᵧ,ᵢ ← Inference(Aᵢ, Uₓ)
5: Uᵧ,ᵢ ← Filtering(Ûᵧ,ᵢ, Aᵢ, J)
6: end for
7: return Aₖ
算法 2 合成标签的过滤流程。
输入: Ûᵧᵗ # 来自温度 t 的合成标签
输入: T # 生成 Ûᵧᵗ 的温度集合
输入: A # 生成 Ûᵧ 的 LLM 标注器
输入: J # LLM 评判者
输入: α # 置信度阈值
输出: Uᵧ # 过滤后的合成标签
1: # {“完整性”检查}
2: Ûᵧᵗ ← {y | y ∈ Ûᵧᵗ 可以被解析}
3: # {共识检查}
4: S_label ← {S | S 的 SHA 在 Ûᵧ 中, |{yˢ_labelᵗ | t ∈ T}| = 1}
5: Ûᵧᵗ ← {yˢ | S ∈ S_label, yˢ ∈ Ûᵧᵗ}
6: # {置信度检查}
7: Ûᵧᵗ ← {y | y ∈ Ûᵧᵗ, y_label 的 logit l, e^l ≥ α}
8: # {连贯性检查}
9: Ûᵧᵗ ← {y | y ∈ Ûᵧᵗ, J(y_summary) = y_label}
10: # {“采样”。我们将温度设置为 0.6。}
11: Uᵧ ← Ûᵧ⁰·⁶
12: return Uᵧ

图 16:标注器 V1 的训练损失曲线。 该曲线展示了平滑的收敛,在第 11 个 epoch(第 154 步)达到最佳性能,然后出现过拟合迹象。

图 17:标注器 V2 的验证损失进展,显示学习增强的合成语料库需要延长训练。 在第 13 个 epoch 达到最佳性能。
实验细节
-
计算基础设施和资源利用:
我们的实验在一个包含多个节点的集群上进行,每个节点配备 8 个 NVIDIA H100 Mega GPU,通过 Slurm 调度系统管理。计算需求因模型版本而异。标注器 V1 训练使用了 2 个节点(16 个 H100 GPU),在大约 1.5 小时内完成了 15 个 epoch。相比之下,标注器 V2 需要 20 个节点(160 个 H100 GPU)进行训练,由于语料库规模 substantially 更大,在大约 2 天内完成了 20 个 epoch。
推理过程被证明是计算密集型的,当分布在 20-24 个节点(160-192 个 H100 GPU)上时,处理 157,000 个样本的预测大约需要一天时间。这种延长的处理时间源于模型复杂性和 substantial 的数据处理需求,数据集加载造成了显著的计算瓶颈。鉴于这些显著的计算需求,我们做出了务实的决定,省略超参数调整,将我们的资源集中在确保稳健的主要实验上。 -
探索第三代模型(V3):
我们对第三代标注器(V3)的调查显示收益递减。在对扩展数据集(≈250K 样本)进行标注期间,V2 表现出比 V1 增加的预测噪声,需要修改过滤策略,包括在我们的共识检查中排除温度 0.8,以防止由于温度引起的失配而丢失大约 50% 的生成样本。尽管进行了这些调整并在扩展语料库上训练 V3,但性能指标最多只显示出边际改进,如图 18 和 19 所示:标签准确率峰值在 91.53%(第 10 个 epoch),与 V2 的性能匹配,而语言准确率达到 97.52%(第 13 个 epoch), marginally 超过 V2 的 97.14%。这些结果表明最佳性能在两次迭代时达到稳定期。

图 18:标注器 V3 在训练周期内的标注准确率性能评估,在第 10 个 epoch 达到 91.53% 的峰值准确率,与 V2 的性能匹配。

图 19:标注器 V3 的语言识别准确率进展,在第 13 个 epoch 展示了 97.52% 的峰值性能, marginally 超过 V2 的 97.14% 准确率。
-
训练动态和模型选择:
图 16 和 17 中描述的图表代表了 V1 和 V2 模型训练阶段的验证损失。它们展示了略有不同的收敛模式,指导了我们的检查点选择过程。对于在 900 个高质量种子样本上训练的标注器 V1(图 16),验证损失在整个训练过程中平稳下降。最佳性能在第 11 个 epoch(第 154 步)达到,此时损失曲线在后续 epoch 显示过拟合迹象之前趋于稳定。
相比之下,在扩展数据集(种子数据加上 100K V1 生成样本)上训练的标注器 V2(图 17)需要延长训练直到第 13 个 epoch(第 5356 步)。训练曲线表现出与 V1 相同的初始急剧下降,随后是 gradual 改进,反映了从增强的合成语料库中学习的复杂性。两个模型都训练直到验证损失收敛,选择在最小损失处的检查点以确保在未见数据上的稳健性能。
评估方法
-
性能指标:
我们使用标准分类指标评估模型性能。标签和语言准确率计算为正确分类样本的比例:
准确率 = (TP + TN) / (TP + TN + FP + FN) ... (1)
对于使用 LLM 评判者的比较评估,我们计算胜率为:
胜率 = 获胜次数 / 总成对比较次数 ... (2)
使用 McNemar 检验(McNemar-Psychometrika-1947)评估统计显著性:
χ² = (b - c)² / (b + c) ... (3)
其中 b = 110 个样本被 V1 预测为恶意但被 V2 预测为良性,c = 49 个样本反之亦然,得出 χ² = 23.402 (p < 10⁻⁵),拒绝了 p_b = p_c 的零假设。

被折叠的 条评论
为什么被折叠?



