人工智能与漏洞识别-devign【1】(复现)

项目地址

https://github.com/epicosy/devign

查找相关资料

  • 了解AST抽象语法数
    •   https://zhuanlan.zhihu.com/p/102385477
      
  • 交叉熵损失函数(Cross Entropy)
    •   https://zhuanlan.zhihu.com/p/35709485
      
    • 模型采用了Cross Entropy,而没用Mean Squared Error (均方误差)。原因在于在分类问题中,使用sigmoid/softmx得到概率,配合MSE损失函数时,采用梯度下降法进行学习时,会出现模型一开始训练时,学习速率非常慢的情况
  • 粗粒度(忘了英文怎么讲了)
    • 例如,我有 100 个客户端,每个客户端都有自己的 100 个服务集。所以我必须提供 100100 的总服务。这是非常困难的。而不是我所做的是,我将适用于大多数客户端的所有公共服务标识为一个服务集并单独保留。例如,在 100 个服务中,50 个服务是常见的。所以我只需要管理 10050 + 50。

人工智能与漏洞识别-devign【1】(复现)_第1张图片

  • DFG

    • DFG 跟踪整个 CFG 中变量的使用。 数据流是面向变量的,任何数据流都涉及对某些变量的访问或修改。 DFG 边表示对相同变量的后续访问或修改。 它由图 2 中的橙色双箭头说明,并在边缘标注了所涉及的变量。 例如,参数 b 用于 if 条件和赋值语句。
  • AST

    • AST 是源代码的有序树表示结构。 通常,它是代码解析器用来理解程序基本结构和检查语法错误的第一步表示。 因此,它构成了生成许多其他代码表示的基础,AST V a s t V^{ast} Vast 的节点集包括本文中使用的其余三种代码表示的所有节点。 从根节点开始,代码被分解成代码块、语句、声明、表达式等,最后分解成形成叶节点的主要标记。 主要的 AST 节点如图 2 所示。所有方框都是 AST 节点,第一行有具体代码,并标注了节点类型。 蓝色框是 AST 的叶节点,紫色箭头表示子父 AST 关系。
  • CFG

    • CFG 描述了程序在执行过程中可能遍历的所有路径。 路径选择由条件语句决定,例如 if、for 和 switch 语句。 在 CFG 中,节点表示语句和条件,它们通过有向边连接以指示控制的转移。 CFG 边在图 2 中用绿色虚线箭头突出显示。特别是,流程从入口开始并在出口结束,并且在 if 语句处派生出两条不同的路径。
  • NCS

    • 为了对源代码的自然顺序进行编码,我们使用 NCS 边来连接 AST 中的相邻代码标记。 这种编码的主要好处是保留了源代码序列所反映的编程逻辑。 NCS 边由图 2 中的红色箭头表示,连接 AST 的所有叶节点。

一切的开始

环境配置

  • joern 1.1.172

https://github.com/joernio/joern/releases?after=v1.1.173

  • gensiom 3.8.1
  • 更新后的graph.sc
  • python 3.8
  • pytorch 1.9.1
  • ubuntu 20.04

问题

嵌入阶段(python -e)提示数据是旧文件
  • 删除w2v下所有内容
  • 删除input下所有内容
训练阶段显示找不到model文件夹
  • 在data目录下新建
由datamanager.py及其衍生的错误
  1. torch_sparse报错

https://blog.csdn.net/YPP0229/article/details/106328173/
网址教程不全面,可以上github看看解决方案,网址如下
https://github.com/rusty1s/pytorch_sparse

复现后结果

人工智能与漏洞识别-devign【1】(复现)_第2张图片

你可能感兴趣的:(深度学习,人工智能,神经网络,深度学习)