Page 308 - 《软件学报》2021年第7期
P. 308
2226 Journal of Software 软件学报 Vol.32, No.7, July 2021
Fig.3 W-NLM model
图 3 W-NLM 模型
其中, CE 表示修正的交叉熵计算函数; M () 表示参数化的 W-NLM 模型, 为待估计参数; P ˆ ; tM ( ) 表示模型
估计的序列下一词的概率分布,即模型的输出项 y;P t 表示序列下一词的真实概率分布,通常用 w t 的 one-hot 编码
(j)
w t 近似表示,为此,上式推导的第 4 步被简化为最后形式;w 表示词汇表第 j 个词;Q 表示代码序列 S 对应的权
重序列, Q q 1 ... ... ,q q 其中,对于任意 q t q S , q t 表示每次交叉熵计算的权重,q 表示样本 S 的权重:
S
L
t
q unknown , 1
q S q clean , 0 (2)
q buggy , 1
式中, q clean ≥ q unknown ≥ q buggy , 表示不同质量类型代码序列的权重,其计算方法将在下文给出.
对比原始损失函数 J 可知,W-NLM 模型中引入的改进 J 在每次评估 P t 与 P ˆ ; tM ( ) 的交叉熵差异时进行了幅
度为 q t 的加权.因此从整体看,在利用梯度下降算法进行梯度反传时,有
( ; )
JS q S J S (3)
(; )
S
S
即对于序列 S 梯度幅度增加了 q 倍,进而参数的更新幅度也将增加 q 倍.这正是 W-NLM 的改进思路所在:
模型重点关注高质量(即无缺陷)软件模块,同时降低对低质量(即有缺陷)软件模块的学习.类似情况也将出现于
以小批量为单元的 SGD 算法.
更一般地,给定一个语料库(或任意序列集合)C: