劉樹毅 翟 曄 劉東升
(內(nèi)蒙古師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院 呼和浩特 010022)
跨項(xiàng)目軟件缺陷預(yù)測(cè)(Cross-Project Defect Prediction,CPDP)使用其他項(xiàng)目(即源項(xiàng)目)的訓(xùn)練數(shù)據(jù)來構(gòu)建預(yù)測(cè)模型,并對(duì)一個(gè)全新的項(xiàng)目(即目標(biāo)項(xiàng)目)進(jìn)行缺陷預(yù)測(cè)[1]。從跨項(xiàng)目軟件缺陷預(yù)測(cè)概念可以看出,跨項(xiàng)目過程的首要問題在于不同項(xiàng)目之間數(shù)據(jù)分布是不同的,眾多研究學(xué)者結(jié)合遷移學(xué)習(xí)思想對(duì)這一問題進(jìn)行解決并且取得不錯(cuò)的效果。Nam等[2]從特征映射角度出發(fā)提出了TCA(Transfer Component Analysis)方法,將源項(xiàng)目和目標(biāo)項(xiàng)目的特征映射到使其最為接近的潛在空間上,從而緩解了不同項(xiàng)目間的數(shù)據(jù)分布差異,但數(shù)據(jù)歸一化方法的選擇對(duì)最終的預(yù)測(cè)性能有較大影響。隨后,他們?cè)赥CA方法的基礎(chǔ)上提出了TCA+[3],該方法可以通過對(duì)源項(xiàng)目和目標(biāo)項(xiàng)目的特征進(jìn)行分析,自動(dòng)選出最為合適的數(shù)據(jù)歸一化方法。在TCA方法中Nam等采用特征映射的方法,將源項(xiàng)目與目標(biāo)項(xiàng)目缺陷數(shù)據(jù)映射到最為接近的潛在空間上,使用最大均值差異(Maximum Mean Discrepancy,MMD)度量數(shù)據(jù)間的分布差異,這一思想對(duì)后續(xù)很多遷移學(xué)習(xí)領(lǐng)域研究學(xué)者提供了思路。在圖像識(shí)別領(lǐng)域 Muhammad Ghifary 等[4]提出了一種叫做DaNN(Domain Adaptive Neural Network),它的結(jié)構(gòu)十分簡單,由兩層神經(jīng)元組成,分為特征層和分類器,在Office數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn),其主要貢獻(xiàn)在于作者提出在特征層后加入一項(xiàng)MMD適配層,用于計(jì)算源域和目標(biāo)域的距離,并加入神經(jīng)網(wǎng)絡(luò)的損失函數(shù)進(jìn)行計(jì)算。但是,其網(wǎng)絡(luò)層數(shù)太淺,神經(jīng)網(wǎng)絡(luò)的表征能力十分有限,因而其很難解決域自適應(yīng)問題,后續(xù)研究者主要都是基于該思想進(jìn)行擴(kuò)充。龍明盛等[5]提出了DAN(Deep Adaptation Networks)方法,作者采用了AlexNet使用了三個(gè)自適應(yīng)層,并且使用了多核最大均值差異(Multi-Kernel Maxi?mum Mean Discrepancy,MK-MMD)度量,使得神經(jīng)網(wǎng)絡(luò)的表征能力更強(qiáng)。
本研究借鑒了Muhammad Ghifary及龍明盛等的研究,結(jié)合跨項(xiàng)目軟件缺陷預(yù)測(cè)特點(diǎn),嘗試在跨項(xiàng)目軟件缺陷預(yù)測(cè)領(lǐng)域進(jìn)行深度神經(jīng)網(wǎng)絡(luò)可遷移性討論,提出了一種域自適應(yīng)多層神經(jīng)網(wǎng)絡(luò)(Do?main Adaptive Multi-Layer Perceptron,DAMLP),進(jìn)行軟件缺陷靜態(tài)數(shù)據(jù)的跨項(xiàng)目軟件缺陷預(yù)測(cè)。具體利用非參數(shù)概率分布距離度量,即多核最大平均差 異(Multi-Kernel Maximum Mean Discrepancy,MK-MMD),作為嵌入在有監(jiān)督的反向傳播訓(xùn)練的正則化過程,用于減少由從不缺陷數(shù)據(jù)抽取的樣本引起的兩個(gè)隱藏層表示之間的分布不匹配問題。
最大均值差異(Maximum Mean Discrepancy,MMD)用于度量兩個(gè)分布之間的相似性,基本假設(shè):如果對(duì)于所有以分布生成的樣本空間為輸入的函數(shù)f,如果兩個(gè)分布生成足夠多的樣本在f上的對(duì)應(yīng)的項(xiàng)的均值都相等,那么可以認(rèn)為這兩個(gè)分布是同一個(gè)分布[6]。本研究采用了多核最大平均差異(Multi-Kernel Maximum Mean Discrepancy,MK-MMD)用于度量源域與目標(biāo)域之間的差異,多核最大均值差異是一種由Gretton等[7]提出的MMD的多核變體算法。
設(shè)x和y為分布p和q的隨機(jī)變量。由MK-MMD定義的p和q之間距離的經(jīng)驗(yàn)估計(jì)是
當(dāng)且僅當(dāng)p=q時(shí)dk2(p ,q)=0。式(1)中 Hk是具有特征核k的通用再生核希爾伯特空間(Repro?ducing Kernel Hilbert Space,RKHS),φ(·)表示原始特征空間映射到RKHS的映射函數(shù)。MK-MMD中與 特 征 映 射 關(guān) 聯(lián) 的 特 征 內(nèi) 核 φ(·),k(x,y)= φ(x),φ(y ) ,定義為m個(gè)半正定內(nèi)核ku的凸組合如式(2):
其中系數(shù) βu被約束以保證導(dǎo)出的多核k特性。多核好處是由于特征分布在神經(jīng)網(wǎng)絡(luò)層學(xué)習(xí)期間會(huì)發(fā)生變化,因此很難確定某種單一核函數(shù)會(huì)取得較好效果,而多內(nèi)核k可以利用不同的內(nèi)核來增強(qiáng)MK-MMD檢驗(yàn)。
多層神經(jīng)網(wǎng)絡(luò)(Multi-Layer Perceptron,MLP)已被廣泛用于解決過去幾十年中的許多描述性任務(wù),包括對(duì)象識(shí)別任務(wù)[8]。標(biāo)準(zhǔn)多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)由三種類型的層組成,它們是具有加權(quán)層間連接的輸入,隱藏和輸出層,如圖1。
圖1 多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
跨項(xiàng)目軟件缺陷預(yù)測(cè)過程,由于不同項(xiàng)目間存在分布差異,為此采用遷移學(xué)習(xí)中域自適方法解決這個(gè)問題。許多現(xiàn)有方法旨在通過源誤差加上源項(xiàng)目和目標(biāo)項(xiàng)目之間的差異度量來限制目標(biāo)項(xiàng)目誤差,自適應(yīng)方法能夠使得源域和目標(biāo)域數(shù)據(jù)分布更加接近。
本研究提出了一種多層神經(jīng)網(wǎng)絡(luò)的變體,將其稱為域自適應(yīng)多層神經(jīng)網(wǎng)絡(luò)(Domain Adaptive Multi-Layer Perceptron,DAMLP)。 該 模 型 將MK-MMD度量作為正則化嵌入在有監(jiān)督反向傳播訓(xùn)練過程。通過使用這樣的正則化,我們旨在訓(xùn)練網(wǎng)絡(luò)參數(shù),使得神經(jīng)網(wǎng)絡(luò)能夠不斷縮小源項(xiàng)目與目標(biāo)項(xiàng)目分布的差異。
本研究使用由 Jureczko等[11]收集的Promise數(shù)據(jù)集作為評(píng)價(jià)數(shù)據(jù)集,該數(shù)據(jù)集在缺陷預(yù)測(cè)領(lǐng)域大量使用。數(shù)據(jù)集共有10個(gè)不同開源項(xiàng)目共計(jì)29個(gè)版本。每個(gè)項(xiàng)目實(shí)例均包含20個(gè)靜態(tài)代碼特征及類別標(biāo)注,程序模塊的粒度設(shè)置為類。表1展示了Promise數(shù)據(jù)集的統(tǒng)計(jì)信息,通過匯總可以看出,缺陷模塊平均占比為41.3%。
本研究采用Promise數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),由于該數(shù)據(jù)中包含項(xiàng)目較多,并且存在多個(gè)項(xiàng)目的不同版本數(shù)據(jù),因此本研究將進(jìn)行多對(duì)一模式下的跨項(xiàng)目缺陷預(yù)測(cè)。在實(shí)驗(yàn)過程本研究還對(duì)源項(xiàng)目數(shù)據(jù)進(jìn)行過采樣的預(yù)處理,使用 SMOTE[12]與 Tomke links[13]結(jié)合的方法進(jìn)行預(yù)處理。實(shí)驗(yàn)平臺(tái)說明:操作系統(tǒng)Ubuntu 16.04,采用Python3編程,神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)基于Pytorch框架。
表1 Promise數(shù)據(jù)集統(tǒng)計(jì)
具體實(shí)驗(yàn)參數(shù)說明:輸入層神經(jīng)元個(gè)數(shù)20,并具有兩層隱藏層,神經(jīng)元個(gè)數(shù)均為40,使用隨機(jī)梯度下降算法進(jìn)行參數(shù)學(xué)習(xí),多核最大均值使用三種核函數(shù)分別為線性核,多項(xiàng)式核函數(shù)以及高斯核函數(shù)。實(shí)驗(yàn)結(jié)果評(píng)價(jià)采用跨項(xiàng)目領(lǐng)域通常所采用的F1值作為度量[14~15]。
為了驗(yàn)證DAMLP方法的有效性,進(jìn)行了多對(duì)一模式下的跨項(xiàng)目軟件缺陷預(yù)測(cè),并與經(jīng)典方法Burak filter[16]、Peters filter[17]、TCA+[3]進(jìn)行對(duì)照實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如下。
從實(shí)驗(yàn)結(jié)果可以看出本研究所提出的DAMLP方法較經(jīng)典方法 Burak filter、Peters filter、TCA+有著較大的提升,F(xiàn)1平均值提高了10%,這也充分驗(yàn)證了本研究思路的可行性,深度網(wǎng)絡(luò)遷移在跨項(xiàng)目缺陷預(yù)測(cè)領(lǐng)域是可行的。
本研究采用深度遷移學(xué)習(xí)思想進(jìn)行跨項(xiàng)目軟件缺陷預(yù)測(cè),實(shí)驗(yàn)結(jié)果表明DAMLP方法在Promise數(shù)據(jù)集上與多種經(jīng)典跨項(xiàng)目缺陷預(yù)測(cè)方法相比均能獲得較好的預(yù)測(cè)性能,并且這一研究的成功也拓展了跨項(xiàng)目跨項(xiàng)目缺陷預(yù)測(cè)領(lǐng)域研究思路,在進(jìn)一步研究中該方法仍有一些后續(xù)工作值得擴(kuò)展,在本研究中,主要關(guān)注了項(xiàng)目間分布差異的問題,對(duì)于數(shù)據(jù)不平衡使用過采樣方法加以解決,對(duì)數(shù)據(jù)冗余等問題并進(jìn)行探討,在進(jìn)一步工作可以深入地探討類不平衡及數(shù)據(jù)冗余問題對(duì)跨項(xiàng)目缺陷預(yù)測(cè)過程的影響。