读论文系列(二)Convolutional Neural Networks over Tree Structures for Programming Language Processing
系列文章目錄
讀論文系列(一)Automated software vulnerability detection with machine learning
文章目錄
- 系列文章目錄
- Keywards
- Overall Architecture(整體架構(gòu))
- Representation Learning for AST Nodes
- Vector representations(embeddings) 向量表示的大致過程
- 連續(xù)二叉樹的提出
- Coding Layer
- Tree-based Convolutional Layer
- Dynamic Pooling
- The “Continuous Binary Tree” Model
- Experiments
- result
Keywards
抽象語法樹(AST)
樹卷積神經(jīng)網(wǎng)絡(luò)(TBCNN)Tree-Based Convolutional Neural Network
連續(xù)二叉樹
Overall Architecture(整體架構(gòu))
AST節(jié)點首先被表示為一個分布式實值向量
tree-based convolution kernel 基于樹的卷積核,在AST上滑動提取提取程序的結(jié)構(gòu)信息
通過dynamic pooling來收集信息
加上一個隱藏層
輸出層最后使用softmax
Representation Learning for AST Nodes
Vector representations(embeddings) 向量表示的大致過程
對于每個非葉節(jié)點p及其直接子節(jié)點 c1 …cn
葉子節(jié)點ci的權(quán)重矩陣
偏執(zhí)bias
li是葉節(jié)點的權(quán)重系數(shù)
連續(xù)二叉樹的提出
原因:非葉節(jié)點的子節(jié)點數(shù)目不同,導(dǎo)致葉子節(jié)點的權(quán)重矩陣不同
為了克服這一問題,引出連續(xù)二叉樹
只有兩個權(quán)重矩陣作為模型參數(shù)
Wi 是兩個參數(shù)矩陣根據(jù)節(jié)點位置的線性組合
Coding Layer
在對所有的特征進行預(yù)訓(xùn)練后,將其丟進模型進行訓(xùn)練
對于葉子節(jié)點,只是將預(yù)訓(xùn)練階段學(xué)習(xí)的向量表示
對于非葉節(jié)點p,它有兩種表示法:在預(yù)訓(xùn)練階段學(xué)習(xí)的表示法
編碼的表示法
其公式如下
組合參數(shù)
Tree-based Convolutional Layer
我的理解是:
這個虛線三角形是一個特殊的卷積核,通過在樹上滑動來提取特征(一般卷積是個矩陣的kernel,但在該模型中,則表示為樹的深度,如圖,深度設(shè)置為2)
滑動到底層沒有那么多的節(jié)點的時候,就填0
輸出
維數(shù)為卷積核的個數(shù)
Dynamic Pooling
在卷積之后,提取AST中的結(jié)構(gòu)特征,并生成新的樹。新樹的形狀和大小與原始樹完全相同,但在不同的程序中有所不同。因此,提取的特征不能直接輸入到固定大小的神經(jīng)層。動態(tài)池用于解決這個問題。
最簡單的方法可能是將所有特征匯集到一個向量中。我們稱之為單向池。具體來說,每個維度的最大值取自基于樹的卷積檢測的特征。我們還提出了一種替代方案,即三向池,根據(jù)特征在AST中的位置,將特征池分成三個部分:頂部、左下方和右下方(圖2b)。正如我們將從實驗結(jié)果中看到的,簡單的單向池和三向池一樣有效。因此,我們在實驗中采用了單向池。
合并后,特征完全連接到隱藏層,然后饋送到輸出層(softmax)進行監(jiān)督分類。通過動態(tài)池過程,整個AST的結(jié)構(gòu)特征以短路徑到達輸出層。因此,可以通過反向傳播有效地訓(xùn)練它們。
The “Continuous Binary Tree” Model
在我們的模型中,我們將任何子樹視為“二叉”樹,無論其大小和形狀如何。也就是說,我們只有三個權(quán)矩陣作為卷積的參數(shù),兩個用于編碼。我們稱之為連續(xù)二叉樹。
直接貼圖
卷積的三個參數(shù)
Wconv 和三個參數(shù)的系數(shù)關(guān)系
參數(shù)計算
所有參數(shù)
Experiments
關(guān)于數(shù)據(jù)集部分,論文原文給了明確解釋
result
總結(jié)
以上是生活随笔為你收集整理的读论文系列(二)Convolutional Neural Networks over Tree Structures for Programming Language Processing的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVa-1583 生成元
- 下一篇: QE画声子谱