薛參觀
(1.南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 210016;2.江蘇省軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心,江蘇 南京 210016)
軟件缺陷預(yù)測(cè)[1]是提高和保證軟件產(chǎn)品質(zhì)量的關(guān)鍵技術(shù)之一。盡管很多學(xué)者已經(jīng)對(duì)此問(wèn)題進(jìn)行了大量的探索,但其依然是一項(xiàng)艱巨而又有挑戰(zhàn)性的工作[2]。劉芳等人[3]首先用主成分分析法對(duì)軟件缺陷數(shù)據(jù)進(jìn)行降維,消除冗余信息,然后用處理后的缺陷數(shù)據(jù)進(jìn)行訓(xùn)練,構(gòu)建軟件缺陷預(yù)測(cè)模型;孟倩等人[4]使用粗糙集方法對(duì)軟件缺陷數(shù)據(jù)進(jìn)行屬性約減,去掉冗余和無(wú)關(guān)的屬性,再用支持向量機(jī)對(duì)軟件缺陷進(jìn)行分類(lèi)預(yù)測(cè);王海林等人[5]用基于關(guān)聯(lián)規(guī)則的特征選擇算法提取軟件缺陷數(shù)據(jù)的特征,降低訓(xùn)練樣本的維度,去除噪聲屬性,再用人工神經(jīng)網(wǎng)絡(luò)構(gòu)建軟件缺陷預(yù)測(cè)模型。這些方法都是先對(duì)軟件缺陷數(shù)據(jù)進(jìn)行特征提取,再結(jié)合機(jī)器學(xué)習(xí)等方法構(gòu)建軟件缺陷預(yù)測(cè)模型,而作為關(guān)鍵步驟的特征提取過(guò)程,它們都是采用淺層機(jī)器學(xué)習(xí)算法,很難獲得軟件缺陷數(shù)據(jù)的深層次本質(zhì)特征。因此,如何自動(dòng)從軟件缺陷數(shù)據(jù)中提取與缺陷預(yù)測(cè)相關(guān)的深層特征成了一個(gè)重要的研究課題。
Hinton等人[6]提出的深度學(xué)習(xí)理論可以有效解決這個(gè)問(wèn)題。深度學(xué)習(xí)的本質(zhì)是將神經(jīng)網(wǎng)絡(luò)搭建成多層或多階非線性信息處理的模型,使用有監(jiān)督或無(wú)監(jiān)督的特征映射獲取原始數(shù)據(jù)的深層次本質(zhì)信息。在進(jìn)行分類(lèi)預(yù)測(cè)時(shí),將特征提取與分類(lèi)器組合到一個(gè)框架中,用原始數(shù)據(jù)去自動(dòng)學(xué)習(xí)特征,去除人工特征提取的過(guò)程,提高特征提取的效率[7]。目前將深度學(xué)習(xí)理論應(yīng)用到軟件缺陷預(yù)測(cè)中的主要研究有:Yang等人[8]用深度信念網(wǎng)絡(luò)對(duì)軟件缺陷進(jìn)行特征提取,結(jié)合Logistic回歸分類(lèi)器構(gòu)建軟件缺陷預(yù)測(cè)模型;Wang等人[9]提出用深度信念網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)軟件程序源代碼的語(yǔ)義語(yǔ)法特征,并利用學(xué)習(xí)到的特征訓(xùn)練和構(gòu)建缺陷預(yù)測(cè)模型。
自動(dòng)編碼器[10]作為深度學(xué)習(xí)理論的重要組成部分,在無(wú)監(jiān)督特征提取中扮演著重要角色,也被應(yīng)用到多種領(lǐng)域。甘露等人[11]將改進(jìn)的自動(dòng)編碼器應(yīng)用于軟件缺陷預(yù)測(cè)中,取得了不錯(cuò)的效果,但其實(shí)驗(yàn)數(shù)據(jù)量較小,容易造成訓(xùn)練欠擬合。Meng等人[12]對(duì)降噪稀疏自動(dòng)編碼器進(jìn)行了研究,并分析了稀疏性約束和隱藏層節(jié)點(diǎn)數(shù)對(duì)數(shù)據(jù)重構(gòu)和特征提取的影響,但其應(yīng)用領(lǐng)域僅為手寫(xiě)字體的分類(lèi),Kumar等人[13]用于靜態(tài)手勢(shì)的特征提取,Sankara等人[14]用于指紋的特征提取,都證明了降噪稀疏自動(dòng)編碼器的有效性。
為了解決軟件缺陷預(yù)測(cè)中特征提取面臨的問(wèn)題,獲取軟件缺陷數(shù)據(jù)深層次本質(zhì)特征信息,提高預(yù)測(cè)精度,本文提出基于堆疊降噪稀疏自動(dòng)編碼器進(jìn)行特征提取的軟件缺陷預(yù)測(cè)方法,通過(guò)設(shè)置不同的隱藏層數(shù)和稀疏性約束,獲取軟件缺陷數(shù)據(jù)各層次的特征表示,然后用Logistic回歸分類(lèi)器進(jìn)行分類(lèi)預(yù)測(cè),構(gòu)建軟件缺陷預(yù)測(cè)模型。
自動(dòng)編碼器(Auto-Encoder,AE)[11]是一種無(wú)監(jiān)督學(xué)習(xí)算法,通過(guò)學(xué)習(xí)一個(gè)盡可能恢復(fù)自身的非線性編碼,可以獲取輸入數(shù)據(jù)的深層次本質(zhì)特征表示。自動(dòng)編碼器模型結(jié)構(gòu)如圖1所示,AE首先對(duì)輸入數(shù)據(jù)進(jìn)行編碼,得到隱藏層的特征表示,然后對(duì)隱藏層的特征表示進(jìn)行解碼得到重構(gòu)數(shù)據(jù),再使用反向傳播算法來(lái)訓(xùn)練網(wǎng)絡(luò),使得重構(gòu)數(shù)據(jù)盡可能地等于輸入數(shù)據(jù),得到編碼結(jié)果。
圖1 自動(dòng)編碼器結(jié)構(gòu)示意圖
y(i)=fθ(x(i))=f(wx(i)+b)
其中,θ′=(w′,b′),w′為權(quán)值矩陣,通常取w′=wT,b′為偏置向量。則對(duì)AE的網(wǎng)絡(luò)參數(shù)優(yōu)化調(diào)節(jié)實(shí)際上就是最小化重構(gòu)誤差:
其中,L(·)為代價(jià)函數(shù)。為了比較重構(gòu)數(shù)據(jù)與輸入數(shù)據(jù)之間的差異,通常有如下2種代價(jià)函數(shù):
1)平方差代價(jià)函數(shù):
2)交叉熵代價(jià)函數(shù):
Nielsen[15]證明了交叉熵代價(jià)函數(shù)優(yōu)于平方差代價(jià)函數(shù),因此本文中選擇交叉熵代價(jià)函數(shù)。自動(dòng)編碼器在整個(gè)訓(xùn)練樣本集的代價(jià)函數(shù)為:
其中,第一項(xiàng)為整體代價(jià)項(xiàng),第二項(xiàng)為規(guī)則化項(xiàng),其目的是減小權(quán)重的幅度,防止過(guò)擬合。權(quán)重衰減系數(shù)λ用于控制兩項(xiàng)的相對(duì)重要性。
稀疏自動(dòng)編碼器[16](Sparse Auto-Encoder,SAE)是在AE的基礎(chǔ)上給隱藏神經(jīng)元添加稀疏性約束而得到的。稀疏性約束是指激活最少(最稀疏)的隱藏神經(jīng)元來(lái)表示輸入數(shù)據(jù)的特征。
稀疏自動(dòng)編碼器在整個(gè)訓(xùn)練樣本集的代價(jià)函數(shù)為:
降噪稀疏自動(dòng)編碼器[13](Denoising Sparse Auto-Encoder,DSAE)是在SAE的基礎(chǔ)上,首先對(duì)輸入數(shù)據(jù)進(jìn)行加噪處理,再對(duì)加噪處理后的數(shù)據(jù)進(jìn)行稀疏性編碼,使得SAE必須學(xué)習(xí)去除這種噪聲,迫使其學(xué)習(xí)輸入數(shù)據(jù)更加魯棒的表示,提高泛化能力。
圖2 降噪稀疏自動(dòng)編碼器結(jié)構(gòu)示意圖
降噪稀疏自動(dòng)編碼器在整個(gè)訓(xùn)練樣本集的代價(jià)函數(shù)為:
將多個(gè)降噪稀疏自動(dòng)編碼器逐層疊加構(gòu)建成深度神經(jīng)網(wǎng)絡(luò)模型,則稱為堆疊降噪稀疏自動(dòng)編碼器(Stacked Denoising Sparse Auto-Encoder,SDSAE),其可以獲取輸入數(shù)據(jù)更深層次的特征信息,越深的層次獲取的特征信息具有越強(qiáng)的特征表示能力。
由于SDSAE的不同層是各自學(xué)習(xí)的,所以需要將它們組合成一個(gè)完整的深度網(wǎng)絡(luò),并對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)。微調(diào)過(guò)程是在預(yù)訓(xùn)練過(guò)程完成之后,SDSAE與分類(lèi)器組合在一起,使用反向傳播算法計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù),通過(guò)梯度下降法對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行迭代更新,同時(shí)調(diào)整所有層以獲取最優(yōu)化的網(wǎng)絡(luò)參數(shù)的過(guò)程。
本文設(shè)計(jì)一個(gè)具有4個(gè)隱藏層的SDSAE用于軟件缺陷數(shù)據(jù)的特征提取,并使用Logistic回歸分類(lèi)器對(duì)提取的特征進(jìn)行分類(lèi)的軟件缺陷預(yù)測(cè)模型。在構(gòu)建的預(yù)測(cè)模型中,為了學(xué)習(xí)到最優(yōu)的網(wǎng)絡(luò)參數(shù),在預(yù)訓(xùn)練過(guò)程中,使用大量的無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行逐層貪婪訓(xùn)練,獲得近似最優(yōu)化的網(wǎng)絡(luò)參數(shù),在微調(diào)過(guò)程中,將包括分類(lèi)器在內(nèi)的整個(gè)深度網(wǎng)絡(luò)進(jìn)行微調(diào),獲得最優(yōu)的網(wǎng)絡(luò)參數(shù)。使用堆疊降噪稀疏自動(dòng)編碼器進(jìn)行軟件缺陷預(yù)測(cè)的具體步驟如下:
1)將軟件缺陷數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,并對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行預(yù)處理;
5)將步驟2~步驟4得出的特征表示和原始數(shù)據(jù)的標(biāo)簽分別作為L(zhǎng)ogistic回歸分類(lèi)器的輸入構(gòu)建軟件缺陷預(yù)測(cè)模型;
6)通過(guò)梯度下降法分別對(duì)各階特征表示構(gòu)建的預(yù)測(cè)模型進(jìn)行“微調(diào)”,優(yōu)化深度網(wǎng)絡(luò)中的參數(shù);
7)將測(cè)試數(shù)據(jù)按訓(xùn)練數(shù)據(jù)相同的方法進(jìn)行預(yù)處理后分別輸入至訓(xùn)練好的預(yù)測(cè)模型,得出預(yù)測(cè)結(jié)果;
8)對(duì)得到的預(yù)測(cè)結(jié)果進(jìn)行評(píng)價(jià),得出結(jié)論。
使用堆疊降噪稀疏自動(dòng)編碼器進(jìn)行軟件缺陷預(yù)測(cè)的完整過(guò)程如圖3所示。
3.1.1 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)所用計(jì)算機(jī)配置為Intel(R) Xeon(R) E3-1230 3.30 GHz處理器,8 GB內(nèi)存。實(shí)驗(yàn)所運(yùn)行的軟件環(huán)境為在Windows 7操作系統(tǒng)下安裝的Matlab R2014a。
圖3 基于SDSAE的軟件缺陷預(yù)測(cè)過(guò)程
3.1.2 實(shí)驗(yàn)數(shù)據(jù)集
本文采用的實(shí)驗(yàn)數(shù)據(jù)為Eclipse缺陷數(shù)據(jù)集[17],該數(shù)據(jù)集是軟件缺陷預(yù)測(cè)領(lǐng)域應(yīng)用較為廣泛的公共數(shù)據(jù)集之一,可以從Eclipse Bug Data獲取。Eclipse缺陷數(shù)據(jù)集有6個(gè)文件,分別對(duì)應(yīng)于Eclipse的3個(gè)版本2種粒度下的故障記錄,本文所采用的實(shí)驗(yàn)數(shù)據(jù)均為Eclipse 2.0版本files粒度的故障數(shù)據(jù)記錄。
本文實(shí)驗(yàn)以軟件發(fā)布后模塊缺陷傾向性為預(yù)測(cè)目標(biāo),首先去除該數(shù)據(jù)集中所有非數(shù)值類(lèi)型的特征,然后將發(fā)布后缺陷數(shù)量(post)轉(zhuǎn)換為軟件模塊是否有缺陷的類(lèi)標(biāo)has_defects,轉(zhuǎn)換方法為:若post=0,則has_defects=0,否則has_defects=1。經(jīng)過(guò)處理后,數(shù)據(jù)集共有198個(gè)特征,主要包括軟件規(guī)模度量特征、復(fù)雜性度量特征和基于語(yǔ)義語(yǔ)法樹(shù)的度量特征等。該數(shù)據(jù)集中共有6729個(gè)樣本,其中有缺陷樣本為975個(gè),缺陷率為14.49%。
3.1.3 超參數(shù)設(shè)置
本文實(shí)驗(yàn)中,由于數(shù)據(jù)集共198個(gè)特征,故輸入層節(jié)點(diǎn)數(shù)設(shè)為198;權(quán)重衰減系數(shù)λ設(shè)為1e-3,稀疏性懲罰系數(shù)β設(shè)為3。本實(shí)驗(yàn)中,采用minFunc函數(shù)最小化DSAE的整體代價(jià)函數(shù),minFunc是一個(gè)開(kāi)源的Matlab函數(shù),用于使用線性搜索方法對(duì)可微分真值多元函數(shù)進(jìn)行無(wú)約束優(yōu)化,可以從minFunc獲取。在實(shí)驗(yàn)中,將代價(jià)函數(shù)優(yōu)化方法指定為L(zhǎng)-BFGS,并將最大迭代次數(shù)設(shè)為400。Logistic回歸分類(lèi)器的權(quán)重衰減系數(shù)設(shè)為1e-4,同樣采用minFunc最小化其代價(jià)函數(shù),最大迭代次數(shù)設(shè)為100。
本文采用的評(píng)價(jià)指標(biāo)為F1-度量,是綜合衡量準(zhǔn)確率和召回率的分類(lèi)評(píng)價(jià)指標(biāo),其大小用來(lái)評(píng)價(jià)軟件缺陷預(yù)測(cè)模型的好壞。F1-度量的計(jì)算公式為:
其中,準(zhǔn)確率precision=TP/(TP+FP),召回率recall=TP/(TP+FN),TP是預(yù)測(cè)為有缺陷模塊中確實(shí)有缺陷的軟件模塊數(shù)量,F(xiàn)P是預(yù)測(cè)為有缺陷模塊而實(shí)際卻無(wú)缺陷的軟件模塊數(shù)量,F(xiàn)N是預(yù)測(cè)為無(wú)缺陷模塊而實(shí)際卻有缺陷的軟件模塊數(shù)量。
為了驗(yàn)證降噪稀疏自動(dòng)編碼器DSAE對(duì)軟件缺陷數(shù)據(jù)進(jìn)行特征提取的能力,分別經(jīng)過(guò)主成分分析法PCA[18]、線性判別分析法LDA[19]、獨(dú)立成分分析法ICA[20]與降噪稀疏自動(dòng)編碼器DSAE進(jìn)行特征提取構(gòu)建缺陷預(yù)測(cè)模型,驗(yàn)證模型性能。其中:PCA累計(jì)貢獻(xiàn)率設(shè)為0.95,DSAE的隱藏層單元數(shù)設(shè)為100,稀疏性約束設(shè)為0.2,加噪方式為掩蔽噪聲,掩蔽率設(shè)為0.2。實(shí)驗(yàn)結(jié)果如圖4所示,其中LR為文獻(xiàn)[17]中所述沒(méi)有經(jīng)過(guò)特征提取,直接使用Logistic回歸分類(lèi)器構(gòu)建缺陷預(yù)測(cè)模型的預(yù)測(cè)性能。由圖4可以看出,使用DSAE對(duì)軟件缺陷數(shù)據(jù)進(jìn)行特征提取,不需要預(yù)先定義特征,只需將缺陷數(shù)據(jù)輸入預(yù)測(cè)模型,其會(huì)自動(dòng)學(xué)習(xí),獲取缺陷數(shù)據(jù)深層次本質(zhì)特征。經(jīng)過(guò)DSAE進(jìn)行特征提取構(gòu)建的缺陷預(yù)測(cè)模型,相比沒(méi)有經(jīng)過(guò)特征提取或經(jīng)過(guò)PCA、LDA、ICA等方法進(jìn)行特征提取的預(yù)測(cè)模型,在F1-度量上均有明顯的提高,這表明DSAE對(duì)特征提取的效果比傳統(tǒng)特征提取方法要好。
為了驗(yàn)證DSAE中微調(diào)和稀疏性約束對(duì)預(yù)測(cè)模型性能的影響,在實(shí)驗(yàn)中,設(shè)置只含一個(gè)隱藏層的DSAE構(gòu)建缺陷預(yù)測(cè)模型,DSAE的隱藏層節(jié)點(diǎn)數(shù)設(shè)為100,稀疏性約束分別設(shè)為0.01、0.04、0.07、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0,實(shí)驗(yàn)結(jié)果如圖5所示。從圖5可以看出,未經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型在稀疏性約束小于0.4時(shí)呈增長(zhǎng)趨勢(shì),在0.4~0.7區(qū)間內(nèi)呈下降趨勢(shì),大于0.7時(shí)變得不穩(wěn)定,而經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型在不同稀疏性約束情況下均能表現(xiàn)出良好的預(yù)測(cè)性能,且均比未經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型的性能優(yōu)越。分析原因,未經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型當(dāng)稀疏性約束小于0.4時(shí),DSAE的隱藏神經(jīng)元激活數(shù)隨著稀疏性約束的增大而增多,使DSAE可以學(xué)習(xí)原始數(shù)據(jù)更本質(zhì)的特征表示,因此預(yù)測(cè)性能增加;當(dāng)稀疏性約束在0.4~0.7之間時(shí),DSAE的隱藏神經(jīng)元需要激活的過(guò)多,這將造成訓(xùn)練過(guò)擬合,因此預(yù)測(cè)性能會(huì)降低;但當(dāng)稀疏性約束大于0.7時(shí),意味著隱藏層中的大多數(shù)神經(jīng)元都需要激活,這種不合理的設(shè)置會(huì)破壞網(wǎng)絡(luò)參數(shù)正常的優(yōu)化,雖然預(yù)測(cè)模型仍然具有預(yù)測(cè)能力,但其網(wǎng)絡(luò)參數(shù)已經(jīng)不是通過(guò)“學(xué)習(xí)”得到的,所以得到的預(yù)測(cè)模型屬于無(wú)效預(yù)測(cè)模型。而經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型的網(wǎng)絡(luò)參數(shù)已經(jīng)在分類(lèi)器的監(jiān)督下進(jìn)行了調(diào)整,使得DSAE的稀疏性約束設(shè)置對(duì)預(yù)測(cè)模型的影響消失,因此,經(jīng)過(guò)微調(diào)的預(yù)測(cè)模型在不同稀疏性約束下均能表現(xiàn)出良好的性能。
圖5 微調(diào)和稀疏性約束對(duì)預(yù)測(cè)性能的影響
為了驗(yàn)證SDSAE中模型深度和稀疏性約束對(duì)預(yù)測(cè)性能的影響,在實(shí)驗(yàn)中,設(shè)置含有4個(gè)隱藏層的預(yù)測(cè)模型,隱藏層單元數(shù)為150-100-50-30,稀疏性約束分別為0.05、0.1、0.2、0.3、0.4、0.5,實(shí)驗(yàn)結(jié)果如圖6所示。從圖6可以看出,對(duì)于相同的模型深度,當(dāng)稀疏性約束小于0.3時(shí),其值越大,預(yù)測(cè)性能越好,但大于0.3時(shí),又略有降低。與此同時(shí),對(duì)于相同的稀疏性約束,網(wǎng)絡(luò)深度越深,預(yù)測(cè)性能越好。分析原因,是由于深度模型可以獲取輸入數(shù)據(jù)更深層次的特征信息,越深的層級(jí)獲取的特征信息具有越強(qiáng)的特征表達(dá)能力,因此預(yù)測(cè)模型深度越深預(yù)測(cè)性能越好。但并不是模型深度越深越好,其深度取決于預(yù)測(cè)模型與訓(xùn)練數(shù)據(jù)的規(guī)模,當(dāng)預(yù)測(cè)模型深度太深時(shí),會(huì)造成“梯度消失”現(xiàn)象,從而不能完成模型訓(xùn)練,得不到預(yù)測(cè)結(jié)果;并且從圖6還可以看出,預(yù)測(cè)模型的深度越深,預(yù)測(cè)性能相對(duì)提升得越少,甚至可能造成訓(xùn)練過(guò)擬合,降低預(yù)測(cè)性能,所以不能盲目地增加模型深度。
圖6 隱藏層數(shù)和稀疏性約束對(duì)預(yù)測(cè)性能的影響
為了驗(yàn)證SDSAE中掩蔽噪聲的不同掩蔽率對(duì)預(yù)測(cè)性能的影響,在實(shí)驗(yàn)中,設(shè)置SDSAE的隱藏層為4層,隱藏層單元數(shù)為150-100-50-30,稀疏性約束設(shè)為0.3,掩蔽噪聲的掩蔽率分別為0、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0,實(shí)驗(yàn)結(jié)果如圖7所示。從圖7可以看出,對(duì)于加入掩蔽噪聲相同掩蔽率的預(yù)測(cè)模型,模型深度越深預(yù)測(cè)性能越好。而對(duì)于相同的模型深度,掩蔽噪聲的掩蔽率越大,預(yù)測(cè)性能越差。分析原因,是由于預(yù)測(cè)模型在訓(xùn)練時(shí),掩蔽噪聲會(huì)掩蔽掉訓(xùn)練數(shù)據(jù)中與軟件缺陷有相關(guān)性的數(shù)據(jù),即對(duì)缺陷預(yù)測(cè)有益的信息,因此掩蔽率越大,預(yù)測(cè)模型的性能越差。當(dāng)掩蔽率為1.0時(shí),所有訓(xùn)練數(shù)據(jù)都被掩蔽,雖然預(yù)測(cè)模型具有預(yù)測(cè)能力,但其網(wǎng)絡(luò)參數(shù)并不是根據(jù)訓(xùn)練數(shù)據(jù)“學(xué)習(xí)”得到的,因此得到的預(yù)測(cè)模型屬于無(wú)效模型,其預(yù)測(cè)結(jié)果也不是有效的預(yù)測(cè)結(jié)果。但對(duì)預(yù)測(cè)模型的訓(xùn)練數(shù)據(jù)中加入噪聲,可以使學(xué)習(xí)到的預(yù)測(cè)模型魯棒性更高,泛化能力更強(qiáng),因此掩蔽噪聲的掩蔽率應(yīng)設(shè)置在一個(gè)合理的范圍。
圖7 掩蔽噪聲的掩蔽率對(duì)預(yù)測(cè)性能的影響
為了解決軟件缺陷預(yù)測(cè)中傳統(tǒng)的特征提取方法不能提取出軟件數(shù)據(jù)中深層次本質(zhì)特征的問(wèn)題,本文提出一種基于堆疊降噪稀疏自動(dòng)編碼器的軟件缺陷預(yù)測(cè)方法,其首先用堆疊降噪稀疏自動(dòng)編碼器對(duì)軟件缺陷數(shù)據(jù)進(jìn)行特征提取,然后用Logistic回歸方法對(duì)提取后的特征表示進(jìn)行分類(lèi)預(yù)測(cè),取得了較好的預(yù)測(cè)效果。但由于預(yù)測(cè)模型的性能受模型深度、稀疏性約束、掩蔽率等超參數(shù)的影響,而超參數(shù)的選擇并沒(méi)有統(tǒng)一的理論指導(dǎo),因此對(duì)超參數(shù)的選擇是今后研究的主要課題。
參考文獻(xiàn):
[1] 王青,伍書(shū)劍,李明樹(shù). 軟件缺陷預(yù)測(cè)技術(shù)[J]. 軟件學(xué)報(bào), 2008,19(7):1565-1580.
[2] 陳翔,顧慶,劉望舒,等. 靜態(tài)軟件缺陷預(yù)測(cè)方法研究[J]. 軟件學(xué)報(bào), 2016,27(1):1-25.
[3] 劉芳,高興,周冰,等. 基于PCA-ISVM的軟件缺陷預(yù)測(cè)模型[J]. 計(jì)算機(jī)仿真, 2014,31(3):397-401.
[4] 孟倩,馬小平. 基于粗糙集-支持向量機(jī)的軟件缺陷預(yù)測(cè)[J]. 計(jì)算機(jī)工程與科學(xué), 2015,37(1):93-98.
[5] 王海林,于倩,李彤,等. 基于CS-ANN的軟件缺陷預(yù)測(cè)模型研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2017,34(2):467-472.
[6] Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006,313(5786):504.
[7] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015,521(7553):436-444.
[8] Yang Xinli, Lo D, Xia Xin, et al. Deep learning for just-in-time defect prediction[C]// IEEE International Conference on Software Quality, Reliability and Security. 2015:17-26.
[9] Wang Song, Liu Taiyue, Tan Lin. Automatically learning semantic features for defect prediction[C]// ACM International Conference on Software Engineering. 2016:297-308.
[10] Deng Li, Seltzer M, Yu Dong, et al. Binary coding of speech spectrograms using a deep auto-encoder[C]// Conference of the International Speech Communication Association. 2010:1692-1695.
[11] 甘露,臧洌,李航. 基于DA-SVM的軟件缺陷預(yù)測(cè)模型[J]. 計(jì)算機(jī)與現(xiàn)代化, 2017(2):36-39.
[12] Meng Lingheng, Ding Shifei, Xue Yu. Research on denoising sparse autoencoder[J]. International Journal of Machine Learning & Cybernetics, 2016,31(5):1-11.
[13] Kumar V, Nandi G C, Kala R. Static hand gesture recognition using stacked denoising sparse autoencoders[C]// IEEE International Conference on Contemporary Computing. 2014:99-104.
[14] Sankaran A, Pandey P, Vatsa M, et al. On latent fingerprint minutiae extraction using stacked denoising sparse AutoEncoders[C]// IEEE International Joint Conference on Biometrics. 2014:1-7.
[15] Neilsen M. Neural Networks and Deep Learning[M]. Determination Press, 2015.
[16] Jiang Xiaojuan, Zhang Yinghua, Zhang Wensheng, et al. A novel sparse auto-encoder for deep unsupervised learning[C]// The 6th IEEE International Conference on Advanced Computational Intelligence. 2013:256-261.
[17] Zimmermann T, Premraj R, Zeller A. Predicting defects for Eclipse[C]// IEEE International Workshop on Predictor Models in Software Engineering.2007:9.
[18] Vidal R, Ma Yi, Sastry S S. Principal Component Analysis[M]. IEEE Computer Society, 2005.
[19] Ye Junxiao, Janardan R, Li Q. Two-dimensional linear discriminant analysis[C]// Proceedings of the 8th Annual Conference on Neural Information Processing Systems. 2004:1569-1576.
[20] Choi S. Independent Component Analysis[M]. Springer Berlin Heidelberg, 2012.