999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于知識回放的即時軟件缺陷預測增量模型

2024-12-31 00:00:00張文靜李勇王越
計算機應用研究 2024年11期

摘 要:即時軟件缺陷預測技術可以實現(xiàn)細粒度代碼變更的即時缺陷預測,對于提高軟件代碼質(zhì)量和保證軟件可靠性具有重要意義。傳統(tǒng)靜態(tài)軟件缺陷預測模型在處理即時軟件數(shù)據(jù)流時會存在“知識遺忘”的情況,從而導致模型泛化性能較差的問題。為此,提出一種基于知識回放的即時軟件缺陷預測增量模型方法。首先,通過知識回放機制存儲模型參數(shù)和隨機樣本,實現(xiàn)對舊知識的學習;其次,使用分布式訓練框架在本地設備上對即時軟件數(shù)據(jù)流進行增量學習,通過重構實現(xiàn)模型的即時更新;最后采用知識蒸餾技術,構建全局增量預測模型。實驗表明,該模型與常見模型算法相比,在保證訓練效率的前提下,模型的綜合性能表現(xiàn)較優(yōu)。

關鍵詞:即時軟件缺陷預測; 增量學習; 知識回放; 知識蒸餾

中圖分類號:TP311.5

文獻標志碼:A

文章編號:1001-3695(2024)11-032-3420-06

doi: 10.19734/j.issn.1001-3695.2024.03.0085

Using knowledge replay for just-in-time software defectprediction incremental model

Zhang Wenjing1, Li Yong1, 2?, Wang Yue1

(1.College of Computer Science amp; Technology, Xinjiang Normal University, U¨rümqi 830054, China; 2. Key Laboratory of Safety-Critical Software of Ministry amp; Information Technology, Nanjing University of Aeronautics amp; Astronautics, Nanjing 211106, China)

Abstract:Just-in-time software defect prediction technology enables just-in-time defect prediction at the granularity of code changes, which is crucial for improving software code quality and ensuring software reliability. Traditional static software defect prediction models suffer from ‘knowledge forgetting’ when processing just-in-time software data streams, leading to poor model generalization performance. To address this, this paper proposed an incremental model method based on knowledge replay for just-in-time software defect prediction. Firstly, it used the knowledge replay mechanism stores model parameters and random samples to facilitate the learning of old knowledge. Secondly, this paper used a distributed training framework to perform incremental learning on just-in-time software data streams on local devices, achieving real-time model updates through restructuring. Lastly, this paper employed the knowledge distillation technique to construct a global incremental prediction mo-del. Experiments show that this model performs better in terms of comprehensive performance compared to common modeling algorithms while ensuring training efficiency.

Key words:just-in-time software defect prediction; incremental learning; knowledge replay; knowledge distillation

0 引言

軟件質(zhì)量保證是軟件開發(fā)的關鍵目標,軟件在運行中一旦失效可能導致嚴重后果,有時甚至是致命的。軟件缺陷預測技術可以提高軟件測試效率,對于提升軟件質(zhì)量、保證軟件可靠性至關重要[1]。即時軟件缺陷預測(just-in-time defect prediction)技術具有細粒度、及時性、易追溯的特點,已經(jīng)成為軟件缺陷預測領域的研究熱點[2]

基于傳統(tǒng)機器學習技術構建即時軟件缺陷預測模型時,面對不斷變更的代碼數(shù)據(jù)流會導致模型泛化性較差,性能和可信度降低,影響了模型的實踐應用[2]。在面對即時軟件數(shù)據(jù)流時,增量學習方法帶來了新的研究思路,該方法通過直接混合所有新舊類別數(shù)據(jù)對模型訓練,但由于數(shù)據(jù)存儲和計算能力限制等原因,通常無法保留所有的舊類別數(shù)據(jù)[3]。

針對該問題,本文提出一種基于知識回放的即時軟件缺陷預測增量模型(knowledge replay based just-in-time software defect prediction incremental model, KRIM)。KRIM模型首先通過設置緩沖池保存舊模型參數(shù)和部分舊數(shù)據(jù),從而實現(xiàn)對舊知識的長期保留,以此來防止增量學習過程中引發(fā)的災難性遺忘問題,確保模型能夠充分利用過去的經(jīng)驗并及時適應新的代碼變更數(shù)據(jù)。其次為解決軟件項目變更數(shù)據(jù)的質(zhì)量和模型并行訓練問題,KRIM模型采用分布式學習框架并行訓練多客戶軟件數(shù)據(jù),通過服務器聚合多客戶端模型參數(shù)進行新數(shù)據(jù)的訓練學習,從而實現(xiàn)模型的增量更新。最后引入了知識蒸餾的思想,使得設備不僅可以從本地數(shù)據(jù)中進行學習,還能從全局模型中獲取軟件缺陷知識,實現(xiàn)了全局增量模型的構建。通過采用真實的即時軟件缺陷預測數(shù)據(jù)集進行實驗,驗證了該方法使得模型能夠更好地適應新的數(shù)據(jù)變化,提高即時軟件缺陷預測的準確性和實用性,相關算法和結(jié)論為即時軟件缺陷預測提供了新的思路。

1 相關工作

1.1 即時軟件缺陷預測的模型算法

在即時軟件缺陷預測模型構建領域中,模型更新可分為離線和在線兩個場景。典型的建模方法包括有監(jiān)督學習和無監(jiān)督學習[4]。傳統(tǒng)的即時軟件缺陷預測側(cè)重于離線場景,依賴于歷史數(shù)據(jù)積累實現(xiàn)靜態(tài)模型。就有監(jiān)督學習而言,Arun等人[5]使用遺傳算法引入合成樣本對軟件項目數(shù)據(jù)進行過采樣,結(jié)果表明遺傳算法過采樣方法提高了軟件預測性能。Kamei等人[6]的研究表明,選擇合適的數(shù)據(jù),即時軟件缺陷預測模型在跨項目的應用中效果更佳。另一方面,Yang等人[7]率先提出了無監(jiān)督的即時缺陷預測方法,該方法驗證了簡單的無監(jiān)督模型與復雜的監(jiān)督模型在即時軟件缺陷預測任務中的性能,相比簡單的無監(jiān)督模型性能較優(yōu)。Fu等人[8]提出將有標簽的數(shù)據(jù)特征與Yang等人的無監(jiān)督方法結(jié)合起來,可以實現(xiàn)更優(yōu)的預測結(jié)果。

然而,在實際應用中,軟件項目通常以數(shù)據(jù)流形式產(chǎn)生,傳統(tǒng)離線模型難以應對實時更新的數(shù)據(jù)流。文獻[9]提出在線即時軟件缺陷預測技術,該技術允許數(shù)據(jù)流按時間順序進入模型進行實時訓練和更新,解決了模型更新和數(shù)據(jù)不足的問題。但現(xiàn)有研究未充分考慮如何針對迭代的軟件數(shù)據(jù)流構建即時軟件缺陷預測模型,動態(tài)數(shù)據(jù)流的產(chǎn)生可能導致模型無法高效實時訓練。

1.2 增量模型構建技術

面對數(shù)據(jù)流更新不及時的問題,增量學習和分布式學習框架的發(fā)展為即時軟件缺陷預測提供了新的研究方向。增量學習也稱為持續(xù)學習或終身學習,旨在解決動態(tài)數(shù)據(jù)流模型訓練中的一個常見缺陷,即災難性遺忘[10]。常見的解決方案,可劃分為基于正則化的方法[11,12]、基于回放的方法[13,14]和基于動態(tài)架構[15]的方法。圖1為增量學習的工作流程。

基于正則化的方法是通過約束新任務的損失函數(shù)來鞏固先前的知識。Li等人[11]提出的LwF方法基于單教師蒸餾思想,將蒸餾損失納入新任務的損失函數(shù)中。Dhar等人[16]提出LWM(learning without memorizing)方法,該方法在LWF的基礎上考慮了基于注意力特征圖的蒸餾損失?;谡齽t化的另外一個方法通過估計模型參數(shù)重要性來擴展神經(jīng)網(wǎng)絡的損失函數(shù),如EWC(elastic weight consolidation)[17]、oEWC(online EWC)[18]等方法。

基于回放的方法通過存儲舊任務的部分樣本參與新任務的訓練來克服災難性遺忘。Rebuffi等人[13] 提出iCaRL方法,采用Herding技術選取舊任務的部分樣本和新任務的所有樣本構建訓練集,以避免災難性遺忘。Riemer等人[14]提出了經(jīng)驗回放(experience replay,ER) 方法將舊任務的樣本與當前任務樣本結(jié)合進行訓練。Benjamin等人[19]提出了功能距離正則化(FDR)方法,該方法在經(jīng)驗重放基礎上增加正則化損失,來保存任務邊界的網(wǎng)絡響應特性。Yan等人[20]提出了SNCL方法,基于ER進一步融入了任務標簽和中間層特征的考量,實現(xiàn)了對舊任務經(jīng)驗的全面重放。

基于正則化的方法通過增加額外正則化來抑制過往知識的丟失。然而,這種方法由于模型容量的限制,往往難以在穩(wěn)定性和適應性之間達到平衡,導致對新數(shù)據(jù)的適應性不足,影響模型的預測效果。另一方面,基于樣本回放的策略,將舊任務的樣本納入新任務訓練中,但這種方法需要更多的內(nèi)存和時間投入并可能引發(fā)數(shù)據(jù)隱私泄露問題[21]。

通過以上文獻綜述,如何在動態(tài)數(shù)據(jù)流場景下,對即時軟件缺陷預測性能和安全性的同步提高是當前亟待解決的問題。本文提出一種基于知識回放的增量模型算法。在模型構建過程中,首先引入增量學習中的知識回放方法解決由于動態(tài)數(shù)據(jù)流的產(chǎn)生而造成的模型災難性遺忘問題;其次,結(jié)合聯(lián)邦分布式學習框架解決并發(fā)訓練模型對數(shù)據(jù)學習不充分與數(shù)據(jù)質(zhì)量難以提高的問題;最后,在分布式學習框架中采用知識蒸餾的思想,由服務器端模型指導客戶端模型的訓練,既鞏固了舊知識,同時為服務器端構建全局增量模型作出了貢獻。

2 基于知識回放的聯(lián)邦增量模型

為解決即時軟件缺陷預測模型中持續(xù)學習和數(shù)據(jù)質(zhì)量的問題,本文構建基于知識回放的即時軟件缺陷預測增量模型。專注于迭代產(chǎn)生的軟件數(shù)據(jù)流,使用知識回放的增量學習方法和聯(lián)邦分布式訓練方式,通過克服災難性遺忘問題,采用服務器-客戶端的架構,實現(xiàn)各設備端知識的融合和共享,在客戶端直接進行模型參數(shù)的傳輸和合并,實現(xiàn)參與設備的安全、透明和平等。在即時軟件缺陷預測中提高了預測效率,確保了軟件數(shù)據(jù)的安全。

圖2為本文提出的基于知識回放的增量模型總體框架。在這個框架中,首先每個客戶端都采用基于知識回放的KR增量模型作為本地模型進行操作,其通過在本地存儲舊數(shù)據(jù)的機制,即知識回放池來平衡和記憶新舊任務,模型在接收新任務時,通過回放舊數(shù)據(jù),減少對舊知識的遺忘,從而在增量學習過程中實現(xiàn)新舊知識的有效整合。其次,分布式增量學習的參數(shù)更新算法確保了模型在每一輪訓練中,系統(tǒng)會隨機選擇一個客戶端作為聚合節(jié)點,其他客戶端執(zhí)行本地更新,并與聚合節(jié)點同步,確保數(shù)據(jù)在各客戶端之間的安全傳輸及模型的連續(xù)更新。最后,服務器端扮演著指導和監(jiān)督的角色,通過應用模型蒸餾策略來進一步減輕任務內(nèi)的遺忘問題,服務器端存儲的教師模型將高質(zhì)量的預測能力通過蒸餾過程傳遞給各客戶端的學生模型,該方法不僅提升了學生模型的性能,也保持了模型知識的一致性和更新的質(zhì)量。

2.1 基于互補學習機制的知識回放算法

互補學習系統(tǒng)(complementary learning system,CLS)[22]理論闡述了人類大腦如何利用新皮質(zhì)進行長期知識儲存,以及如何利用海馬體進行快速學習和記憶重放,以防止災難性遺忘[23]。在對知識回放中舊知識節(jié)點的重要性等標準確定時,結(jié)合了基于GNN的在線學習框架中使用節(jié)點重要性的策略[24]。本節(jié)提出了基于互補學習機制的知識回放算法(knowledge replay algorithm,KR)。在該算法學習新任務時,模型會評估緩沖區(qū)中存儲的舊知識,根據(jù)知識節(jié)點的重要性、知識節(jié)點與當前任務的相關性選擇需要重新演練的知識節(jié)點。

算法1 知識回放算法(KR)

輸入:連續(xù)任務集T={T1,T2,…,Ti,…,TM};重放緩沖區(qū)B;加入緩沖區(qū)B的樣本D;模型參數(shù)fθ。

輸出:緩解前序任務災難性遺忘的模型LM。

while Ti

獲取訓練集Ditr,抽取知識節(jié)點B

計算損失函數(shù):LTi=(LM,Dtei,E)

篩選有代表性的知識節(jié)點E=select(Dtri,e)

添加挑選節(jié)點到緩沖區(qū):B=BUE

從任務隊列中移除當前任務Ti,即T=T\{Ti}

end while

return LM;

在算法1中,首先從當前處理的任務中訓練并提取關鍵的模型參數(shù),這些參數(shù)攜帶特定任務的重要信息,能夠作為未來學習過程的知識藍本。然后當模型面臨新的學習任務時,該框架不僅重新利用先前保存的模型參數(shù),而且結(jié)合挑選的隨機樣本,將兩者結(jié)合作為知識節(jié)點參與新任務的訓練。最后通過迭代更新機制對知識節(jié)點進行持續(xù)更新和優(yōu)化。KR算法允許模型在學習新任務的同時,重新訪問并整合之前任務中的關鍵信息,確保了學習過程的連續(xù)性和知識的累積。

具體而言,在學習任務Ti時,獲取其訓練集Dtri和測試集Dtei。隨后,從回放緩沖區(qū)B中選擇示例E (D,fθ)(其中D代表隨機樣本,fθ為模型訓練的參數(shù))。一旦選擇了合適的知識節(jié)點,將當前任務測試集Dtei和知識節(jié)點E一起輸入到客戶端模型LM中。在客戶端模型中,采用節(jié)點分類任務的自然損失函數(shù),即式(1)所示的交叉熵損失函數(shù),來度量模型在新任務上的性能表現(xiàn)。

Lti(LM,E)=-∑(xi,yi)∈D(yilog LM(xi)+(1-yi)log(1-LM(xi)))(1)

其中:測試集Dtei中的數(shù)量通常大于回放緩沖區(qū)的大小,使用一個權重因子β來平衡Dtei和B的影響,避免模型偏向于特定的數(shù)據(jù)。因此,采用式(2)所示設置動態(tài)權重因子機制。

β=|B|/(|Dtri|+|B|)(2)

2.2 分布式增量學習的參數(shù)更新算法

為解決數(shù)據(jù)質(zhì)量和模型并發(fā)訓練問題,本研究采用分布式增量學習方法。在此框架中,每個客戶端使用KR算法進行訓練,上傳模型參數(shù)和隨機樣本,而不是原始數(shù)據(jù),以確保數(shù)據(jù)的本地化。允許各客戶端基于新任務和回放池中的舊知識進行本地更新,優(yōu)化學習到的模型參數(shù)。此外,為減少循環(huán)更新造成的訓練時間延長,采用隨機并發(fā)更新策略。與傳統(tǒng)循環(huán)更新不同的是將每輪通信中的所有客戶端訓練的模型聚合到服務器端。這種方法不僅能增強數(shù)據(jù)質(zhì)量,而且能實現(xiàn)并發(fā)式的訓練。算法2描述了模型更新的過程。

算法2 分布式增量學習算法(FIL)

輸入:客戶端數(shù)量num任務的通信輪次R;任務數(shù)T;本地迭代次數(shù)E;每個客戶端的本地增量任務流Tk={T1,T2,…,Tg,…,Tnum}(其中1≤klt;num)。

輸出:所有客戶端訓練后的局部模型參數(shù)θ1,…,θk,…,θnum。

初始化每個客戶端局部模型參數(shù)θ1,…,θk,…,θnum

for t = 1 to T do

for r = 1 to R do

隨機選擇一個客戶端num′作為聚合節(jié)點,其余為對等節(jié)點。

初始化Δθt=0,對每個對等節(jié)點ki執(zhí)行:

更新參數(shù):Δθk←IncrementalTrain(k,Tk,θk,E)

累加到Δθt:Δθt←Δθt+Δθk

聚合參數(shù):θagg←1sk≤num and k≠num′∑Δθnum

聚合微調(diào):θ′agg←IncrementalTrain(num,Tnum,θagg,E)

聚合節(jié)點θ′agg分發(fā)到所有對等節(jié)點

end for

end for

2.3 基于知識蒸餾的模型更新策略

為減輕服務器端和客戶端的災難性遺忘,引入知識蒸餾進行解決。圖3為基于知識蒸餾的分布式學習框架,該框架首先使用了模型上一個任務中預測出的新數(shù)據(jù)流,并將其輸出視為偽標簽來進行知識蒸餾,即軟預測,以回顧不可用的數(shù)據(jù)知識。其次,在學習新數(shù)據(jù)流后為鞏固舊知識階段采用了式(3)所示的蒸餾損失函數(shù)量化并優(yōu)化知識的傳遞效率。為提高全局增量模型的學習能力和充分利用學習資源,可以將學習新任務和回顧舊任務分配給不同的客戶端。

Ldistill=-∑(xi,y^i)∈D(y^ilog LM(xi))(3)

其中:LM是客戶端模型;y^i是由上一個任務模型生成的偽標簽;D是新任務的數(shù)據(jù)集。

最后為減輕模型整體任務內(nèi)遺忘,提出服務器蒸餾機制,該機制首先聚合的全局模型經(jīng)過微調(diào)以模仿上一輪全局模型和本輪局部模型的輸出,其次應用式(4)所示的蒸餾損失函數(shù)在訓練中微調(diào)模型,確保全局模型能夠有效地從局部模型中學習并保留關鍵知識。

Lserver-distill=-∑xi∈D(yprev(xi)log fθglobal(xi)+ylocal(xi)log fθglobal(xi))(4)

其中:yprev和ylocal分別是上一輪全局模型和本輪局部模型的輸出; fθglobal是聚合后的全局增量模型。

3 實驗

3.1 實驗設置

本文提出基于知識回放的增量學習方法實現(xiàn)即時軟件缺陷預測任務,使用全連接神經(jīng)網(wǎng)絡進行訓練。由于數(shù)據(jù)集存在類不平衡的現(xiàn)象,本實驗采用隨機森林和隨機采樣算法結(jié)合處理類不平衡[25]。

實驗在NVIDIA GeForce RTX 3050Ti 4 GB和16 GB內(nèi)存的Windows 11環(huán)境下運行,且所有程序均由Python編程語言和PyTorch 2.1.0實現(xiàn)。本文方法的超參數(shù)設置為:使用基于最小批的ADAM優(yōu)化器優(yōu)化模型參數(shù),增量模型KRIM使用的最小批大小為32,基于知識回放方法中的緩沖池最大設置為100,緩沖池中的模型參數(shù)和樣本數(shù)量m在{20,40,60,80}調(diào)整,學習率在{0.01,0.001}調(diào)整。

3.2 實驗數(shù)據(jù)

實驗使用Kamei等人[26]提出的公開數(shù)據(jù)集。該數(shù)據(jù)集包含6個大型開源軟件項目。每個項目相互獨立,為模擬增量學習場景,選取每個項目的80%作為訓練集,剩下的20%作為測試集。數(shù)據(jù)集的基本信息如表1所示。

3.3 評價指標

為了評估預測性能,本文采用了即時軟件缺陷預測常用的準確率、精確度、召回率、F1和AUC度量。即時軟件缺陷為二分類問題,即0和1問題。其中1為正例,代表有缺陷,0為負例,代表無缺陷。TP(真正例)表示正確預測有缺陷變更的數(shù)量,F(xiàn)P(假正例)表示錯誤預測無缺陷變更為有缺陷變更,F(xiàn)N(假反例)表示錯誤預測有缺陷變更為無缺陷變更,TN(真反例)表示正確預測無缺陷變更的數(shù)量,混淆矩陣如表2所示。

a)準確率(accuracy),精度。即準確衡量正確分類的變化(包括缺陷變更和非缺陷變更)的數(shù)量與總變更數(shù)的比值。

accuracy=TP+TNTP+FP+TN+FN(5)

b)精確率(precision),查準率。即正確預測為正類樣本的數(shù)量與所有被預測為正類樣本的數(shù)量之間的比率。

precision=TPTP+FP(6)

c)召回率(recall),查全率。即正確預測為正類樣本數(shù)量與真實正類樣本數(shù)量的比值。

recall=TPTP+FP(7)

d)F1-measure。即比較不同項目之間的權衡,它是precision和recall的加權調(diào)和平均,當F1-measure較高時說明實驗方法比較理想,當兩者之一過小時,F(xiàn)1-measure也會非常小,進而提示模型異常。

F1-measure=2× precision×recallprecision+recall(8)

e)AUC是衡量二分類問題的一種性能指標,是ROC(receiver operating characteristic)曲線下的面積。當AUC大于0.5時,模型性能越好,當小于等于0.5時,模型性能不佳??紤]到即時軟件缺陷預測數(shù)據(jù)存在嚴重類不平衡問題,AUC不會受到閾值和類不平衡問題的影響,本研究將AUC作為評價指標。

3.4 實驗分析

3.4.1 不同方法在增量模型下的預測性能比較

1)模型算法的有效性對比

本實驗對KRIM模型主要組件的有效性進行檢驗。實驗包括兩種KRIM方法的變種模型:M1,未使用知識回放的增量模型;M2,使用知識回放的增量模型。表3給出了兩種變體的性能。可以看出,由于沒有使用知識回放策略,僅限新的軟件數(shù)據(jù)流進行訓練,導致模型遺忘了舊任務的知識。

對比表3可知,M1在數(shù)據(jù)集上的各項指標低于M2的各項指標,特別是使用了知識回放策略的模型預測準確率比未使用知識回放策略的模型準確率提高了0.245。因此,增加知識回放策略從內(nèi)存緩沖區(qū)中獲取過往任務的多個信息流,即使到了任務后期,也能保證大部分的舊知識不被遺忘。

2)模型算法的泛化性驗證

為驗證KRIM模型在每個數(shù)據(jù)集上具有普適性,本實驗使用Kamei等人提出的數(shù)據(jù)集,在每個數(shù)據(jù)集上都進行實驗分析。表4為兩種對比方法和本文方法在AUC性能上的表現(xiàn)情況,從三種方法的定性評價可知,iCaRL方法是通過回放樣本數(shù)據(jù),LwF是添加正則化損失避免災難性遺忘。由表4可知,本文方法在每個數(shù)據(jù)集上的AUC性能均優(yōu)于其余兩個對比方法。因此,本文提出的增量模型在所選用的即時軟件缺陷預測數(shù)據(jù)集上均有效,模型的適應能力較好。

3)模型算法的穩(wěn)定性評估

為評估模型的穩(wěn)定性,設定了關鍵超參數(shù),即知識回放策略中緩沖區(qū)M所暫存的模型數(shù)量m,設置m∈{20,40,60,80},其他超參數(shù)的取值與3.1節(jié)一致。

本實驗對基于樣本回放和基于知識回放采用不同增量數(shù)目時的準確率進行比較,如圖4所示。從中可以看出,隨著m的增大,KRIM模型準確率先是提高然后趨于穩(wěn)定,這表明適當增加暫存模型數(shù)量有助于提升性能,但超過某一閾值后收益減小。由圖可知,iCaRL方法在m為20的時候性能最好,由此可知其在較小數(shù)據(jù)集上更有效,KRIM模型從增量數(shù)目20到40時準確率略有下降,但之后穩(wěn)定并在80時略有上升。表明KRIM模型對時間變化的數(shù)據(jù)更為穩(wěn)定,其有望從更大的數(shù)據(jù)集訓練中獲益。

3.4.2 KRIM模型與現(xiàn)有主流增量模型的比較

為進一步對比KRIM增量模型在即時軟件缺陷預測上增量效果,本節(jié)選取現(xiàn)有的主流增量模型iCaRL[13]和LwF[11],并在6個軟件項目數(shù)據(jù)集上進行預測性能對比,且在各項指標下取6個數(shù)據(jù)集的均值。iCaRL是基于回放的增量學習方法的代表模型,LwF是基于正則化的增量學習方法的代表模型。圖5展示了本文方法基于目前增量方法的性能比較,由圖5(c)可知,隨著訓練輪數(shù)epoch的增加,模型的精度值一直在顯著上升,且在訓練輪次達到10的時候,相比其余兩種方法其精度值最高。由圖5(b)(d)可知,模型的預測準確率和F1值變換比較平穩(wěn),但是都是呈現(xiàn)上升趨勢,且總體看其預測值高于另外兩種方法。從圖5(e)觀察可知,模型的召回率剛開始達到了最高,雖然隨著epoch的增加在降低,但是前9輪的recall值仍然高于其余兩種方法。特別地,觀察模型在AUC上的表現(xiàn)能力,本文KRIM在整體效果上達到了最優(yōu)。

3.4.3 KRIM模型與傳統(tǒng)即時軟件缺陷預測模型的比較

為了評估KRIM在即時軟件缺陷預測的效能,將KRIM與五種傳統(tǒng)即時缺陷預測模型進行對比,采用F1-measure作為評價指標?;鶞誓P瓦x擇了常見的五種即時軟件缺陷預測模型進行了比較,以下是對基線模型的概述:

a)JITQA[26]。該模型通過歷史缺陷信息來預測未來代碼提交的缺陷概率,通過在多個大型軟件項目中驗證,該模型顯示出高于行業(yè)標準的預測精度。

b)Deeper[27]。該模型基于深度學習探索代碼變更模式以提高缺陷預測的準確性,其特別適用于處理大規(guī)模代碼庫。

c)LocalJIT[28]。該模型對即時缺陷預測的局部與全局模型進行對比,其在實時更新的環(huán)境中較為有效,能夠即時調(diào)整預測策略,優(yōu)化性能。

d)DAECNN[29]。該模型將去噪自編碼器與卷積神經(jīng)網(wǎng)絡相結(jié)合進行預測,其在噪聲較多的數(shù)據(jù)集上顯現(xiàn)出了較強的模型魯棒性。

e)RandomForest[30]。該模型關注即時軟件缺陷預測模型的可解釋性,使開發(fā)者能更好地理解和信任模型的決策過程,其在實際測試表現(xiàn)出了優(yōu)異的結(jié)果。

由表5可知,與JITQA相比,KRIM在所有數(shù)據(jù)集上都顯示出了顯著的改進。即便與近兩年提出的DAECNN相比,KRIM也在所有數(shù)據(jù)集上展現(xiàn)出更優(yōu)的性能,尤其是在mozilla和platform數(shù)據(jù)集上,其F1-measure均超過了0.80。然而,在bugzilla和columba數(shù)據(jù)集上,KRIM相較于DAECNN在F1值、精確度等指標上表現(xiàn)不佳,這是由于bugzilla和columba數(shù)據(jù)集的數(shù)量較少,從而影響了模型充分訓練學習,舊知識也無法進行充分利用,進一步驗證了本文方法在即時軟件缺陷預測領域中的適用性更強。通過分析表明KRIM在處理大型項目時具有較高的魯棒性和可靠性。本文方法相較于傳統(tǒng)的RandomForest模型,KRIM在所有數(shù)據(jù)集上都有著更為出色的表現(xiàn),驗證了KRIM在即時軟件缺陷預測中的實用性和有效性。

4 結(jié)束語

本文提出了一種基于知識回放的增量模型(KRIM)即時軟件缺陷預測方法。該模型首先設計知識回放機制(KR)實現(xiàn)對本地增量任務數(shù)據(jù)流的持續(xù)學習。其次,通過構建分布式增量學習框架,在提高數(shù)據(jù)質(zhì)量的同時對多客戶端數(shù)據(jù)流進行并發(fā)訓練。最后,提出的知識蒸餾解決方案完善了模型的更新機制。知識回放與增量學習的結(jié)合,使得模型能夠快速適應新到來的數(shù)據(jù)流。通過在公開數(shù)據(jù)集上進行實驗分析,驗證了所提模型在多種數(shù)據(jù)集上與主流增量模型和現(xiàn)有即時軟件缺陷預測模型的有效性。未來將進一步探究模型可解釋性對預測性能的影響,并研究隱私保護方法在動態(tài)數(shù)據(jù)流上的應用效果。

參考文獻:

[1]Zhao Yunhua, Damevski K, Chen Hui. A systematic survey of just-in-time software defect prediction [J]. ACM Computing Surveys, 2023, 55 (10): 1-35.

[2]蔡亮, 范元瑞, 鄢萌,等. 即時軟件缺陷預測研究進展 [J]. 軟件學報, 2019, 30 (5): 1288-1307. (Cai Liang, Fan Yuanrui, Yan Meng, et al. Just-in-time software defect prediction: literature review [J]. Journal of Software, 2019, 30 (5): 1288-1307.)

[3]Gopalakrishnan S, Singh P R, Fayek H, et al.Knowledge capture and replay for continual learning [C]// Proc of CVF Winter Conference on Applications of Computer Vision. Piscataway, NJ: IEEE Press," 2022: 10-18.

[4]Cabral G G, Minku L L. Towards reliable online just-in-time software defect prediction [J]. IEEE Trans on Software Engineering, 2022, 49 (3): 1342-1358.

[5]Arun C,Lakshmi C. Genetic algorithm-based oversampling approach to prune the class imbalance issue in software defect prediction [J]. Soft Computing, 2022, 26 (23): 12915-12931.

[6]Kamei Y, Fukushima T, McIntosh S, et al.Studying just-in-time defect prediction using cross-project models [J]. Empirical Software Engineering, 2016, 21: 2072-2106.

[7]Yang Yibiao, Zhou Yuming, Liu Jinping, et al.Effort-aware just-in-time defect prediction: simple unsupervised models could be better than supervised models [C]// Proc of the 24th SIGSOFT International Symposium on Foundations of Software Engineering. New York: ACM Press, 2016: 157-168.

[8]Fu Wei, Menzies T. Revisiting unsupervised learning for defect prediction [C]// Proc of the 11th Joint Meeting on Foundations of Software Engineering. New York: ACM Press,2017: 72-83.

[9]Tabassum S,Minku L L, Feng D, et al.An investigation of cross-project learning in online just-in-time software defect prediction [C]// Proc of the 42nd International Conference on Software Engineering. New

York: ACM Press,2020: 554-565.

[10]Thai A, Stojanov S, Rehg I, et al.Does continual learning= catastrophic forgetting [EB/OL].(2021-01-18). https://doi.org/10.48550/arXiv.2101.07295.

[11]Li Zhizhong, Hoiem D. Learning without forgetting [J]. IEEE Trans on Pattern Analysis and Machine Intelligence, 2017, 40 (12): 2935-2947.

[12]Mirzadeh S I, Chaudhry A, Yin D, et al.Wide neural networks forget less catastrophically [C]// Proc of the 39th International Conference on Machine Learning.[S.l.]: PMLR, 2022: 15699-15717.

[13]Rebuffi S A, Kolesnikov A, Sperl G, et al.iCaRL: incremental classifier and representation learning [C]// Proc of IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE Press, 2017: 5533-5542.

[14]Riemer M, Cases I, Ajemian R, et al.Learning to learn without forgetting by maximizing transfer and minimizing interference [EB/OL]. (2018-10-29). https://arxiv.org/abs/1810.11910.

[15]Nokhwal S, Kumar N. DSS: a diverse sample selection method to preserve knowledge in class-incremental learning [EB/OL]. (2023-12-14). https://arxiv.org/abs/2312.09357.

[16]Dhar P, Singh R V, Peng K C, et al.Learning without memorizing [C]// Proc of CVF Conference on Computer Vision and Pattern Recognition." Piscataway, NJ: IEEE Press, 2019: 5133-5141.

[17]Kirkpatrick J,Pascanu R, Rabinowitz N, et al.Overcoming catastrophic forgetting in neural networks [J]. Proceedings of the National Academy of Sciences, 2017, 114 (13): 3521-3526.

[18]Schwarz J, Czarnecki W, Luketina J, et al.Progress amp; compress: a scalable framework for continual learning [C]// Proc of International Conference on Machine Learning. [S.l]:PMLR, 2018: 4528-4537.

[19]Ben jamin A S, Rolnick D,Kording K. Measuring and regularizing networks in function space [EB/OL]. (2019-06-26). https://arxiv.org/abs/1805.08289.

[20]Yan Qingsen, Gong Dong, Liu Yuhang, et al.Learning Bayesian sparse networks with full experience replay for continual learning [C]// Proc of CVF Conference on Computer Vision and Pattern Recognition.Piscataway, NJ: IEEE Press, 2022: 109-118.

[21]Dayan I, Roth H R, Zhong Aoxiao, et al.Federated learning for predicting clinical outcomes in patients with COVID-19 [J]. Nature Medicine, 2021, 27 (10): 1735-1743.

[22]Arani E, Sarfraz F,Zonooz B. Learning fast, learning slow: a general continual learning method based on complementary learning system [EB/OL]. (2022-05-10). https://arxiv.org/abs/2201.12604.

[23]Shoham N, Avidor T, Keren A, et al.Overcoming forgetting in federated learning on non-IID data [EB/OL]. (2019-10-17). https://arxiv.org/abs/1910.07796.

[24]Wei Di, Gu Yu, Song Yumeng, et al.IncreGNN: incremental graph neural network learning by considering node and parameter importance [C]// Proc of the 27th International Conference on Database Systems for Advanced Applications. Berlin: Springer-Verlag, 2022: 739-746.

[25]Zhang Wenjing, Li Yong, Wen Ming, et al.Comparative study of ensemble learning methods in just-in-time software defect prediction [C]// Proc of the 23rd International Conference on Software Quality, Reliability, and Security Companion." Piscataway, NJ: IEEE Press, 2023: 83-92.

[26]Kamei Y, Shihab E, Adams B, et al.A large-scale empirical study of just-in-time quality assurance [J]. IEEE Trans on Software Engineering, 2012, 39 (6): 757-773.

[27]Yang Xinli, Lo D, Xia Xin, et al.Deep learning for just-in-time defect prediction [C]// Proc of IEEE International Conference on Software Quality, Reliability and Security. Piscataway, NJ: IEEE Press,2015: 17-26.

[28]Yang Xingguang, Yu Huiqun, Fan Guisheng, et al.Local versus global models for just-in-time software defect prediction [J/OL]. Scientific Programming.(2019). https://doi. org/10. 1155/2019/2384706.

[29]Zhu Kun, Zhang Nana, Ying Shi, et al.Within-project and cross-project just-in-time defect prediction based on denoising autoencoder and convolutional neural network [J]. IET Software, 2020, 14 (3): 185-195.

[30]Zheng W Wei, Shen Tianren, Chen Xiang, et al.Interpretability application of the just-in-time software defect prediction model [J]. Journal of Systems and Software, 2022, 188: 111245.

主站蜘蛛池模板: 无码粉嫩虎白一线天在线观看| 国产又粗又爽视频| 国产丝袜一区二区三区视频免下载| 欧美在线导航| 高清久久精品亚洲日韩Av| 伊人蕉久影院| 欧美色图久久| 国产区人妖精品人妖精品视频| 欧美成人日韩| 97视频免费在线观看| 91极品美女高潮叫床在线观看| 欧美一级在线看| 一级爱做片免费观看久久 | 亚洲色图欧美在线| 国产精品一线天| 亚洲无线视频| 不卡无码网| 好紧好深好大乳无码中文字幕| 精品人妻系列无码专区久久| 国产精品久久久久久久伊一| 精品视频一区二区三区在线播| 99热这里只有免费国产精品| 成人精品在线观看| 自拍欧美亚洲| 国产主播一区二区三区| 欧美精品1区2区| 一级毛片免费高清视频| 一区二区三区国产精品视频| 91成人免费观看| 欧美日韩一区二区三| 亚洲第一成年免费网站| 欧美激情网址| 亚洲AV无码久久精品色欲| 日韩东京热无码人妻| 亚洲人成人无码www| 福利一区三区| 毛片免费高清免费| 天天做天天爱天天爽综合区| 国产一区二区在线视频观看| 亚洲第一视频免费在线| 99九九成人免费视频精品| 国产精品嫩草影院av| 久久亚洲国产视频| 久久国产乱子| 国产欧美精品一区aⅴ影院| 亚洲日韩精品无码专区| 69av在线| 精品超清无码视频在线观看| 国产黄在线免费观看| 91无码人妻精品一区二区蜜桃| 婷婷六月在线| 99久久99视频| 日韩国产高清无码| 久久久波多野结衣av一区二区| 91福利片| 亚洲 欧美 中文 AⅤ在线视频| 99人妻碰碰碰久久久久禁片| 亚洲欧美日韩另类| 国产精品亚欧美一区二区| 精品国产黑色丝袜高跟鞋| 一级毛片免费不卡在线 | 手机永久AV在线播放| 国产va在线观看| 国产精品成人一区二区| 一本大道东京热无码av| a级毛片在线免费| 最新国产精品第1页| 国产一级在线播放| 国产精彩视频在线观看| 欧美特黄一级大黄录像| 免费无码AV片在线观看国产| 香蕉视频在线观看www| 亚洲中文字幕无码mv| 一级毛片网| 日韩经典精品无码一区二区| 欧美在线三级| 在线播放真实国产乱子伦| 成人在线观看不卡| 久久亚洲高清国产| 欧美精品一二三区| 国产无套粉嫩白浆| 国产理论最新国产精品视频|