Page 208 - 《软件学报》2024年第6期
P. 208

2784                                                       软件学报  2024  年第  35  卷第  6  期


                 见占总数的比例也较少. 从质量等级视角看, “较差”的评审意见占总数的比例尤其少. 非对称损失旨在自适应地调
                 整多标签分类任务中的多数类和少数类样本在训练时的重要程度来缓解类别不平衡和标签错误问题.
                    虚拟对抗训练损失       VAL  的定义如公式    (7) 所示:
                                                                 K ∑
                                VAL = D KL (p(·|x; ˆ θ)||p(·|x+r vadv (x,ε);θ)) = −  p(·|x; ˆ θ)log p(k|x+r vadv (x,ε);θ)  (7)
                                                                 k=1
                      D KL (·) 表示  KL  散度                                                  K  表示扰动次数,
                 其中,                  (Kullback-Leibler divergence) 函数, 用于描述两个概率分布间的差异,
                               ˆ θ
                                  θ
                 x  表示输入样本,    和   分别表示经上一次训练迭代已经获得的模型参数和本次训练迭代期望获得的模型参数,
                 r vadv  在原论文中被称为“adversarial perturbation”, 起对输入样本的扰动作用, 其定义如公式      (8) 所示:
                                            r vadv (x,ε) = argmaxD KL (p(·|x; ˆ θ)||p(·|x+r; ˆ θ))    (8)
                                                      r;∥r∥ 2 ⩽ε
                 其中,   ε  是一个超参数, 用于限制扰动半径. 以下对设置“虚拟对抗训练损失”的合理性做简要说明.
                    代码评审意见属于混合语言文本, 即在自然语言文本中可能存在若干程序语言文本/代码元素. 这些代码元素
                 具有普遍性、复杂性和不确定性. 普遍性是指代码元素在评审意见中经常出现. 复杂性是指其出现时的表现形式
                 的提升效果更显著, 因此该技术仅在有监督微调阶段被使用.
                 是复杂的, 如程序语言类别        (Java、JavaScript、SQL  等) 和结构特征  (变量名、表达式、语句等), 对于非领域专家
                 而言, 这些代码元素几乎是不可读的. 不确定性是指其是否出现在某一评审意见中, 出现时的位置和表现形式是不
                 确定的. 评审意见除了属于混合语言文本外, 还属于非书面语言文本, 如存在较多的口语、术语和错别字等. 尽管
                 自动化模型通过自监督预训练, 即领域预训练, 可以学习到当前语料库的评审意见的文本特征, 但是其在未来面临
                 其他语料库的评审意见时仍可能失效. 出于上述原因, 本文创新性地将代码元素、术语和错别字等视为对评审意
                 见的“攻击   (attack)/扰动  (perturb)”.
                    “对抗训练    (adversarial training)”是一种新型的正则化技术, 可以使对输入样本的小扰动            (这样的样本被称为
                 “对抗样本”) 不会导致模型输出产生较大的变化, 从而帮助提升模型的鲁棒性和泛化能力. 目前, 对抗训练已经被
                 广泛用于各类自然语言处理任务, 并取得了良好效果                 [43] . 需要注意的是, 在本文提出的方法中, 对抗样本并非指那
                 些原始的包含代码元素、术语或错别字等的评审意见, 而是指对评审意见                         (无论其是否包含上述元素) 的嵌入表
                 示添加细微扰动后所形成的样本. 本文期望用“对抗样本”来模拟包含代码元素的或是包含术语、错别字等的评审
                 意见, 从而增强模型的鲁棒性和泛化能力. 具体地, 在实施对抗训练时, 本文使用了“虚拟对抗训练”技术. 与一般的
                 对抗训练策略不同, 虚拟对抗训练不依赖样本的标签, 因此虚拟对抗训练可以在自监督预训练和有监督微调阶段
                 都能发挥作用; 更重要的是, 虚拟对抗训练可以在一定程度上缓解因标签不准确和不一致可能造成的效度威胁. 虚
                 拟对抗训练的实施主要通过设置特殊的损失函数来实现, 详见公式                      (7).
                    关于“非对称损失”和“虚拟对抗训练损失”的更多技术细节请参考原始论文                         [41,42] . 需要注意的是, 本文在正式
                 实验之前, 使用少量评审意见样本设计和实施了若干预实验                   (pilot experiments), 特别是设计和实施了验证“非对称
                 损失”和“虚拟对抗训练损失”效果的消融实验              (ablation experiments). 实验结果证实了它们的有效性, 因此被用作本
                 文提出的方法     (自动化模型) 的损失函数. 需要注意的是, 本文发现“虚拟对抗训练损失”在有监督微调阶段对模型


                  4   实 验

                    实验旨在验证本文提出的方法, 特别是验证所提方法中的自动化模型. 为了简洁起见, 除非明确说明, 本节后
                 文使用“本文提出的方法”指代“本文提出的方法中的自动化模型”, 即基于多标签学习范式和预训练模型                                BERT  的
                 文本分类模型.
                  4.1   研究问题
                    本节提出以下两个研究问题          (research questions) 来驱动实验设计和结果分析.
                    RQ1: 本文提出的方法能否有效地预测代码评审意见质量属性?
   203   204   205   206   207   208   209   210   211   212   213