• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于圖卷積神經網絡的函數自動命名①

    2021-09-10 07:32:10堃,李征,劉
    計算機系統(tǒng)應用 2021年8期
    關鍵詞:特征向量代碼注意力

    王 堃,李 征,劉 勇

    (北京化工大學 信息科學與技術學院,北京 100029)

    1 引言

    函數自動命名是根據現有源代碼自動生成可讀性強的自然語言來描述函數的功能.在軟件維護過程中,開發(fā)者往往需要花費大量的時間去理解一段代碼所對應的功能.其中,一種重要的方式便是通過閱讀函數名來快速的了解代碼的功能,從而節(jié)約開發(fā)者的時間.盡管開發(fā)者可以通過函數名理解函數的功能,但是在實際開發(fā)過程中往往這些函數名并不是完整的或具有時效性的.這類問題可能會誤導開發(fā)者,導致開發(fā)者花費大量的時間來理解程序,影響開發(fā)效率.現有工作表明:“函數名大多是常規(guī)編程語言中聚集函數行為的最小命名單位,因此函數名是函數抽象的基石.”[1].因此,在軟件開發(fā)過程中,給定一段代碼,如何自動生成一個正確并且相關聯(lián)的函數名變得尤為重要.

    隨著深度學習技術的快速發(fā)展,許多研究人員嘗試使用深度學習模型來解決這個問題,例如sequenceto-sequence 模型[2-5].Allamanis 等[6]將代碼解析成token 序列,然后利用卷積神經網絡(CNN)對token 序列進行建模,通過卷積操作提取代碼特征,并引入注意力機制學習代碼序列與函數名之間的關鍵信息.但是,使用token 序列僅僅是代碼的展開,模型很難去學習到代碼中的結構信息,同時token 序列過長導致模型很難學習到其中的語義信息.為了解決這個問題,Alon 等[7,8]通過將代碼轉化為抽象語法樹(AST),并根據每一個葉節(jié)點(變量名、方法名等) 從AST中提取相關路徑(AST Path)來作為代碼的特征表示,該特征向量包含了一定的結構信息以及語義信息.之后Alon 等[9]提出了code2seq 模型,對先前模型進行了再一次改進,利用BiLSTM 網絡對AST 路徑進行模型構建,然后通過引入注意力機制來學習所生成的單詞與各條AST 路徑的相關性.該方法在函數名預測任務中達到了目前最好效果.然而,該方法依舊存在弱化了AST 樹形結構信息的缺陷,從而導致其很難學習到AST 路徑之間節(jié)點的信息.Fernandes 等[10]提出一種結合sequenceto-sequence 模型和圖神經網絡(GNN)模型的方法來表示代碼,Sequence-GNNs.該方法使用BiLSTM對代碼序列進行編碼,然后引入圖神經網絡對編碼后的代碼序列進行建模,最后得到的向量便是代碼的特征表示.但是BiLSTM 等循環(huán)神經網絡模型存在長程依賴問題,該模型很難捕捉到長距離文本之間的關系,會導致一些關鍵信息丟失.

    可以看出,目前在函數命名任務中面臨兩大挑戰(zhàn):(1)代碼的表示方法.對代碼進行特征提取時,不僅要提取其語義信息,而且更要提取其結構信息.在目前code2seq 模型中,該方法將代碼表示為AST 路徑的集合,引入注意力機制來提取代碼的結構以及語義信息.但是該方法對路徑建模的同時一定程度上破壞了AST的結構,而且只能提取路徑內部節(jié)點之間的信息,并不能有效提取路徑間節(jié)點之間的信息,尤其是數據流和控制流信息.(2)長程依賴問題[11].當前的代碼片段可能依賴于離它很遠的代碼段.例如,一個程序中第90 行的語句“a=a+2;”依賴于第10 行語句“int a=10;”的變量定義.隨著代碼長度的增加,BiLSTM 等循環(huán)神經網絡很難捕捉到長距離文本之間的信息.

    本文提出一種新穎的神經網絡模型TrGCN,采用了近期提出的Transformer[12]模型,該模型可以有效緩解長程依賴問題.然而原生的的Transformer 模型主要用于自然語言翻譯中,并不能應用在結構性很強的代碼中.所以我們在每個Transformer encoder block中添加了兩層圖卷積層[13],將節(jié)點以及其相關節(jié)點進行卷積操作,從而豐富代碼的結構信息.在函數命名任務中,我們使用了Java-small、Java-med和Java-large[6,9]數據集,在7 個基準模型來評估TrGCN.實驗結果表明我們的模型明顯優(yōu)于其他基準模型,相比于模型code2seq[9]和Sequence-GNNs[10],TrGCN 在F1 指標上分別提高了平均5.2%、2.1%;在ROUGE-2和ROUGE-L 指標上,比Sequence-GNNs 分別提高了0.7%、3.6%.

    2 相關背景

    隨著開源代碼庫的不斷增加,數據規(guī)模的不斷增大,越來越多的研究者開始使用機器學習對程序源代碼進行建模,學習其中的信息,幫助開發(fā)者更好的理解程序.起初研究人員把源代碼作為一種符號序列,將源代碼轉化為token 序列,并通過RNN 或LSTM 等序列模型(Seq2Seq)對其進行建模和學習序列中的信息.Allamanis 等[14]利用Logbilinear 模型,通過對變量、函數名以及類名的上下文信息進行預測.之后Allamanis等[6]提出了ConvAttention 模型,將源代碼看做一組token 序列,并使用神經網絡對其建模,通過CNN 以及注意力機制來學習代碼和函數名之間的關鍵信息.Lyer等[15]和Hu 等[16]在代碼注釋生成任務中利用RNN對源代碼建模,然后根據其建模結果使用RNN 進行解碼,同時引入了注意力機制來學習注釋文本中各個單詞與函數體之間的關系.程序語言與自然語言最大不同之處在于程序語言是一種高度結構化的語言,而基于token的程序表示方法僅僅將代碼線性展開,丟失了程序語言的結構信息,導致代碼特征向量信息的不完整.

    為了對程序的結構信息進行建模,研究人員使用AST 來對源代碼進行建模.Li 等[17]和Liu 等[18]在代碼補全任務中,將程序源代碼解析為AST,然后遍歷AST 得到一組節(jié)點序列,通過對其建模,實現代碼補全.Sun 等[19,20]在代碼生成任務中利用樹卷積的方式,將AST中的節(jié)點、雙親節(jié)點和祖先節(jié)點結合起來,通過預測語法規(guī)則實現代碼生成.Alon 等[8,9]通過從AST中提取AST 路徑來表示程序的結構信息以及語法信息,然后對AST 路徑建模,并且引入注意力機制,通過學習函數名和AST 路徑之間的關系來進行函數名預測.雖然基于AST的程序表示方法有效的提取了程序的結構信息,但是并不完整,缺少對數據流以及控制流信息的提取.

    隨著圖神經網絡(GNN)的興起,研究人員嘗試將程序源代碼轉化為圖的形式并對其進行建模.其轉化方式為通過給AST 增加更多的邊,使得模型可以更好的理解節(jié)點之間的關系.Allamanis 等[21]提出了一種基于門控圖神經網絡(GGNN)[22]模型,利用圖的形式來表示程序源代碼.該方法通過將源代碼的AST 擴展為圖的形式,其中圖中的節(jié)點表示AST 序列中的token,圖中的邊表示節(jié)點與節(jié)點之間的相互關系.Fernandes 等[10]在代碼注釋任務中提出一種將GNN與Seq2Seq 結合的模型,首先使用BiLSTM對程序進行編碼,得到其特征向量表示,然后利用GNN對其進行建模,最后得到特征向量作為程序的特征表示.但是先前的研究所使用的模型都是RNN、LSTM 等循環(huán)神經網絡模型,存在長程依賴問題,導致對代碼特征信息的提取不夠完整.本文利用了Transformer中多頭自注意力機制的特性來緩解這個問題.

    為了將結構信息的提取與緩解長程依賴問題相結合,本文提出了一種基于Transformer 模型的圖卷積神經網絡(GCN)模型TrGCN,使用圖卷積提取代碼的結構信息,并且利用Transformer 模型來緩解長程依賴問題.

    3 模型結構

    圖1顯示了TrGCN 模型的結構圖,主要包括兩個部分:AST 編碼器和解碼器.

    圖1 TrGCN 模型結構

    3.1 Encoder-Decoder 結構

    TrGCN 使用了Transformer 模型,是一種標準的Encoder-Decoder 結構,其中Encoder 編碼器將輸入的token 序列 (x1,···,xn)轉化為一組連續(xù)的特征向量z=(z1,···,zn).得到特征向量z后,Decoder 解碼器根據z輸出一組token 序列(y1,···,ym),因此模型化之后的條件概率為:p(y1,···,ym|x1,···,xn).在解碼階段,預測出的token 取決于先前token的信息,該概率模型為:

    3.2 AST 編碼器

    一段代碼可以解析為一顆抽象語法樹,其葉節(jié)點被稱為終結符,一般是用戶所定義的變量以及方法名等;非葉節(jié)點被稱為非終結符,代表代碼中的一些結構,例如循環(huán)、表達式以及變量聲明.圖2表示AST的一部分,其中變量名(如num)代表終結符,而條件語句(IfStmt)和表達式語句(ExpressionStmt)這些語法結構代表非終結符.由于非終結符擁有豐富的結構信息,終結符擁有豐富的語義信息,所以AST 編碼器的目標就是盡可能的提取AST的結構信息和語義信息來幫助模型更好的理解代碼.首先將代碼解析成一棵AST,利用前序遍歷的方式將AST 展開成一組token 序列.假設AST為T,則token 序列為T={n1,···,nL},其中L為序列的長度.每個token 可以被分割為一組字符序列其中m表示單詞最大長度,如果長度小于m,則會被填充字符填充至m.所有的token 序列以及字符序列通過table-look-up embedding的方式來表示成具有真值的初始特征向量

    圖2 抽象語法樹(部分)

    3.3 輸入序列的特征表示方法

    Character Embedding.無論是在自然語言中還是在代碼中,都會出現一些相似的單詞并且擁有相近的語義,例如name,names.為了利用這個特性,本文使用character embedding的方式來表示每個token,公式如下:

    其中,Wconv表示一層卷積權重,通過卷積操作來提取字符之間的特征;M為字符序列的最大長度,如果長度小于M,則會被填充字符填充至M.在卷積層之后會附加一層歸一化層(layer normalization[23])來對特征向量進行歸一化.最終使用加和的方式來結合word和character的特征向量:

    其中,character的特征向量nci會保留到下文的characterword 注意力層,利用注意力機制來更好的融合character和word 特征向量.

    3.4 AST 編碼器結構

    AST 編碼器是由一組encoder 組成(總共有N個encoder).其中每個encoder中都包含3 個不同的子層,分別為多頭自注意力層,character-word 注意力層以及圖卷積層,通過這3 個子層來提取輸入代碼中的特征信息.本文將會在下面的小結中詳細介紹這些子層.其中每個子層之間添加了殘差連接(residual connection[24])以及歸一化層,其中殘差連接可以有效緩解網絡退化問題和梯度彌散問題.

    多頭自注意力層:AST 編碼器中的self-attention子層與原生Transformer 相同,使用了多頭自注意力機制來捕捉長程依賴信息.

    假設有一組輸入的token 序列n1,···,nL,從上文可知,通過look-up table embedding 方式可以得到一組初始化的特征向量{n1,···,nL}.由于輸入序列是有序的,為了讓模型學習到序列中的位置關系,需要在特征向量中加入位置信息,并使用position embedding 來對位置信息進行編碼:

    其中,PE是二維矩陣,行表示節(jié)點,列表示節(jié)點的詞向量;pos表示節(jié)點在輸入序列中的位置,dmodel表示詞向量的維度,i表示詞向量的位置.

    每個Transformer中的encoder和decoder 都會通過多頭自注意力機制來學習數據中的非線性特征,它的主要思想是將一個序列文本的上下文詞匯通過矩陣乘法的方式,使每個詞匯都擁有其上下文詞匯的特征信息.而傳統(tǒng)的注意力機制只是關注了源文本和目標文本之間關系.多頭自注意力機制是將多個擁有不同參數的自注意力機制進行融合,使模型增強了關注序列文本不同位置的能力;同時豐富了序列文本詞匯的特征信息.多頭自注意力機制擁有更多線性變換,變換之后會通過激活函數進行非線性轉換,從而提高了模型非線性的學習能力.其公式如下:

    其中,H表示頭的數量,Wh表示權重.同時在每個頭中都會添加一層self-attention 層,如下:

    其中,dk=d/H表示每個特征向量的長度.Q,K,V的計算如下:

    其中,WQ,WK,WV是模型的參數,xi是AST encoder的輸入.對于第一個encoder的輸入來說,它是將word、character以及position的特征向量進行加和,例如ni+nci+PEi.而其他encoder的輸入來自上一個encoder的輸出.

    Character-word 注意力層[19]:經過self-attention層計算得到的特征向量,本層將會把該向量與保留下來的character embedding 向量進行結合.對于每一個單詞,將對進行兩個不同線性轉化,得到控制向量qi和權重向量,對進行一個線性轉化得到權重向量,最后經過Softmax 計算得到:

    得到的兩個注意力分數是用來衡量Transformer中self-attention 層的輸出和character embeddingnci,然后分別進行線性轉化得到vyi和vci:

    最后character-word 注意力層的輸出為Ycwa=[h1,···,hL].

    圖卷積層:考慮到模型很難學習節(jié)點的雙親節(jié)點、祖先節(jié)點等相關節(jié)點之間的關系,例如:節(jié)點a和節(jié)點b在文本中距離很遠,但是在AST 結構中距離卻很近,因此,對于傳統(tǒng)的Transformer 模型來說很難提取這樣的結構信息.

    為了更好的提取程序的結構信息,將AST 通過增加邊的方式擴展為圖的形式,其中使用了7 種邊的類型[21]:

    (1)Child edge:當前節(jié)點與孩子之間的邊.

    (2)Parent edge:當前節(jié)點與雙親節(jié)點之間的邊.

    (3)Grandparent edge:當前節(jié)點與祖先節(jié)點之間的邊.

    (4)Next edge:當前節(jié)點與其先驅節(jié)點(語義)之間的邊.

    (5)LastUse edge:當前節(jié)點與在詞法上最近節(jié)點之間的邊.

    (6)Next sibling edge:當前節(jié)點與兄弟節(jié)點之間的邊.

    (7)Subtoken edge:subtokens 之間的邊.

    TrGCN 將AST 視為圖的形式,同時使用鄰接矩陣來表示AST 擴展之后的圖.根據上文信息,可以得到鄰接矩陣M1,···,M7.給定一個鄰接矩陣M1,如果節(jié)點αi是節(jié)點 αj的雙親節(jié)點,則M1,ij=1.假設節(jié)點的特征向量被表示為fi,則通過鄰接矩陣M1可以得到節(jié)點i雙親節(jié)點的特征向量,計算如下:

    同理可以得到節(jié)點i的其他相關節(jié)點的特征表示,計算如下:

    其中,fik表示節(jié)點i的第k種類型相關節(jié)點的特征向量.對根節(jié)點來說,其雙親節(jié)點就是其本身,對于其他非AST節(jié)點(填充節(jié)點)來說,其任何相關節(jié)點的特征向量都是它本身.

    為了將節(jié)點與其相關節(jié)點的特征向量結合起來,本文使用了圖卷積神經網絡,公式如下:

    其中,Wgconv,l是圖卷積層的權重參數,卷積核大小k=3,l表示圖卷積層的層數.特別的是,表示當前節(jié)點的特征向量,表示character-word 注意力機制的輸出,f是激活函數ReLU,被應用于這些圖卷積層中.

    綜上所述,AST 編碼器有N個encoder,其中每個encoder 包含3 個子層,最后AST 編碼器的輸出為

    3.5 解碼器

    模型最后的模塊是解碼器,其作用是通過對AST解碼器的結果進行解碼,從而來預測函數名.解碼器與AST 編碼器的結構很類似,由一組N個decoder 組成,其中包含多頭自注意力層,encoder-decoder 注意力層以及全連接層3 個子層.在每個子層都會增加殘差連接和歸一化層,幫助模型訓練.其中在訓練階段,decoder的輸入為函數名,在預測階段,輸入為空序列(僅由填充字符組成).

    TrGCN 利用上文提到的兩個注意力子層將AST編碼器的輸出與decoder的輸入進行結合.首先利用多頭自注意力機制來提取目標語句的特征向量,···,,其中d-self 表示解碼器中的多頭自注意力子層,P表示目標語句的最大長度.然后利用Encoder-Decoder注意力機制來學習目標語句和源語句之間的關系.其中Encoder-Decoder 注意力層與多頭自注意力層結構相同,輸入不同,只要將,···,當做Q向量,將當做K,V向量即可.

    最后使用兩層全連接層,其中第一層全連接層使用激活函數ReLU,第二層全連接層用來提取特征,幫助模型預測結果.

    3.6 模型訓練

    預測函數名的下一個單詞是通過使用激活函數Softmax對解碼器最后一層的輸出進行計算,從而得到所有候選單詞的概率,選擇概率最大的單詞作為結果.

    為了提高語義提取效果,TrGCN 使用了指針網絡[25],該網絡可以直接從函數體中復制單詞來作為預測函數名時的候選單詞.如圖3所示,指針網絡可以在預測函數名getName 時,從語句return name 或者形參String name中復制單詞name,進行預測.

    圖3 函數樣例

    指針網絡通過學習一個概率來指導模型對函數體中的單詞進行復制或者是生成新的單詞.公式如下:

    其中,w表示單詞,P(w)表示預測單詞w的概率,Pvocab(w)表示在詞表中單詞w的概率,pgen表示生成新的單詞的概率,它是根據解碼器最后一層的特征向量進行線性轉化,然后通過Sigmoid 函數計算得出;Pc表示單詞w對源語句單詞的注意力分布.從公式中可以看出,當詞表中沒有單詞w時,即Pvocab(w)=0,該網絡可以從函數體中進行單詞的復制,這樣可以有效緩解Out of Vocabulary[25]問題,避免未知單詞的出現.

    在指針網絡進行單詞復制時,因為在AST中終結符包含程序的語義信息,非終結符包含程序的結構信息,根據非終結符不會在函數體中出現,僅需要從AST中的終結符復制的特點,TrGCN 使用了Children 注意力機制來計算Pc,公式如下:

    其中,hdec表示decoder 最后一層的特征向量,yast是AST 編碼器最后一層的特征向量,Mask是掩碼矩陣,將 βt中的非終結符置為-INF,僅計算終結符與目標語句之間的注意力分數.最后利用Softmax 來計算每個目標語句中單詞的概率.

    4 實驗評估

    本文在Java 函數命名任務中評估TrGCN,通過給定Java 方法的函數體,來預測函數名.先前的研究表明,這是一個很好的基準任務.因為其數據集選自Github開源的Java 項目,其中的函數可以被認為是準確的、相關的,函數體總體上都是完整的邏輯單元.同時我們會對函數名進行處理,將其轉化為一組子token 序列,例如getMaxNumber 可以被預測為序列get max number.其中目標序列的平均長度為3.

    4.1 數據集

    如表1所示,本文使用3 個不同規(guī)模的Java 數據集來評估模型,Java-small,Java-med,Java-large[6,9].

    表1 數據集統(tǒng)計

    Java-small 包含12 個大型的Java 項目,其中9 個項目作為訓練集,1 個項目作為驗證集,1 個項目作為測試集.該數據集包含約770 k 條樣例.

    Java-med 包含1000 個來自Github的星標Java 項目.其中799 個項目作為訓練集,100 個項目作為驗證集,96 個項目作為測試集.該數據集大約有4 M 條樣例.

    Java-large 包含9555 個來自Github的星標Java項目.其中8998 個項目作為訓練集,250 個項目作為驗證集,307 個項目作為測試集.該數據集大約有14 M條樣例.

    4.2 評估標準

    本文采取的評估標準是Allamanis[6]以及Alon[9]等先前工作使用的評估標準,對預測結果產生的subtokens 計算Precision、Recall和F1 值,其中目標語句大小寫不敏感.這個指標的主要思想是一個預測出的函數名的質量依賴于其組成的子單詞.例如,對于一個函數名countNumbers,如果預測出的結果為numbersCount,也認為它是精確的匹配;如果預測結果為count,那么它的Precision為100%,但是Recall值卻很低;如果預測結果為countRandomNumbers,那么它的Recall值為100%,但是Precision值很低.本文希望使Precision和Recall都盡可能的大,但是這顯然有些困難,所以使用F1 值來衡量這兩個標準.公式如下:

    其中,TP為預測正確單詞的數量,FP為預測錯誤單詞的數量,FN為沒有預測出正確單詞的數量.

    本文還使用了ROUGE[26]評估標準.該標準主要用于摘要的自動評價,通過比較機器自動生成的摘要與人工生成的摘要中重疊單元的數量,來評價機器自動生成摘要的效果.本文主要使用了ROUGE-2,ROUGEL.公式如下:

    其中,分母統(tǒng)計目標語句中N-gram的個數,而分子統(tǒng)計目標語句與預測出的語句共有N-gram的個數,本文將N設置為2 或L,其中L代表預測出的語句和目標語句的最長公共子序列.

    4.3 實驗設置和環(huán)境配置

    在TrGCN 模型中,AST 編碼器中encoder的數量為N=6,解碼器中decoder的數量為N=6.詞向量的維度和模型維度dvector=dmodel=128.隱藏層的維度dhid=512.在模型輸入中,本文嘗試使用參數學習的加權方式來融合character和word特征向量,其公式為其中vT為權值參數,b為偏差值.其中實驗得到的F1 值分別為53.46%、53.34%,沒有顯著差異(差異可能由于實驗的隨機性導致).推測原因為TrGCN 所使用的character-word 注意力機制的本質也是將word和character 特征向量通過加權的方式融合,而且在AST 編碼器中N(N=6) 個encoder 都會使用character-word 注意力機制,所以多一次加權融合對模型學習能力沒有明顯的影響.為了減少參數量,加快實驗運行速度,所以本文在模型輸入階段選擇了直接加和的方式對character和word 特征向量進行融合.在多頭自注意力機制中,原文將頭的數量設置為H=8,為了探究頭的數量對模型的影響,分別設置H=2,4,8進 行實驗.當H=2時,F1 值為51.25%;當H=4 時,F1 值為53.46%;當H=8時,F1為52.45%.可以看出F1 值隨著H的增大而提高.但是當H=8時,F1 值有一定幅度的下降,此時模型出現了過擬合現象.隨著H數量的增加模型的非線性學習能力逐漸變強,但是數量增加到一定值后非線性學習能力太強導致出現過擬合的現象,所以本文將頭的數量設置為4.

    TrGCN 在每一層后使用了dropout,來防止過擬合現象(其中包括注意力層,卷積層以及全連接層),其中dropout=0.3.實驗中每次選取的樣本數量為batch_size=256,迭代次數epoch=100,為了防止過擬合,使用了早停法,只要連續(xù)10 次迭代后F1 值沒有比當前最大F1值高,就停止訓練,early_stopping=10.為了防止模型出現梯度爆炸,TrGCN 把最終所有候選詞的概率截斷在[1e-10,1.0]之間.對于模型優(yōu)化,使用了Adam 優(yōu)化器[27],參數為默認值.

    所有實驗都運行在Linux(系統(tǒng)版本3.10.0-957.c17.x86-64,CPU Inter(R) Gold 6240@260 GHz 18 cores,兩塊顯存為12 GB的(NVIDIA)TITAN Xp 顯卡)系統(tǒng)下.

    4.4 實驗結果和分析

    在實驗中本文使用了6 個基準模型:

    (1)Allamanis 等提出ConvAttention 模型[6],該模型使用了帶有注意力機制的卷積神經網絡來預測函數名;(2) Alon 等提出Path+CRFs[7]模型,將句法路徑與條件隨機場相結合;(3) Alon 等提出的code2vec[8]模型;(4) Alon 等提出的code2seq[9]模型;(5) Tai 等提出的TreeLSTM 模型;(6) Vaswani 提出的Transformer[12]模型.

    表2顯示了函數命名任務在Java 數據集中的結果.從表中可以看出,TrGCN 在評估標準Precision、Recall和F1 以及3 個數據集中,幾乎都優(yōu)于所有基準模型.與ConvAttention對比,TrGCN 在F1 值提升約20.41%至21.8%,其原因可能為TrGCN 有效的提取了程序的結構信息.同樣在和TreeLSTM對比中發(fā)現,TrGCN在F1 提升約6.12%至23.49%.雖然TreeLSTM[28]也提取了程序的結構信息,但是我們認為基于圖的神經網絡模型可以豐富結構信息,具有更強的建模能力.在與當前使用廣泛模型code2seq[9]比較中發(fā)現,我們的模型在F1 值有著明顯提高,在數據集Java-small 提升了10.44%,在數據集Java-med 提升了4.7%.

    表2 在Precision,Recall,F1 以及Java-small,Java-med,Java-large 三個數據集與基準模型比較結果

    其原因可能不僅是圖卷積神經網絡提取到更加豐富的結構信息,而且character-word 注意力機制以及指針網絡可以有效的提升語義提取的效果.但是我們發(fā)現隨著數據規(guī)模的增大,我們模型提升效果逐漸減小;尤其在數據集Java-large中,Precision略低于code2seq模型,F1 僅提高了0.56%.可能的原因有:(1)隨著數據規(guī)模的增大,但是模型復雜度不變,模型很難進一步從龐大的數據中學習;(2)基于圖的神經網絡模型雖然有很強的建模能力,但是也具有模型復雜、較難訓練的特點,其中在3 個數據集訓練過程中,迭代一次分別需要40 分鐘、2 小時和4 小時;(3)實驗資源短缺,實驗室僅有兩塊12 G 顯存的(NVIDIA)TITAN Xp 顯卡,隨著數據量的增大,內存以及顯存無法滿足訓練要求,所以只能通過減小batch_size 來克服資源問題,但是batch_size的大小一定程度會影響實驗結果.

    同時,我們選擇了一個基于圖神經網絡的基準模型,Fernandes 等[10]提出的Sequence-GNNs 模型,該模型使用圖神經網絡來對程序進行編碼.表3說明我們的模型在評估標準F1,ROUGE-2 以及ROUGE-L 都優(yōu)于模型Sequence-GNNs.在code2seq 文章中提到,Sequence-GNNs 在數據集Java-large 上的F1 值低于code2seq,所以我們只使用了數據集Java-small 進行比較.

    表3 與Sequence-GNNs 在數據集Java-small的比較

    從表3中可以看出TrGCN 在F1 值比Sequence-GNNs 提升了2.1%,說明TrGCN 在不考慮預測結果單詞順序的情況下有較強的預測能力;在ROUGE-2和ROUGE-L 分別提高了0.7%、3.6%,可以看出TrGCN在考慮預測結果單詞順序的情況下同樣優(yōu)于Sequence-GNNs.所以TrGCN 模型在融合Transformer、圖卷積以及character-word 注意力機制后的預測能力的提高是有效的.

    5 結論與展望

    本文提出了一個TrGCN 模型來解決函數自動化命名任務.TrGCN 利用Transformer中的注意力機制來緩解模型訓練時遇到的長程依賴問題;利用圖卷積神經網絡提取更為豐富的結構信息,使得程序的特征向量信息更加完整;利用character-word 注意力機制以及指針網絡來豐富程序的語義信息.實驗結果表明,TrGCN的函數命名效果優(yōu)于其他基準模型.在后續(xù)的研究中,作者將使用不同的編程語言數據集,以及不同的代碼摘要任務來驗證方法的有效性.

    猜你喜歡
    特征向量代碼注意力
    二年制職教本科線性代數課程的幾何化教學設計——以特征值和特征向量為例
    讓注意力“飛”回來
    克羅內克積的特征向量
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    一類特殊矩陣特征向量的求法
    “揚眼”APP:讓注意力“變現”
    傳媒評論(2017年3期)2017-06-13 09:18:10
    EXCEL表格計算判斷矩陣近似特征向量在AHP法檢驗上的應用
    中華建設(2017年1期)2017-06-07 02:56:14
    中文字幕人妻熟人妻熟丝袜美| 最新中文字幕久久久久| 国产精品综合久久久久久久免费| 一个人看的www免费观看视频| 亚洲国产日韩欧美精品在线观看| 一级毛片aaaaaa免费看小| 日韩大尺度精品在线看网址| 精品人妻一区二区三区麻豆 | 午夜爱爱视频在线播放| 一级黄片播放器| 久久午夜亚洲精品久久| 高清毛片免费观看视频网站| 国产精品久久久久久av不卡| 校园人妻丝袜中文字幕| 国产精品女同一区二区软件| 国产黄色小视频在线观看| 欧美日韩乱码在线| 一个人免费在线观看电影| 成人午夜高清在线视频| 毛片一级片免费看久久久久| 一个人观看的视频www高清免费观看| 午夜福利在线观看吧| 日韩欧美精品免费久久| 亚洲欧美清纯卡通| 一本一本综合久久| 久久久色成人| 久久人人爽人人片av| 91精品国产九色| 人妻久久中文字幕网| 亚洲图色成人| 国产在视频线在精品| 又爽又黄a免费视频| 久久精品国产鲁丝片午夜精品| 内地一区二区视频在线| 日本三级黄在线观看| 九九爱精品视频在线观看| av黄色大香蕉| 亚洲在线观看片| 国产高清三级在线| 日本一本二区三区精品| 成人欧美大片| 中国美白少妇内射xxxbb| 日韩国内少妇激情av| 国产精品亚洲美女久久久| 天天一区二区日本电影三级| 不卡视频在线观看欧美| 三级经典国产精品| 亚洲国产欧洲综合997久久,| 少妇被粗大猛烈的视频| www.色视频.com| 黑人高潮一二区| 长腿黑丝高跟| 舔av片在线| 亚洲国产精品成人综合色| 亚洲精品影视一区二区三区av| 亚洲精品影视一区二区三区av| 午夜福利视频1000在线观看| 午夜爱爱视频在线播放| 色视频www国产| 人妻久久中文字幕网| 国产高清三级在线| 日韩欧美国产在线观看| 亚洲欧美日韩高清在线视频| 免费av观看视频| 国产精品乱码一区二三区的特点| 一级黄色大片毛片| 日本-黄色视频高清免费观看| 大型黄色视频在线免费观看| 亚洲精品日韩av片在线观看| 97人妻精品一区二区三区麻豆| 3wmmmm亚洲av在线观看| 国产精品av视频在线免费观看| 久久久久久久久久黄片| 国产一区二区激情短视频| 观看美女的网站| 欧美在线一区亚洲| 亚洲精品国产av成人精品 | 小说图片视频综合网站| 成年女人看的毛片在线观看| 日本五十路高清| 精品乱码久久久久久99久播| 久久久久久大精品| 露出奶头的视频| 欧美在线一区亚洲| 久久午夜亚洲精品久久| 亚洲成a人片在线一区二区| 一卡2卡三卡四卡精品乱码亚洲| 亚洲av电影不卡..在线观看| 精品一区二区三区av网在线观看| 天堂av国产一区二区熟女人妻| 亚洲欧美成人精品一区二区| 国产黄片美女视频| 两个人的视频大全免费| 日本五十路高清| 日本 av在线| 日韩欧美三级三区| 久久久久久大精品| av视频在线观看入口| 一本一本综合久久| 97超级碰碰碰精品色视频在线观看| 国产v大片淫在线免费观看| 日韩欧美国产在线观看| 国产激情偷乱视频一区二区| 亚洲性久久影院| 国产精品乱码一区二三区的特点| 亚洲成人av在线免费| 国产成人精品久久久久久| 欧美一区二区精品小视频在线| av天堂在线播放| 草草在线视频免费看| 亚洲18禁久久av| 免费大片18禁| 成人无遮挡网站| 成人鲁丝片一二三区免费| 国产日本99.免费观看| 一级av片app| 午夜久久久久精精品| 亚洲丝袜综合中文字幕| 久久久久久久久久成人| 在线天堂最新版资源| 波多野结衣高清无吗| 精品人妻视频免费看| 久久中文看片网| 99九九线精品视频在线观看视频| 日韩av在线大香蕉| 欧美色视频一区免费| 国产视频内射| 99久久成人亚洲精品观看| 午夜视频国产福利| 不卡视频在线观看欧美| 亚洲电影在线观看av| 人人妻,人人澡人人爽秒播| 久久久成人免费电影| 狂野欧美激情性xxxx在线观看| 亚洲aⅴ乱码一区二区在线播放| 麻豆国产av国片精品| 蜜桃亚洲精品一区二区三区| 国产精品电影一区二区三区| 免费看光身美女| 精品一区二区三区人妻视频| www日本黄色视频网| 99在线人妻在线中文字幕| 91在线精品国自产拍蜜月| 99久国产av精品国产电影| 91精品国产九色| 人妻丰满熟妇av一区二区三区| 亚洲精华国产精华液的使用体验 | 亚洲国产精品合色在线| 三级国产精品欧美在线观看| 男女下面进入的视频免费午夜| 国产国拍精品亚洲av在线观看| 最近中文字幕高清免费大全6| 毛片女人毛片| 特大巨黑吊av在线直播| 深夜精品福利| 综合色av麻豆| 亚洲精品影视一区二区三区av| 亚洲国产精品成人久久小说 | 内地一区二区视频在线| 国产伦精品一区二区三区四那| 黄色一级大片看看| 波多野结衣高清无吗| 精品午夜福利在线看| 毛片一级片免费看久久久久| 三级毛片av免费| 国产精品一区二区免费欧美| 婷婷亚洲欧美| 日日啪夜夜撸| 国产黄a三级三级三级人| 亚洲高清免费不卡视频| 色视频www国产| 小蜜桃在线观看免费完整版高清| 免费观看在线日韩| 欧美bdsm另类| 久久久精品94久久精品| 久久国内精品自在自线图片| 成年av动漫网址| 中文资源天堂在线| 精品熟女少妇av免费看| 少妇丰满av| 嫩草影院精品99| 午夜福利视频1000在线观看| 色av中文字幕| 在线国产一区二区在线| 成年女人看的毛片在线观看| www日本黄色视频网| 成人特级av手机在线观看| 日韩欧美精品免费久久| 成人鲁丝片一二三区免费| 亚洲丝袜综合中文字幕| .国产精品久久| 最新中文字幕久久久久| 我要搜黄色片| 好男人在线观看高清免费视频| 欧美另类亚洲清纯唯美| 亚洲中文日韩欧美视频| 亚洲欧美精品自产自拍| 国产伦精品一区二区三区视频9| 欧美性感艳星| 国内精品宾馆在线| 99久久成人亚洲精品观看| 黄色配什么色好看| 国产精品福利在线免费观看| 色综合站精品国产| 午夜福利视频1000在线观看| 亚洲国产精品久久男人天堂| 日韩,欧美,国产一区二区三区 | 又爽又黄无遮挡网站| 亚洲,欧美,日韩| 久久久午夜欧美精品| a级毛片免费高清观看在线播放| 一本一本综合久久| 国产aⅴ精品一区二区三区波| 国产精品1区2区在线观看.| www日本黄色视频网| 嫩草影院新地址| 成年女人毛片免费观看观看9| 中国美白少妇内射xxxbb| 午夜福利高清视频| 亚洲av成人av| 欧美一区二区国产精品久久精品| 最近在线观看免费完整版| 精品人妻一区二区三区麻豆 | 国产高清激情床上av| 在线观看美女被高潮喷水网站| 国产黄色视频一区二区在线观看 | 精品一区二区免费观看| 激情 狠狠 欧美| 最近2019中文字幕mv第一页| 一级毛片aaaaaa免费看小| 人妻夜夜爽99麻豆av| 精品乱码久久久久久99久播| 六月丁香七月| 中文字幕免费在线视频6| 伦精品一区二区三区| 日本五十路高清| 亚洲国产欧美人成| 99在线视频只有这里精品首页| 亚洲在线自拍视频| 国产老妇女一区| 久久精品国产亚洲av香蕉五月| 欧美在线一区亚洲| 极品教师在线视频| 国产成人一区二区在线| 国产精品久久久久久亚洲av鲁大| 床上黄色一级片| 久久国内精品自在自线图片| 老师上课跳d突然被开到最大视频| 一个人看的www免费观看视频| 男女下面进入的视频免费午夜| 日本爱情动作片www.在线观看 | 日韩人妻高清精品专区| 国产精品人妻久久久影院| 一本久久中文字幕| 久久久久精品国产欧美久久久| 国产毛片a区久久久久| 日韩精品有码人妻一区| 日韩成人av中文字幕在线观看 | 国产高潮美女av| 欧美精品国产亚洲| 久久久色成人| 免费人成在线观看视频色| 亚洲中文字幕一区二区三区有码在线看| 亚洲综合色惰| 亚洲高清免费不卡视频| 人妻久久中文字幕网| 两性午夜刺激爽爽歪歪视频在线观看| 男人舔奶头视频| 一级毛片久久久久久久久女| 在线看三级毛片| 国产探花极品一区二区| 日韩欧美精品免费久久| 一进一出抽搐动态| 中文字幕久久专区| 12—13女人毛片做爰片一| 久久久久久久午夜电影| 国产精品一二三区在线看| 久久久久久久久久成人| 亚洲美女黄片视频| 日本免费a在线| 亚洲av不卡在线观看| 久久鲁丝午夜福利片| 久久久成人免费电影| 最近手机中文字幕大全| 精品一区二区三区av网在线观看| 99久久久亚洲精品蜜臀av| 久久久久久国产a免费观看| 男人的好看免费观看在线视频| 国产aⅴ精品一区二区三区波| 国产极品精品免费视频能看的| 久久人人爽人人爽人人片va| 国产片特级美女逼逼视频| 少妇的逼水好多| 亚洲乱码一区二区免费版| 两个人视频免费观看高清| 精品日产1卡2卡| 在线天堂最新版资源| 亚洲无线在线观看| 91精品国产九色| 欧美激情国产日韩精品一区| 国产精品永久免费网站| 欧美日韩综合久久久久久| 国产精品人妻久久久影院| 亚洲成a人片在线一区二区| 国产精品亚洲一级av第二区| 免费不卡的大黄色大毛片视频在线观看 | 一级毛片我不卡| 亚洲av一区综合| 内地一区二区视频在线| 寂寞人妻少妇视频99o| 国产国拍精品亚洲av在线观看| 最近2019中文字幕mv第一页| 国产精品国产高清国产av| 免费av毛片视频| 春色校园在线视频观看| 日韩一区二区视频免费看| 日日啪夜夜撸| 亚洲七黄色美女视频| 国产精品一区二区免费欧美| 日韩人妻高清精品专区| 亚洲av一区综合| 久久久久精品国产欧美久久久| 国产高清视频在线播放一区| 国产一区二区激情短视频| 性欧美人与动物交配| 亚洲成人av在线免费| 国产精品三级大全| 欧美丝袜亚洲另类| 特级一级黄色大片| 久久久成人免费电影| 在线免费十八禁| 欧美日本视频| 美女免费视频网站| 中国美女看黄片| 啦啦啦韩国在线观看视频| av中文乱码字幕在线| 卡戴珊不雅视频在线播放| 亚洲第一电影网av| 99久久久亚洲精品蜜臀av| 一级毛片久久久久久久久女| 亚洲第一电影网av| 91久久精品电影网| 18禁在线播放成人免费| 一卡2卡三卡四卡精品乱码亚洲| 国产老妇女一区| 国国产精品蜜臀av免费| 蜜桃久久精品国产亚洲av| 你懂的网址亚洲精品在线观看 | 国产精品野战在线观看| 亚洲精品一区av在线观看| 在线观看午夜福利视频| 成人综合一区亚洲| 国产精品福利在线免费观看| 少妇裸体淫交视频免费看高清| 极品教师在线视频| 永久网站在线| 最近视频中文字幕2019在线8| 欧美高清性xxxxhd video| 亚洲国产高清在线一区二区三| 亚洲精品国产成人久久av| 一卡2卡三卡四卡精品乱码亚洲| 1000部很黄的大片| 国产精品女同一区二区软件| 丝袜喷水一区| 日产精品乱码卡一卡2卡三| 69av精品久久久久久| 精品一区二区三区av网在线观看| 蜜臀久久99精品久久宅男| 高清毛片免费观看视频网站| 午夜视频国产福利| 久久精品国产自在天天线| 老司机影院成人| 亚洲性久久影院| 五月玫瑰六月丁香| 欧美成人免费av一区二区三区| 国内精品美女久久久久久| 亚洲七黄色美女视频| 国产av麻豆久久久久久久| 久久亚洲精品不卡| 一进一出抽搐动态| 亚洲色图av天堂| 成人特级av手机在线观看| 亚洲国产精品国产精品| 日本免费一区二区三区高清不卡| 亚洲七黄色美女视频| 淫妇啪啪啪对白视频| 国产精品无大码| 99久国产av精品国产电影| 亚洲,欧美,日韩| 在线免费观看的www视频| 精品无人区乱码1区二区| 在线a可以看的网站| 偷拍熟女少妇极品色| 亚洲美女搞黄在线观看 | 最近2019中文字幕mv第一页| 99久久九九国产精品国产免费| 国产av不卡久久| 亚洲久久久久久中文字幕| 午夜福利高清视频| 欧美xxxx黑人xx丫x性爽| 久久久欧美国产精品| 亚洲av美国av| 老司机午夜福利在线观看视频| av在线蜜桃| 日日摸夜夜添夜夜爱| 国产精品野战在线观看| 男女下面进入的视频免费午夜| 午夜激情欧美在线| 女同久久另类99精品国产91| 俄罗斯特黄特色一大片| 精品一区二区三区人妻视频| 听说在线观看完整版免费高清| 国产成人a区在线观看| 男人舔女人下体高潮全视频| 国产黄色视频一区二区在线观看 | 在现免费观看毛片| 日韩,欧美,国产一区二区三区 | 精品福利观看| 国产一区二区激情短视频| 亚洲国产精品国产精品| 亚洲乱码一区二区免费版| 好男人在线观看高清免费视频| 一个人看的www免费观看视频| 听说在线观看完整版免费高清| 99热这里只有是精品50| 91av网一区二区| 国产美女午夜福利| 国产精品久久久久久久电影| 国产黄色小视频在线观看| 可以在线观看毛片的网站| 久久久久久久久大av| 麻豆av噜噜一区二区三区| 不卡一级毛片| 欧美成人一区二区免费高清观看| 亚洲精华国产精华液的使用体验 | 99热网站在线观看| 国产单亲对白刺激| 色哟哟哟哟哟哟| 久久午夜福利片| 一个人看视频在线观看www免费| 亚洲精品一区av在线观看| or卡值多少钱| 国产高清三级在线| 一区福利在线观看| 麻豆乱淫一区二区| 我的老师免费观看完整版| 亚洲精品影视一区二区三区av| 人人妻人人看人人澡| 黑人高潮一二区| 老司机福利观看| 亚洲av中文av极速乱| 男人和女人高潮做爰伦理| 黄色配什么色好看| 乱人视频在线观看| 欧美最黄视频在线播放免费| 精品国产三级普通话版| aaaaa片日本免费| 99久久久亚洲精品蜜臀av| 精品久久久久久久末码| 国产伦在线观看视频一区| 日韩三级伦理在线观看| 午夜福利成人在线免费观看| 日韩av不卡免费在线播放| 久久久色成人| 黄色日韩在线| 乱人视频在线观看| 美女被艹到高潮喷水动态| 日韩欧美一区二区三区在线观看| 成年免费大片在线观看| 在线观看av片永久免费下载| 欧美成人一区二区免费高清观看| 日韩,欧美,国产一区二区三区 | 久久久久国产精品人妻aⅴ院| 嫩草影院精品99| 国产精品野战在线观看| 99热只有精品国产| 九九爱精品视频在线观看| 日韩欧美精品v在线| 国产精品一区www在线观看| 欧美日韩一区二区视频在线观看视频在线 | 国产黄色视频一区二区在线观看 | 最新在线观看一区二区三区| av在线蜜桃| 在现免费观看毛片| 国产熟女欧美一区二区| av视频在线观看入口| 色5月婷婷丁香| or卡值多少钱| 赤兔流量卡办理| 少妇的逼好多水| 乱码一卡2卡4卡精品| 精品久久久久久久久亚洲| 麻豆精品久久久久久蜜桃| 日韩av不卡免费在线播放| 99在线视频只有这里精品首页| 午夜福利在线观看免费完整高清在 | 久久精品夜夜夜夜夜久久蜜豆| 夜夜夜夜夜久久久久| 欧美又色又爽又黄视频| 好男人在线观看高清免费视频| 在线天堂最新版资源| 美女内射精品一级片tv| 人妻制服诱惑在线中文字幕| av在线天堂中文字幕| 真人做人爱边吃奶动态| 国产av不卡久久| 人妻丰满熟妇av一区二区三区| 美女黄网站色视频| 久久久久精品国产欧美久久久| 搡女人真爽免费视频火全软件 | 免费无遮挡裸体视频| 日韩欧美免费精品| 国产成人一区二区在线| 99九九线精品视频在线观看视频| 看黄色毛片网站| 97在线视频观看| 午夜免费男女啪啪视频观看 | 成人美女网站在线观看视频| 久久中文看片网| 久久久a久久爽久久v久久| 在线免费观看的www视频| 国产单亲对白刺激| 淫妇啪啪啪对白视频| 精品久久久久久久久亚洲| 免费在线观看成人毛片| 永久网站在线| 毛片一级片免费看久久久久| 亚洲无线观看免费| 亚洲最大成人av| 看片在线看免费视频| 国产精品久久久久久亚洲av鲁大| 我要看日韩黄色一级片| 免费一级毛片在线播放高清视频| www日本黄色视频网| 一个人观看的视频www高清免费观看| 日日摸夜夜添夜夜添av毛片| 亚洲精品色激情综合| av黄色大香蕉| 97超视频在线观看视频| 国产久久久一区二区三区| 男人舔女人下体高潮全视频| 欧美成人免费av一区二区三区| 日韩中字成人| 蜜桃久久精品国产亚洲av| 菩萨蛮人人尽说江南好唐韦庄 | 日本五十路高清| 久久99热6这里只有精品| 国产男靠女视频免费网站| 色尼玛亚洲综合影院| 男人舔女人下体高潮全视频| 亚洲美女搞黄在线观看 | 内地一区二区视频在线| 亚洲美女视频黄频| 欧美国产日韩亚洲一区| 色吧在线观看| 中文字幕久久专区| 少妇的逼好多水| 在线国产一区二区在线| 亚洲最大成人av| 伦精品一区二区三区| 两个人视频免费观看高清| 国产白丝娇喘喷水9色精品| 国产成人影院久久av| 日本黄大片高清| 国产美女午夜福利| 国产男靠女视频免费网站| 国产亚洲欧美98| 久久人人精品亚洲av| 精品日产1卡2卡| 亚洲美女视频黄频| 十八禁国产超污无遮挡网站| 亚洲精品色激情综合| 精品国内亚洲2022精品成人| a级毛片免费高清观看在线播放| 中文资源天堂在线| 精品免费久久久久久久清纯| 国产白丝娇喘喷水9色精品| 18禁裸乳无遮挡免费网站照片| 亚洲欧美精品自产自拍| 国产精品一区www在线观看| av天堂在线播放| 色av中文字幕| 一进一出好大好爽视频| 国产精品一区二区免费欧美| 色哟哟·www| 国产精品亚洲美女久久久| 卡戴珊不雅视频在线播放| 欧美三级亚洲精品| 日本欧美国产在线视频| 日韩av不卡免费在线播放| 欧美3d第一页| 亚洲美女视频黄频| 99热这里只有是精品50| 久久久精品94久久精品| 欧美绝顶高潮抽搐喷水| 免费搜索国产男女视频| 全区人妻精品视频| 亚洲国产精品成人久久小说 | 日韩欧美精品v在线| 国产91av在线免费观看| 久久精品国产清高在天天线| 精品久久久久久久久久免费视频| 国国产精品蜜臀av免费| 特级一级黄色大片| 久久午夜福利片| 国产高清视频在线播放一区| a级毛色黄片| 日本 av在线| 久久人妻av系列| 亚洲精品国产成人久久av| 久久久久国产精品人妻aⅴ院| 午夜福利在线观看吧| 寂寞人妻少妇视频99o| 欧美色欧美亚洲另类二区| avwww免费|