系列文章目录

读论文系列(一)Automated software vulnerability detection with machine learning


文章目录

  • 系列文章目录
  • Keywards
  • Overall Architecture(整体架构)
  • Representation Learning for AST Nodes
    • Vector representations(embeddings) 向量表示的大致过程
    • 连续二叉树的提出
    • Coding Layer
    • Tree-based Convolutional Layer
    • Dynamic Pooling
    • The “Continuous Binary Tree” Model
    • Experiments
      • result

Keywards


抽象语法树(AST)
树卷积神经网络(TBCNN)Tree-Based Convolutional Neural Network
连续二叉树

Overall Architecture(整体架构)



AST节点首先被表示为一个分布式实值向量
tree-based convolution kernel 基于树的卷积核,在AST上滑动提取提取程序的结构信息
通过dynamic pooling来收集信息
加上一个隐藏层
输出层最后使用softmax

Representation Learning for AST Nodes


Vector representations(embeddings) 向量表示的大致过程



对于每个非叶节点p及其直接子节点 c1 …cn

叶子节点ci的权重矩阵

偏执bias

li是叶节点的权重系数

连续二叉树的提出


原因:非叶节点的子节点数目不同,导致叶子节点的权重矩阵不同
为了克服这一问题,引出连续二叉树
只有两个权重矩阵作为模型参数

Wi 是两个参数矩阵根据节点位置的线性组合

Coding Layer


在对所有的特征进行预训练后,将其丢进模型进行训练
对于叶子节点,只是将预训练阶段学习的向量表示
对于非叶节点p,它有两种表示法:在预训练阶段学习的表示法
编码的表示法
其公式如下

组合参数

Tree-based Convolutional Layer



我的理解是:
这个虚线三角形是一个特殊的卷积核,通过在树上滑动来提取特征(一般卷积是个矩阵的kernel,但在该模型中,则表示为树的深度,如图,深度设置为2)
滑动到底层没有那么多的节点的时候,就填0
输出

维数为卷积核的个数

Dynamic Pooling


在卷积之后,提取AST中的结构特征,并生成新的树。新树的形状和大小与原始树完全相同,但在不同的程序中有所不同。因此,提取的特征不能直接输入到固定大小的神经层。动态池用于解决这个问题。


最简单的方法可能是将所有特征汇集到一个向量中。我们称之为单向池。具体来说,每个维度的最大值取自基于树的卷积检测的特征。我们还提出了一种替代方案,即三向池,根据特征在AST中的位置,将特征池分成三个部分:顶部、左下方和右下方(图2b)。正如我们将从实验结果中看到的,简单的单向池和三向池一样有效。因此,我们在实验中采用了单向池。


合并后,特征完全连接到隐藏层,然后馈送到输出层(softmax)进行监督分类。通过动态池过程,整个AST的结构特征以短路径到达输出层。因此,可以通过反向传播有效地训练它们。

The “Continuous Binary Tree” Model


在我们的模型中,我们将任何子树视为“二叉”树,无论其大小和形状如何。也就是说,我们只有三个权矩阵作为卷积的参数,两个用于编码。我们称之为连续二叉树。

直接贴图
卷积的三个参数



Wconv 和三个参数的系数关系
参数计算


所有参数

Experiments

关于数据集部分,论文原文给了明确解释

result


读论文系列(二)Convolutional Neural Networks over Tree Structures for Programming Language Processing相关推荐

  1. 论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 重点:利用迁移学习三个网络常规化进行分类

    论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 摘要:我们探讨了迁移学习的重要性,并通过实验确定了在训练 ...

  2. 【读点论文】CMT: Convolutional Neural Networks Meet Vision Transformers

    CMT: Convolutional Neural Networks Meet Vision Transformers Abstract 视觉transformer已经成功地应用于图像识别任务,因为它 ...

  3. 论文阅读:Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类

    Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类 目录 Convolutional Neural Networ ...

  4. 论文笔记:Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering

    前言 初代频域GCN简单粗暴的将diag(g^(λl))diag(\hat{g}{(\lambda_l)})diag(g^​(λl​))变成了卷积核diag(θl)diag(\theta_l)diag ...

  5. 时间序列论文:Multi-Scale Convolutional Neural Networks

    论文地址:https://arxiv.org/abs/1603.06995 keywords: 时间序列处理; 深度学习; keras 针对现有时间序列分类方法的特征提取与分类过程分离,且无法提取存在 ...

  6. 【论文笔记】Convolutional Neural Networks for Sentence Classification

    Model \(x_i\in{\mathbb{R}^k}\) :第\(i\)个词的\(k\)维词向量表示 经过padding后长度为\(n\)个句子被表示为\(x_{1:n}\), 形状为\(n\ti ...

  7. Implementing Pruning Convolutional Neural Networks for Resource Efficient Inference in Mxnet

    一.代码分析: 参考pytorch代码对论文<Pruning Convolutional Neural Networks for Resource Efficient Inference> ...

  8. PATCHY-SAN - Learning Convolutional Neural Networks for Graphs ICML

    文章目录 1 背景 2 PATCHY-SAN模型 Node Sequence Selection - 根据节点排序选择要进行卷积的节点 Neighborhood Assembly - 找到Node的领 ...

  9. 【读点论文】Image Style Transfer Using Convolutional Neural Networks(将卷积特征图提取语义信息,融合内容和风格的做法)

    Image Style Transfer Using Convolutional Neural Networks 以不同风格呈现图像的语义内容是一项困难的图像处理任务.可以说,以前的方法的一个主要限制 ...

最新文章

  1. java的listroots_list(), listFiles(), listRoots() in Java
  2. 全面分析阿里数据中台,小白也能看懂 | CSDN原力计划
  3. 高斯计磁场测试仪磁力检测仪磁场测磁仪手持磁通计特斯拉计TD8620
  4. shared_ptr循环引用定置删除器
  5. 金山网盾3.5.3版本预升级公告
  6. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
  7. 【消息队列MQ】各类MQ比较
  8. mysql查所有值的长度_MySQL查询以获取列中所有值的字符长度?
  9. Go语言程序的数组初始化
  10. c++ inline 函数及变量
  11. linux下卸载之前安装的qt4和qt5
  12. electron 静默打印,及 打印机状态汇总
  13. urllib.request.urlopen()出现的程序超时假死问题
  14. 人脸识别图片base64编码,Java实现
  15. asp.net 打开服务器文件,aspnet打开服务器文件夹
  16. 【计算机网络】第一章:计算机网络概述
  17. 轻博客只是大众喜新厌旧的产物
  18. JSP cookie详解
  19. ace缓存扩展接口_Laravel框架怎样使用阿里云ACE缓存服务
  20. 小程序中如何使用在线字体图标iconfont

热门文章

  1. 第二届中国Rust开发者大会(RustChinaConf 2021~2022)线上大会正式开启报名
  2. 努力并非是人生的难题,如何做选择才是人类社会永远的课题!
  3. 64位服务器系统gho,win7gho
  4. fragments(二)
  5. 批量修改文件名字、不同的目录下
  6. 初探Azure Synapse
  7. 史上最全RabbitMq详解
  8. 黑群晖linux安装教程,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!
  9. 交通·未来第2期:深度交通感知: 从区域流量预测到在线OD预测
  10. Android Fragment遇到重叠问题的解决方案