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:
   303   304   305   306   307   308   309   310   311   312   313