Page 30 - 《软件学报》2021年第6期
P. 30
1604 Journal of Software 软件学报 Vol.32, No.6, June 2021
函数的梯度,如公式(4)所示:
ˆ ( ) log ( | , )]
∇ L () θ =−E yp [r y ∇ p ˆ y S θ (4)
ˆ ~( ) θ
ˆ
ˆ
其中,∇L(θ)表示损失函数 L(θ)的梯度;E表示期望, ()ry 表示智能体得到集合 ˆ y 所获得的奖励; (| , )py S θ 表示智
能体在参数为θ时,以文档 S 为输入得到输出集合 ˆ y 的概率.REINFORCE 算法在进行了统计学上的观察后,认为
利用 (| , )py S θ 对数的梯度乘以 ˆ y 获得的奖励负期望,可近似替代损失函数的梯度.
ˆ
由于智能体作出的策略存在多样性,将损失函数中的期望全部计算出来的代价是十分高昂的,因此在实践
中常常使用单个样本近似代替期望值 [32] .故损失函数的梯度可用公式(5)计算:
∇ L () θ ≈ − r y ˆ ( ) log ( | , )p y S θ∇ ˆ (5)
其中, ˆ y 为近似代替期望值的单个样本.依据 REINFORE 算法,梯度∇L(θ)可近似看作得到该样本的概率
ˆ
py ˆ (| , )S θ 取对数后的梯度与该样本所获得奖励 ()ry 乘积的负值.
为了能够使模型取得优良的效果,并提升训练速度,我们希望在采样过程中避免随机化 [50] ,并使用高分数的
样本来近似代替期望.因此尝试了两种采样方法.
(A) 使用了 Ranzato 等人 [51] 提出的采样方法.该方法使用交叉熵损失函数预训练出一个模型用于获得高
分的样本.即,使用该方法训练会有两个阶段:在第 1 阶段,使用交叉熵函数预训练模型;第 2 阶段使用
REINFORCE 算法调整模型参数,并得到最终的结果;
(B) 使用了 Shashi 等人使用的采样方法 [52] ,将损失函数中的 ˆ y 搜索空间限制在预先计算出的高分句
集合 Y 中.同其他抽取式摘要生成方法的假设一样,我们认为被选中的句子其 ROUGE 分数应该较高,
因此将 Y 近似看作拥有最高 ROUGE 分数的 k 个句子的集合.
3 实验设置
本节将介绍实验的相关设置,包括实验所使用的数据集、实现细节、基线实验以及评价指标.
3.1 数据集
[3]
我们使用的是 Liu 等人提供的数据集 ,该数据集是由 Liu 等人从 GitHub 上的 1 000 个 Java 项目中爬取的
333 001 条数据组成的.经过过滤后,该数据集中包含 41 832 有效数据.每条数据均包含了由 commit message 和
code comment 等 PR 文本信息组成的 PR 源文档和由项目贡献者书写的真实的 PR 描述.为分析可能影响 PR 描
述生成效果的因素,我们对数据集中不同粒度 PR 的数量进行了统计,统计结果如图 5 所示.
Fig.5 PR granularity statistics
图 5 PR 粒度数目统计
在图 5 中,横坐标代表 PR 的粒度,纵坐标代表 PR 的数目.可以看出:该数据集中 PR 粒度的分布十分不均,