Page 291 - 《软件学报》2021年第7期
P. 291

贾修一  等:基于变分自编码器的异构缺陷预测特征表示方法                                                    2209


                                        MMD( ( ), ( ))px p y   E  [ ( )]Ex   [ ( )]y  2           (6)
                                                         xp         y p       H
                                                                     ~ ( ) y
                                                         ~( ) x
                    假设 X 和 H 同属于同一空间 R 且    d    ()x   , x 则最大均值差异减少的是分布 p(x)和 p(y)之间均值的差异,也
                                            2
                 即 MMD( ( ), ( ))px p y     px ()      p ( ) y  2 , 选择一个合适的映射可以从一个更高阶的角度来衡量两个分布的差异.
                 3    基于变分自编码器的特征迁移映射方法 T-VAE

                    鉴于神经网络强大的表示能力和特征提取能力,本文提出一种基于变分自编码器的特征迁移映射方法,该
                 方法由 3 部分组成.
                    首先,采用深度生成模型变分自编码器来提取源项目和目标项目之间潜在的公有特征分布.对于软件缺陷
                 预测问题而言,一般采用的度量元表示的是软件模块的复杂度,同时,不同缺陷数据集的内在复杂度往往可以由
                 少数隐式潜变量来表示.例如,对于两个面向不同功能或者用不同语言开发的应用程序,两者的数据分布差异一
                 定非常大,然而,如果提取出更高层次语义的特征,如代码的规范程度、模块设计的耦合程度、可扩展性等度量,
                 那么两者就处于相同的隐式语义空间,此时在一个项目上训练的模型就可以轻易地扩展到另外一个项目上.与
                 此同时,如果有具体项目的特点信息,一个有效的生成模型就可以还原不同项目的原始分布.变分自编码器不仅
                 能在复杂场景中进行推断,也可以有效地作为生成模型生成连续型数据,研究人员发现,它可以用于无监督的解
                 耦表征学习中,并且学习到的隐式特征空间维度能够有效地对应数据中独立的属性.
                    其次,引入最大均值差异距离来度量源项目与目标项目在隐式特征空间中的距离,通过最小化该距离以提
                 取出二者的共性隐式特征表示,同时也区分出各自的特性分布表示.虽然利用变分自编码器可以将源项目与目
                 标项目映射到同一特征空间中,但是并不能保证源项目与目标项目的隐式特征具有相似的语义信息,甚至两者
                 的分布差异依然很大.我们的最终目标是希望基于隐式特征表示的特征空间具有相似的条件概率分布.虽然变
                 分自编码器可以约束隐式特征服从高斯分布,但在真实的应用场景中,为了保证重构误差尽可能地小,最终所学
                 到的隐式特征分布之间的边缘概率差异依然很大,仅仅采用变分自编码器学习隐式特征表示并不能达成这个
                 目标,需要通过最大均值差异距离进行度量.
                    最后,增加一层判别网络,用来评估学习到的隐式特征的分类性能.带有最大均值差异的变分自编码器虽然
                 可以将源项目与目标项目的度量映射至相同分布的隐式空间,但是对于异构缺陷预测问题而言,最终的目的是
                 要估计每个样本包含缺陷的概率,也就是条件概率 (| ),py x 通过隐式特征空间的学习,我们所要估计的是在隐
                 式特征空间下包含缺陷的条件概率 (| ),py z 但是变分自编码器保留的是能够以最大概率重构原始样本数据集
                 分布的信息,并不能一定保留那些可能使模块产生缺陷的相关因素,为了使最终学习到的隐式特征能够有效地
                 为缺陷预测服务,我们在隐含层特征空间之后加入了一层判别网络,用来评估该隐式特征在源项目上的分类性
                 能.通过反向传播误分类带来的损失,不仅可以学习到一个强大的非线性分类器,还能保留并提取原始数据集中
                 与缺陷相关的信息,使模型有更好的分类效果.
                 3.1   利用变分自编码器学习软件缺陷数据的隐式特征
                    在以往的异构缺陷预测研究中,许多工作采用了统一度量表示                       [12] ,通过将不同语义的特征互相扩充补零来
                 解决缺陷度量特征空间维度不一致问题,然而,这种方式会导致神经网络的容量增加,使得公共的语义特征信息
                 难以被变分自编码器捕获.在本文工作中,我们直接对特征维度较小的数据集进行特征补零扩充,使其具有与特
                 征维度高的数据集相同的特征数目,再将两者的样本数据输入到同一个变分自编码器网络中学习隐式特征分
                 布.同时,我们假设隐含层输出编码 z 所服从的分布为正态分布,即 ()pz                   N ( ;0, ).z  I
                    不同于自编码器网络,变分自编码器网络在隐含层的输出包括两个维度和,分别表示编码 z 所服从的正
                 态分布的参数均值和方差,即如下式:
                                                     (| )x 
                                                                 2
                                                   qz      N ( ; ,z  I )                            (7)
                                                    
                    因此,后验分布 qz
                                  (| )x 和先验分布 p(z)之间的 KL 散度可由下式计算,即为
                                 
   286   287   288   289   290   291   292   293   294   295   296