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

一種基于功能的程序表示研究

2018-04-24 07:58:45陳功
現代計算機 2018年8期
關鍵詞:程序特征方法

陳功

(四川大學計算機學院,成都 610065)

0 引言

隨著軟件技術的迅速發展,軟件倉庫的規模變得越來越龐大,軟件倉庫中大量的軟件工件為軟件開發人員從中挖掘出有用的信息,并應用于軟件工程活動提供了可能。軟件倉庫中的源程序就是軟件工程的重要研究對象之一。為了有效地挖掘出程序中隱含的信息,關鍵在于找到一種合適的程序的中間表示方法。

為了解決軟件工程中的實際問題,國內外研究者們對于程序的表示方法也進行了許多嘗試。2006年Koschke[1]在研究中使用基于抽象語法樹的方法來進行代碼克隆檢測。2013年Wu[2]等人采用基于程序依賴圖的方法來分析程序中的克隆。2015年White[3]等人將循環神經網絡應用于程序語言中,獲取token的詞向量表示,并應用于代碼推薦系統中。

深度學習[4]作為當前的研究熱點之一,在自然語言處理、語音識別以及圖像處理等領域都取得了突破性的進展。近年來,軟件工程領域的研究者們也開始嘗試將深度學習應用于軟件工件中[5-6]。本文利用深度學習自動提取特征的特點,提出了一種基于功能的程序表示方法,得到可以反映程序特征的矩陣表示。

1 算法思想

我們的核心問題是將程序在一個固定維度的實數值空間表示出來,進而才可以將其作為典型的有監督學習算法的輸入。盡管程序可能包含了很多特征,如代碼風格、時空間復雜度等,在這里我們將首要關注程序最基本的方面——功能。給定一個程序A,以及它的前置條件P,我們希望能夠通過學習A的特征從而預測當P成立時,運行A得到的結果,即程序A的后置條件Q。一般地,我們將P和Q表示成一個實值向量,該向量包含了程序在某個特定時刻的狀態(即程序中變量的值),這里的(P,A,Q)被稱為霍爾三元組。我們提出以霍爾三元組集合作為深度網絡的輸入來學習程序的特征,采用的主要方法是同時找到程序的狀態和程序在特征空間的對應的點,在這個空間上,程序可以視作是程序的前置條件到后置條件的一個線性映射。

更具體地說,給定一個三元組(P,A,Q),如果fP和fQ分別是前置條件P和后置條件Q的m維的特征表示,那么它們的關系可以通過等式1聯系起來:

于是,我們得到了一個m維的矩陣MA作為程序A的特征表示,我們希望通過學習得到的P,Q到特征空間f的映射以及fP到fQ的線性映射MA具備較好的泛化能力,即對于給定的程序A以及前置條件P,可以預測其后置條件Q。

2 網絡結構

本文方法的網絡結構如圖1所示。

圖1

我們的網絡總體上可以分為四層,輸入層、輸出層以及兩個隱含層,輸入層到第一個隱含層對應圖中的編碼器(Encoder),第二個隱含層到輸出層對應圖中的解碼器(Decoder),分別完成了程序的前置條件P和后置條件Q到特征空間f的映射,隱含層之間的權重系數就是程序特征的矩陣表示。對于給定的程序A,我們多次記錄程序中變量的值以及運行之后的值,得到大量的三元組(P,A,Q),以此作為數據集來訓練我們的模型。

3 模型訓練

假設提取到的程序的前置條件P和后置條件Q均是d維的向量,利用自編碼器思想,我們建立一個從前置條件P到m維的特征表示fP的非線性映射,這種映射被稱為編碼器。如傳統的自編碼網絡一樣,我們使用如下的非線性特征映射:

式中的We∈Rm×d,be∈Rm,Φ是一種非線性函數。之后,同傳統的自編碼器做法一樣,我們可利用fP重構出原始的輸入P:

式中的Wd∈Rd×m,bd∈Rd,ψ是一種非線性函數。到這一步,我們可以利用等式(1)得到后置條件Q在特征空間的表示fQ,進而重構出由模型得到的后置條件Q:

為了訓練模型中的參數,我們建立這樣一個損失函數L()

θ:

該損失函數由三個部分組成,其中lpred表示了在給定前置條件的情況,我們預測出程序的后置條件的準確程度,lauto反映了我們的自編碼器將輸入P編碼再解碼后重構得到的P?與原始輸入P之間的誤差,R是正則項,λ是正則化參數。我們的訓練目標就是使得取得最小值。

4 結語

本文介紹了一種基于功能的程序的表示方法。該方法從程序的功能出發,通過收集運行程序得到的霍爾三元組(P,A,Q)作為深度網絡的輸入,經過訓練同時得到程序的前置條件和后置條件在新特征空間的表示,使得程序的執行可以視作一個線性的映射過程。同時我們還獲得了程序的矩陣表示,該矩陣可以應用于很多的軟件工程任務中,如代碼克隆檢測、代碼自動評分、測試用例自動生成等。該方法同其他方法相比最大的優勢在于利用深度網絡自動提取程序的特征。在下一步的研究工作中,我們將從實際的軟件工程任務出發,來驗證該方法的有效性。

參考文獻:

[1]Koschke R,Falke R,Frenzel P.Clone Detection Using Abstract Syntax Suffix Trees[C].Reverse Engineering,2006.Wcre'06.Working Conference on.IEEE,2006:253-262.

[2]吳軍華,王佳利.基于依賴圖的程序克隆分析及近似解求解方法[J].南京工業大學學報(自科版),2013,35(5):52-56.

[3]White M,Vendome C,Linares M,Poshyvanyk D.Toward Deep Learning Software Repositories.MSR'15.

[4]Bengio Y,Courville A,Vincent P.Unsupervised Feature Learning and Deep Learning:A Review and New Perspectives[J],2012.

[5]Hindle A,Barr E T,Su Z,et al.On the Naturalness of Software[J].Communications of the Acm,2016,59(5):122-131.

[6]Allamanis M,Sutton C.Mining Source Code Repositories at Massive Scale Using Language Modeling[J],2013:207-216.

猜你喜歡
程序特征方法
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
抓住特征巧觀察
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 国产在线观看一区精品| 久久亚洲高清国产| 久久这里只有精品国产99| 曰韩免费无码AV一区二区| 女同久久精品国产99国| 欧美亚洲一二三区| 乱色熟女综合一区二区| 一级毛片在线播放| 一级毛片在线播放免费观看| 国产一区二区精品高清在线观看| 国产午夜无码专区喷水| 中文字幕色站| 亚洲国产精品不卡在线| 四虎亚洲国产成人久久精品| 中文字幕1区2区| 亚洲VA中文字幕| 好紧好深好大乳无码中文字幕| 欧美视频在线第一页| 亚洲人成亚洲精品| 久久黄色小视频| 婷婷色在线视频| 在线欧美日韩| 亚洲 欧美 日韩综合一区| 亚洲成人播放| 中文字幕啪啪| 国模视频一区二区| 国产国产人成免费视频77777 | 成人毛片在线播放| 一级成人a毛片免费播放| 亚洲中久无码永久在线观看软件| 欧美亚洲第一页| 91精品小视频| 全部毛片免费看| 一区二区偷拍美女撒尿视频| 九月婷婷亚洲综合在线| 欧美全免费aaaaaa特黄在线| 国产99视频精品免费观看9e| 亚洲天堂成人| 欧洲一区二区三区无码| 亚洲男人的天堂久久香蕉| 国禁国产you女视频网站| 婷婷激情五月网| v天堂中文在线| 国产日韩精品欧美一区喷| 真实国产乱子伦高清| 特黄日韩免费一区二区三区| 免费中文字幕在在线不卡| 国产欧美亚洲精品第3页在线| 在线观看视频99| 国产视频一区二区在线观看| 国产欧美成人不卡视频| 8090午夜无码专区| 又粗又硬又大又爽免费视频播放| 91福利在线观看视频| 91色综合综合热五月激情| 毛片一区二区在线看| 亚洲中文字幕无码mv| 欧美日韩午夜| 日韩欧美色综合| 午夜国产精品视频| 欧美国产精品拍自| 亚洲国产天堂在线观看| 久久人搡人人玩人妻精品| 超清无码熟妇人妻AV在线绿巨人| 欧美日韩高清| 67194成是人免费无码| 国产福利免费视频| 国产成人亚洲无码淙合青草| 国产91麻豆视频| 福利小视频在线播放| 国产区91| 免费jjzz在在线播放国产| 国产成人精品一区二区| 亚洲av片在线免费观看| 极品尤物av美乳在线观看| 国产一级在线播放| 大香网伊人久久综合网2020| 国产精品毛片一区| 思思热精品在线8| 亚洲成a人片77777在线播放| 成人国产免费| 玖玖免费视频在线观看|