劉樹毅 翟 曄 劉東升
(內蒙古師范大學計算機與信息工程學院 呼和浩特 010022)
跨項目軟件缺陷預測(Cross-Project Defect Prediction,CPDP)使用其他項目(即源項目)的訓練數據來構建預測模型,并對一個全新的項目(即目標項目)進行缺陷預測[1]。從跨項目軟件缺陷預測概念可以看出,跨項目過程的首要問題在于不同項目之間數據分布是不同的,眾多研究學者結合遷移學習思想對這一問題進行解決并且取得不錯的效果。Nam等[2]從特征映射角度出發提出了TCA(Transfer Component Analysis)方法,將源項目和目標項目的特征映射到使其最為接近的潛在空間上,從而緩解了不同項目間的數據分布差異,但數據歸一化方法的選擇對最終的預測性能有較大影響。隨后,他們在TCA方法的基礎上提出了TCA+[3],該方法可以通過對源項目和目標項目的特征進行分析,自動選出最為合適的數據歸一化方法。在TCA方法中Nam等采用特征映射的方法,將源項目與目標項目缺陷數據映射到最為接近的潛在空間上,使用最大均值差異(Maximum Mean Discrepancy,MMD)度量數據間的分布差異,這一思想對后續很多遷移學習領域研究學者提供了思路。在圖像識別領域 Muhammad Ghifary 等[4]提出了一種叫做DaNN(Domain Adaptive Neural Network),它的結構十分簡單,由兩層神經元組成,分為特征層和分類器,在Office數據集上進行了實驗,其主要貢獻在于作者提出在特征層后加入一項MMD適配層,用于計算源域和目標域的距離,并加入神經網絡的損失函數進行計算。但是,其網絡層數太淺,神經網絡的表征能力十分有限,因而其很難解決域自適應問題,后續研究者主要都是基于該思想進行擴充。龍明盛等[5]提出了DAN(Deep Adaptation Networks)方法,作者采用了AlexNet使用了三個自適應層,并且使用了多核最大均值差異(Multi-Kernel Maxi?mum Mean Discrepancy,MK-MMD)度量,使得神經網絡的表征能力更強。
本研究借鑒了Muhammad Ghifary及龍明盛等的研究,結合跨項目軟件缺陷預測特點,嘗試在跨項目軟件缺陷預測領域進行深度神經網絡可遷移性討論,提出了一種域自適應多層神經網絡(Do?main Adaptive Multi-Layer Perceptron,DAMLP),進行軟件缺陷靜態數據的跨項目軟件缺陷預測。具體利用非參數概率分布距離度量,即多核最大平均差 異(Multi-Kernel Maximum Mean Discrepancy,MK-MMD),作為嵌入在有監督的反向傳播訓練的正則化過程,用于減少由從不缺陷數據抽取的樣本引起的兩個隱藏層表示之間的分布不匹配問題。
最大均值差異(Maximum Mean Discrepancy,MMD)用于度量兩個分布之間的相似性,基本假設:如果對于所有以分布生成的樣本空間為輸入的函數f,如果兩個分布生成足夠多的樣本在f上的對應的項的均值都相等,那么可以認為這兩個分布是同一個分布[6]。本研究采用了多核最大平均差異(Multi-Kernel Maximum Mean Discrepancy,MK-MMD)用于度量源域與目標域之間的差異,多核最大均值差異是一種由Gretton等[7]提出的MMD的多核變體算法。
設x和y為分布p和q的隨機變量。由MK-MMD定義的p和q之間距離的經驗估計是

當且僅當p=q時dk2(p ,q)=0。式(1)中 Hk是具有特征核k的通用再生核希爾伯特空間(Repro?ducing Kernel Hilbert Space,RKHS),φ(·)表示原始特征空間映射到RKHS的映射函數。MK-MMD中與 特 征 映 射 關 聯 的 特 征 內 核 φ(·),k(x,y)= φ(x),φ(y ) ,定義為m個半正定內核ku的凸組合如式(2):

其中系數 βu被約束以保證導出的多核k特性。多核好處是由于特征分布在神經網絡層學習期間會發生變化,因此很難確定某種單一核函數會取得較好效果,而多內核k可以利用不同的內核來增強MK-MMD檢驗。
多層神經網絡(Multi-Layer Perceptron,MLP)已被廣泛用于解決過去幾十年中的許多描述性任務,包括對象識別任務[8]。標準多層神經網絡結構由三種類型的層組成,它們是具有加權層間連接的輸入,隱藏和輸出層,如圖1。

圖1 多層神經網絡結構


跨項目軟件缺陷預測過程,由于不同項目間存在分布差異,為此采用遷移學習中域自適方法解決這個問題。許多現有方法旨在通過源誤差加上源項目和目標項目之間的差異度量來限制目標項目誤差,自適應方法能夠使得源域和目標域數據分布更加接近。
本研究提出了一種多層神經網絡的變體,將其稱為域自適應多層神經網絡(Domain Adaptive Multi-Layer Perceptron,DAMLP)。 該 模 型 將MK-MMD度量作為正則化嵌入在有監督反向傳播訓練過程。通過使用這樣的正則化,我們旨在訓練網絡參數,使得神經網絡能夠不斷縮小源項目與目標項目分布的差異。

本研究使用由 Jureczko等[11]收集的Promise數據集作為評價數據集,該數據集在缺陷預測領域大量使用。數據集共有10個不同開源項目共計29個版本。每個項目實例均包含20個靜態代碼特征及類別標注,程序模塊的粒度設置為類。表1展示了Promise數據集的統計信息,通過匯總可以看出,缺陷模塊平均占比為41.3%。
本研究采用Promise數據集進行實驗,由于該數據中包含項目較多,并且存在多個項目的不同版本數據,因此本研究將進行多對一模式下的跨項目缺陷預測。在實驗過程本研究還對源項目數據進行過采樣的預處理,使用 SMOTE[12]與 Tomke links[13]結合的方法進行預處理。實驗平臺說明:操作系統Ubuntu 16.04,采用Python3編程,神經網絡實現基于Pytorch框架。

表1 Promise數據集統計
具體實驗參數說明:輸入層神經元個數20,并具有兩層隱藏層,神經元個數均為40,使用隨機梯度下降算法進行參數學習,多核最大均值使用三種核函數分別為線性核,多項式核函數以及高斯核函數。實驗結果評價采用跨項目領域通常所采用的F1值作為度量[14~15]。
為了驗證DAMLP方法的有效性,進行了多對一模式下的跨項目軟件缺陷預測,并與經典方法Burak filter[16]、Peters filter[17]、TCA+[3]進行對照實驗,實驗結果如下。
從實驗結果可以看出本研究所提出的DAMLP方法較經典方法 Burak filter、Peters filter、TCA+有著較大的提升,F1平均值提高了10%,這也充分驗證了本研究思路的可行性,深度網絡遷移在跨項目缺陷預測領域是可行的。
本研究采用深度遷移學習思想進行跨項目軟件缺陷預測,實驗結果表明DAMLP方法在Promise數據集上與多種經典跨項目缺陷預測方法相比均能獲得較好的預測性能,并且這一研究的成功也拓展了跨項目跨項目缺陷預測領域研究思路,在進一步研究中該方法仍有一些后續工作值得擴展,在本研究中,主要關注了項目間分布差異的問題,對于數據不平衡使用過采樣方法加以解決,對數據冗余等問題并進行探討,在進一步工作可以深入地探討類不平衡及數據冗余問題對跨項目缺陷預測過程的影響。