在軟體缺陷預測中使用軟體視覺化和遷移學習
文章的動機是避開原始程式碼的中間表示,將原始程式碼表示為圖像,直接提取程式碼的語義資訊以改善缺陷預測的效能。
首先,看到如下圖所示的motivation範例。 File1.java和File2.java兩個範例中,雖然都包含了1個if語句、2個for語句和4個函數調用,但程式碼的語意和結構特徵是不相同的。為驗證將原始碼轉換成圖像是否有助於區分不同的程式碼,作者進行了實驗:將原始程式碼根據字元的ASCII十進制數對應到像素,排列成像素矩陣,獲取原始程式碼的圖像。作者指出,不同的原始碼影像存在差異。
Fig. 1 Motivation Example
文章主要的貢獻如下:
將程式碼轉換成圖像,從中提取語義和結構訊息;
提出一個端到端的框架,結合自註意力機制和遷移學習實現缺陷預測。
文章提出的模型架構如圖2所示,分為兩個階段:原始碼視覺化與深度遷移學習建模。
Fig. 2 Framework
1.原始碼視覺化
文章將原始碼轉換成6個圖像,流程如圖3所示。將原始碼字元的10進位ASCII碼轉換成8bit無符號整數向量,並依行和列對這些向量進行排列,產生影像矩陣。 8bit整數直接對應到灰階等級。為解決原始資料集較小的問題,作者在文章中提出了一種基於顏色增強的資料集擴充方法:對R、G、B三個顏色通道的值進行排列組合,產生6個彩色圖。這裡看著挺迷的,變換了通道值後,語意和結構資訊應該要有所改變吧?但是作者在腳註上進行了解釋,如圖4所示。
Fig. 3 原始碼視覺化流程
Fig. 4 文章註腳2
#2 .深度遷移學習建模
文章使用DAN網路來捕獲原始程式碼的語義和結構資訊。為了增強模型對重要訊息的表達能力,作者在原始DAN結構中加入Attention層。訓練與測試流程如圖5所示,其中conv1-conv5來自於AlexNet,4個全連接層fc6-fc9作為分類器。作者提到,對於一個新的項目,訓練深度學習模型需要有大量的標籤數據,這是困難的。所以,作者首先在ImageNet 2012上訓練了一個預訓練模型,使用預訓練模型的參數作為初始參數來微調所有捲積層,進而減少程式碼影像和ImageNet 2012中影像的差異。
Fig. 5 訓練與測試流程
#3.模型訓練與預測
對Source專案中有標籤的程式碼與Target專案中無標籤的程式碼產生程式碼影像,同時送入模型;二者共享卷積層和Attention層來擷取各自的特徵。在全連接層計算Source和Target之間的MK-MDD(Multi Kernel Variant Maximum Mean Discrepancy)。由於Target沒有標籤,所以只對Source計算交叉熵。模型使用mini-batch隨機梯度下降沿著損失函數訓練模型。對每一個
在實驗部分,作者選擇了PROMISE資料倉儲中所有開源的Java項目,收集了它們的版本號碼、class name、是否有bug的標籤。根據版本號碼和class name在github中下載原始碼。最終,共採集了10個Java專案的資料。資料集結構如圖6所示。
Fig. 6 資料集結構
對於專案內缺陷預測,文章選擇如下baseline模型進行比較:
對於跨專案缺陷預測,文章選擇如下baseline模型進行比較:
#總結一下,雖然是兩年前的論文了,但感覺思維還是比較新奇的,避開AST等一系列程式碼中間表示,直接將程式碼轉換成影像擷取特徵。但還是比較疑惑,程式碼轉換成的影像真的包含原始碼語意和結構資訊嗎?感覺解釋性不太強,哈哈。後面要做實驗分析下吧。
#以上是在軟體缺陷預測中使用軟體視覺化和遷移學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

標題:探討Bonjour軟體及其卸載方法摘要:本文將介紹Bonjour軟體的功能、使用範圍以及如何卸載該軟體。同時,也將說明如何使用其他工具來取代Bonjour,以滿足使用者的需求。引言:在電腦和網路技術領域中,Bonjour是一種常見的軟體。儘管某些用戶可能對此不熟悉,但它在某些特定情況下非常有用。如果你碰巧安裝了Bonjour軟體,但現在想要卸載它,那麼

CrystalDiskMark是一款適用於硬碟的小型HDD基準測試工具,可快速測量順序和隨機讀取/寫入速度。接下來就讓小編為大家介紹一下CrystalDiskMark,以及crystaldiskmark如何使用吧~一、CrystalDiskMark介紹CrystalDiskMark是一款廣泛使用的磁碟效能測試工具,用於評估機械硬碟和固態硬碟(SSD)的讀取和寫入速度和隨機I/O性能。它是一款免費的Windows應用程序,並提供用戶友好的介面和各種測試模式來評估硬碟效能的不同方面,並被廣泛用於硬體評

近期有很多小夥伴諮詢小編WPSOffice無法開啟PPT檔案怎麼辦,接下來就讓我們一起學習WPSOffice無法開啟PPT檔案的解決方法吧,希望可以幫助到大家。 1.先開啟WPSOffice,進入首頁,如下圖所示。 2、然後在上方搜尋列輸入關鍵字“文件修復”,然後點擊開啟文件修復工具,如下圖所示。 3.接著匯入PPT檔案進行修復就可以了,如下圖所示。
![海盜船iCUE軟體不偵測RAM [修復]](https://img.php.cn/upload/article/000/465/014/170831448976874.png?x-oss-process=image/resize,m_fill,h_207,w_330)
本文將探討當CorsairiCUE軟體無法辨識Windows系統中的RAM時,使用者可以採取的措施。儘管CorsairiCUE軟體旨在讓使用者控制電腦的RGB照明,但一些用戶發現軟體無法正常運行,導致無法偵測RAM模組。為什麼ICUE不拿起我的記憶體? ICUE無法正確辨識RAM的主要原因通常是與後台軟體衝突有關,另外錯誤的SPD寫入設定也可能導致這個問題的發生。修正了CorsairIcue軟體無法偵測到RAM的問題如果CorsairIcue軟體未在Windows電腦上偵測到RAM,請使用下列建議。

CrystalDiskInfo是一款用來查看電腦硬體設備的軟體,在這款軟體中我們可以對自己的電腦硬體進行查看,例如讀取速度、傳輸模式以及介面等!那除了這些功能之外,CrystalDiskInfo怎麼使用,CrystalDiskInfo究竟是什麼呢,以下就讓小編為大家整理一下吧!一、CrystalDiskInfo的由來作為電腦主機三大件之一,固態硬碟是電腦的儲存媒介,負責電腦的資料存儲,一塊好的固態硬碟能加快檔案的讀取速度,影響消費者使用體驗。當消費者收到新設備時,可透過第三方軟體或其他固態硬碟

很多用戶辦公室都在使用AdobeIllustratorCS6軟體,那麼你們知道AdobeIllustratorCS6怎樣設定鍵盤增量嗎?接著,小編就為大夥帶來了AdobeIllustratorCS6設定鍵盤增量的方法,感興趣的用戶快來下文看看吧。第一步:啟動AdobeIllustratorCS6軟體,如下圖所示。第二步:在功能表列中,依序點選【編輯】→【首選項】→【常規】指令。第三步:彈出【鍵盤增量】對話框,在【鍵盤增量】文字框中輸入所需的數字,最後點選【確定】按鈕。第四步:使用快捷鍵【Ctrl】

Bonjour是由蘋果公司推出的網路協定和軟體,用於在區域網路內發現和配置網路服務。它的主要作用是在同一網路中連接的設備之間自動發現和通訊。 Bonjour最早在2002年的MacOSX10.2版本中引入,並且現在已經在蘋果的作業系統中被預設安裝和啟用了。此後,蘋果將Bonjour的技術開放給其他廠商使用,因此許多其他作業系統和設備也能夠支援Bon

我們在使用Edge瀏覽器的時候有時候會出現不相容的軟體嘗試一起加載,那麼這是怎麼回事?下面就讓本站來為用戶們來仔細的介紹一下一個不相容的軟體嘗試與Edge加載怎麼解決吧。 一個不相容的軟體嘗試與Edge載入怎麼解決 解決方案一: 開始選單搜IE,直接用IE存取即可。 解決方案二: 注意:修改註冊表可能會導致系統故障,謹慎操作。 修改登錄參數。 1、運行中輸入regedit。 2、找到路徑\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Micros
