Page 194 - 《软件学报》2026年第2期
P. 194
张育博 等: 基于依赖感知分层神经网络的代码注释增强方法 673
在超参数设置方面, 将源代码和目标序列的最大长度分别设置为 256 和 128. 如果输入序列的长度超过 256,
则需要对其进行截断. 此外, 将学习率设置为 5E–5, 采用层次化学习率衰减, 有助于模型的准确性. 使用 AdamW
优化器 [64] 来优化参数, 并采用了预热策略. 在推理阶段, 采用了 beam search 进行 token 生成, 并将 beam size 设为 6.
DHCS 的实现基于 PyTorch 库, 所有实验均在 Linux 环境下运行, 并部署在两张 GeForce RTX 3090 GPU (24 GB
显存) 上. 值得注意的是, 由于 StarCoder 模型参数量庞大, 因此其训练运行在 4 张 A100 GPU 上, 并利用了 PEFT
加速技术, 以优化性能并提高训练效率.
5.5 Baseline
为了全面评估 DHCS 模型的有效性并确保对比的公平性与代表性, 本研究精心选取了 9 种最先进的代码注
释生成方法作为 baseline. 这些 baseline 的选择主要基于以下考虑.
1) 时效性: 选取的模型均为近年来发表在顶级期刊或顶级会议 (ACL 2020–2024 和 ACM 2020–2024) 上的代
表性工作, 并在代码理解和生成领域具有广泛的影响力 (如 CodeBERT 引用量>3000+, CodeT5 引用量>1700+,
StarCoder 引用量>1000+).
2) 典型性: 选取的模型均是代码理解领域的典型方法, 涵盖了 Decoder-only (StarCoder)、Encoder-Decoder
(UniXcoder、CodeT5、CodeT5+、EACS) 等不同架构, 同时包含了传统模型 (NeuralCodeSum) 与 LLM (GPT-3.5-
turbo), 保证了技术路线的多样性.
基于以上原则, 本研究最终确定了以下 9 个基线模型进行对比.
● Baseline 1: RoBERTa [65] . 基于 BERT 的掩码语言模型 (MLM) 框架, 能够有效地捕捉来自训练数据的语言知
识, 代表了 BERT 模型的一个先进版本.
● Baseline 2: CodeBERT [33] . 其代码预训练阶段采用了两个自监督训练任务, 包括掩码语言建模 (MLM) 和替
换 token 检测 (RTD). 该模型是第 1 个大规模、跨多种编程语言和自然语言 (PL-NL) 的预训练模型.
[66]
● Baseline 3: UniXcoder . 一个统一的预训练模型, 支持编码器-解码器、仅编码器和仅解码器的配置. 此外,
它明确结合了抽象语法树 (AST) 建模. 为了处理 AST 序列和代码序列之间的差异, UniXcoder 随机去除 50% 的非
终结节点, 并利用跨模态内容融合, 结合从 AST 和代码注释中提取的语法和语义信息.
● Baseline 4: CodeT5 [37] . 一个统一的预训练编码器-解码器模型, 设计时考虑了 token 类型信息, 并通过开发者
指定的标识符传递代码的语义. 该模型假设开发者通常使用具有信息量的标识符来帮助理解代码, 因此这些标识
符应保留有价值的代码语义.
[1]
● Baseline 5: NeuralCodeSum . 基于 Transformer 模型, 利用自注意力机制来学习代码表示, 通过模拟代码
token 之间的成对关系来捕捉它们的长距离依赖.
● Baseline 6: GPT-3.5-turbo [67] . 由 OpenAI 提出的对话生成模型, 旨在理解上下文并生成连贯的回应. 通过在
大规模语料库上的广泛预训练, 它能够学习各种语言知识和上下文. 本研究选择了 2021 年发布的 GPT-3.5-turbo
模型, 利用提示生成相应的注释.
● Baseline 7: EACS [42] . 一个统一的预训练编码器-解码器模型, 包含两个编码器: 一个从重要语句中提取信息,
另一个将整个代码片段转换为嵌入表示, 两个编码器的输出随后传递给解码器以生成预测的注释. 该模型从代码
片段中提取重要语句, 以便理解并生成具有高自然性和信息量的注释.
● Baseline 8: CodeT5+ [43] . CodeT5 系列的一个变种, 采用灵活的模块组合, 能够适应不同的下游代码任务. 该
模型通过多种预训练任务从代码和文本数据中学习丰富的表示, 并弥合预训练和微调之间的差距.
● Baseline 9: StarCoder [13] . 一个仅包含解码器的 Transformer, 采用了多查询注意力 (multi-query-attention) 和学
习的绝对位置嵌入. 通过广泛的评估, 该模型超越了其他代码大语言模型 (Code LLM). 此外, 它在对 Python 进行
微调后的表现也超过了所有其他模型, 并且仍然保持在其他编程语言上的性能.
在这些 baseline 的基础上, 通过将本研究的模型与这些 baseline 进行比较来回答 RQ1. 此外, 还通过计算每个
模型的训练时间和推理时间来回答 RQ4, 为了评估主题感知复制机制和掩蔽子函数预测任务对模型性能的影响,

