Page 310 - 《软件学报》2021年第7期
P. 310
2228 Journal of Software 软件学报 Vol.32, No.7, July 2021
成.给定一个模块 k 和一个语言模型 M,则模块的 CE 值由式(9)计算,即 CE M (S k ),其中,S k 表示模块 k 的代码 token
序列,M 已在代码 token 序列的语料库上训练.
定义 2. 代码逆序序列的交叉熵度量元(CE-Inv)是一种代码度量元,其值由语言模型度量软件模块的代码
,
逆序序列生成.给定一个模块 k 和一个语言模型 M 则模块的 CE-Inv 值由式(9)计算,即 CE ,S k 其中, S 表示
k
M
模块 k 的代码逆序序列, M 已在代码逆序 token 序列的语料库上训练.
定义 3. 修正的代码交叉熵度量元(M-CE)是一种代码度量元,其值由加权语言模型度量软件模块的代码序
, (),S 这里,S k 表示模块 k
列生成.给定一个模块 k 和一个加权语言模型 M 则模块的 M-CE 值由式(9)计算,即 CE
M k
的代码序列,且 M 已在代码 token 序列的语料库上进行了加权训练,训练方法由式(5)定义.
定义 4. 修正的代码逆序序列交叉熵度量元(M-CE-Inv)是一种代码度量元,其值由加权语言模型度量软件
,
模块的代码逆序序列生成.给定一个模块 k 和一个加权语言模型 M 则模块的 M-CE-Inv 值由式(9)计算,即
CE (),S k 这里, S 表示模块 k 的代码逆序序列,且 M 已在代码逆序 token 序列的语料库上进行了加权训练,训练
k
M
方法由式(5)定义.
(2) 度量元的生成方法
以 M-CE 度量元为例,阐述 CE 类度量元的生成方法.
步骤 1. 从软件仓库中提取待测软件模块对应的源代码区域.
步骤 2. 对源代码集进行数据预处理工作 [48,50] ,如移除注释、代码词化等.
步骤 3. 加载已训练的语言模型参数.在已标注质量类型的代码样本集上,按照第 2.2 节中的方法训练加权
*
,
语言模型 M 之后将加载了(准)最优参数的模型记作 M
.
*
步骤 4. 利用已训练的语言模型计算待测软件模块的 M-CE 值.按照 CE 计算公式(9),利用已训练的 M 对
软件模块的代码序列进行熵值计算.
2.4 进一步讨论
(1) 可解释性的讨论
近年来,针对机器学习,特别是深度学习可解释性的研究热度攀升.根据获取可解释能力的时间,可将可解
释机器学习技术分为两类:事前(ante-hoc)可解释性和事后(post-hoc)可解释性 [9,52] .其中,事前可解释性也称作内
生(intrinsic)可解释性,其通过构建自身可解释模型实现(如贝叶斯模型、规则模型、注意力模型等),将可解释性
直接融入到模型结构.事后可解释性是指通过开发可解释性技术(如特征重要性分析、表征解释、局部线性解
释等)解释已训练好的机器学习模型.下面重点从事前可解释性方面讨论本文方法的可解释性.
1) W-NLM 具有内生可解释性.语言模型是根植于统计 NLP 的一类重要模型,旨在为语言序列赋予一个发
生概率.给定一个长度为 L 的语言序列 S w w ...w 那么序列 S 的发生概率可用其联合概率表示:
,
1 2 L
L
( )
|
)=
,
( ) (Pw w
PS Pw | )... (P w | w w ,...,w 1 ( Pw w ,...,w ).
1 2 1 L 1 2 L i 1 i 1
i 1
ˆ
ˆ
实际中通常以极大似然估计方法估算参数化的序列概率 (; ),PS 其中,为待估计的模型参数.建模 (; )PS
的方法有多种,目前,基于神经网络的 NLM 技术较为流行.总的说来,NLM 具有内在动力学机制.类似的情况还
包括神经图灵机、贝叶斯深度学习等,它们较一般端到端的“免模型”深度学习架构具有更强的内生可解释性(此
外,NLM 还易与注意力机制等可解释技术相结合,如我们的早期工作 [53] ).
2) CE 度量元具有内生含义.受自然语言统计特性启发,Hindle 等人最早提出了软件代码的“自然性”概
念.序列的自然性一般由 CE 值表征,若 CE 值越高,则表明序列的发生概率越低.为此,CE 度量元还可理解为是
ˆ
一种序列异常度或“惊奇度”的度量.数学意义上,CE 值表示所有条件概率 ( Pw w i | w 1 ,...,w i 1 ) 的平均负对数
值.其指数形式(即困惑度)表示这些条件概率几何平均值的倒数,即模型成功预测每个词平均概率的倒数.
由此可以看出,CE 类度量元具有内生含义,较一般 DNN 学习出的缺乏物理含义的自动特征更具可解释性
优势(见第 1.3 节).后文我们还将通过实验分析不同度量元与问题的相关性和贡献,以进一步(事后)解释特