自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在軟件缺陷預(yù)測(cè)中使用軟件可視化和遷移學(xué)習(xí)

人工智能 新聞
將源代碼根據(jù)字符的ASCII十進(jìn)制數(shù)對(duì)應(yīng)到像素,排列成像素矩陣,獲取源代碼的圖像。
論文的數(shù)據(jù)集和代碼已開(kāi)源:https://zenodo.org/record/3373409#.YrpiEBVBxHW。

文章的動(dòng)機(jī)是避開(kāi)源代碼的中間表示,將源代碼表示為圖像,直接提取代碼的語(yǔ)義信息以改進(jìn)缺陷預(yù)測(cè)的性能。

首先,看到如下圖所示的motivation示例。File1.java和File2.java兩個(gè)示例中,雖然都包含了1個(gè)if語(yǔ)句、2個(gè)for語(yǔ)句和4個(gè)函數(shù)調(diào)用,但代碼的語(yǔ)義和結(jié)構(gòu)特征是不相同的。為驗(yàn)證將源代碼轉(zhuǎn)換成圖像是否有助于區(qū)分不同的代碼,作者進(jìn)行了實(shí)驗(yàn):將源代碼根據(jù)字符的ASCII十進(jìn)制數(shù)對(duì)應(yīng)到像素,排列成像素矩陣,獲取源代碼的圖像。作者指出,不同的源代碼圖像存在差異。

Fig. 1 Motivation Example

文章主要的貢獻(xiàn)如下:

將代碼轉(zhuǎn)換成圖像,從中提取語(yǔ)義和結(jié)構(gòu)信息;

提出一種端到端的框架,結(jié)合自注意力機(jī)制和遷移學(xué)習(xí)實(shí)現(xiàn)缺陷預(yù)測(cè)。

文章提出的模型框架如圖2所示,分為兩個(gè)階段:源代碼可視化和深度遷移學(xué)習(xí)建模。

Fig. 2 Framework

1.源代碼可視化

文章將源代碼轉(zhuǎn)換成6個(gè)圖像,過(guò)程如圖3所示。將源代碼字符的10進(jìn)制ASCII碼轉(zhuǎn)換成8bit無(wú)符號(hào)整數(shù)向量,按行和列對(duì)這些向量進(jìn)行排列,生成圖像矩陣。8bit整數(shù)直接對(duì)應(yīng)到灰度等級(jí)。為解決原始數(shù)據(jù)集較小的問(wèn)題,作者在文章中提出了一種基于顏色增強(qiáng)的數(shù)據(jù)集擴(kuò)充方法:對(duì)R、G、B三個(gè)顏色通道的值進(jìn)行排列組合,產(chǎn)生6個(gè)彩色圖。這里看著挺迷的,變換了通道值后,語(yǔ)義和結(jié)構(gòu)信息應(yīng)該有所改變吧?但是作者在腳注上進(jìn)行了解釋?zhuān)鐖D4所示。

Fig. 3 源代碼可視化流程

Fig. 4 文章腳注2

2.深度遷移學(xué)習(xí)建模

文章使用DAN網(wǎng)絡(luò)來(lái)捕獲源代碼的語(yǔ)義和結(jié)構(gòu)信息。為增強(qiáng)模型對(duì)重要信息的表達(dá)能力,作者在原始DAN結(jié)構(gòu)中加入了Attention層。訓(xùn)練與測(cè)試流程如圖5所示,其中conv1-conv5來(lái)自于AlexNet,4個(gè)全連接層fc6-fc9作為分類(lèi)器。作者提到,對(duì)于一個(gè)新的項(xiàng)目,訓(xùn)練深度學(xué)習(xí)模型需要有大量的標(biāo)簽數(shù)據(jù),這是困難的。所以,作者首先在ImageNet 2012上訓(xùn)練了一個(gè)預(yù)訓(xùn)練模型,使用預(yù)訓(xùn)練模型的參數(shù)作為初始參數(shù)來(lái)微調(diào)所有卷積層,進(jìn)而減少代碼圖像和ImageNet 2012中圖像的差異。

Fig. 5 訓(xùn)練與測(cè)試流程

3.模型訓(xùn)練和預(yù)測(cè)

對(duì)Source項(xiàng)目中有標(biāo)簽的代碼和Target項(xiàng)目中無(wú)標(biāo)簽的代碼生成代碼圖像,同時(shí)送入模型;二者共享卷積層和Attention層來(lái)提取各自的特征。在全連接層計(jì)算Source和Target之間的MK-MDD(Multi Kernel Variant Maximum Mean Discrepancy)。由于Target沒(méi)有標(biāo)簽,所以只對(duì)Source計(jì)算交叉熵。模型使用mini-batch隨機(jī)梯度下降沿著損失函數(shù)訓(xùn)練模型。對(duì)每一個(gè)<source, target>對(duì)的500個(gè)epoch,根據(jù)最好的F-measure從中選出一個(gè)epoch。

在實(shí)驗(yàn)部分,作者選擇了PROMISE數(shù)據(jù)倉(cāng)庫(kù)中所有開(kāi)源的Java項(xiàng)目,收集了它們的版本號(hào)、class name、是否存在bug的標(biāo)簽。根據(jù)版本號(hào)和class name在github中下載源碼。最終,共采集了10個(gè)Java項(xiàng)目的數(shù)據(jù)。數(shù)據(jù)集結(jié)構(gòu)如圖6所示。

Fig. 6 數(shù)據(jù)集結(jié)構(gòu)

對(duì)于項(xiàng)目?jī)?nèi)缺陷預(yù)測(cè),文章選擇如下baseline模型進(jìn)行對(duì)比:

對(duì)于跨項(xiàng)目缺陷預(yù)測(cè),文章選擇如下baseline模型進(jìn)行對(duì)比:

總結(jié)一下,雖然是兩年前的論文了,但感覺(jué)思路還是比較新奇的,避開(kāi)AST等一系列代碼中間表示,直接將代碼轉(zhuǎn)換成圖像提取特征。但是還是比較疑惑,代碼轉(zhuǎn)換成的圖像真的包含源代碼語(yǔ)義和結(jié)構(gòu)信息嗎?感覺(jué)可解釋性不太強(qiáng),哈哈。后面需要做實(shí)驗(yàn)分析下吧。

責(zé)任編輯:張燕妮 來(lái)源: 安全學(xué)術(shù)圈
相關(guān)推薦

2013-09-30 09:32:12

2021-02-20 09:14:35

PythonPygal可視化

2015-02-09 14:49:58

NEC管理軟件

2012-12-25 10:43:04

IBMdW

2011-06-23 10:39:43

ibmdw虛擬化敏捷開(kāi)發(fā)

2011-08-08 15:36:57

2014-02-21 11:30:08

數(shù)據(jù)可視化大數(shù)據(jù)

2025-04-02 07:37:29

2010-01-13 13:04:25

minicom軟件

2010-09-17 10:18:59

ODTOPhone

2022-04-01 15:39:13

機(jī)器學(xué)習(xí)讓孩子們軟件交付

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2017-09-11 13:33:44

大數(shù)據(jù)數(shù)據(jù)可視化決策樹(shù)

2015-08-20 10:00:45

可視化

2019-12-12 13:50:27

strace追蹤系統(tǒng)調(diào)用Linux

2013-09-29 10:05:24

2022-08-04 18:34:18

Ubuntuaptupgrade 命令

2014-05-28 15:23:55

Rave

2017-10-14 13:54:26

數(shù)據(jù)可視化數(shù)據(jù)信息可視化

2020-05-08 13:44:26

Spark架構(gòu)RDD
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)