diff --git a/工作日志/2022年1月5日-一月份计划.md b/工作日志/2022年1月5日-一月份计划.md index 92ba0b3b..db1447ea 100644 --- a/工作日志/2022年1月5日-一月份计划.md +++ b/工作日志/2022年1月5日-一月份计划.md @@ -3,6 +3,7 @@ > 九月份找工作,十月份纠结选工作,十一月份沉浸在爱情当中,十二月份在爱情和学习中挣扎,终于在十二月末找打了学习和爱情的平衡方法。不再纠结于爱情是不是足够稳定,也不再纠结学习是不是足够认真,应该将爱情和学习彻底分开。在学习的时候好好学习,不要满脑子想着她,在谈恋爱的时候就好好工作,也别为学习焦虑担心。每天分配吃饭的时间休息时间腻在一块就好了。 > 另外毕业的事情确实该提上日程了。当初十月份选择冲一冲的话,估计两个月能完成毕设。现在到三月份估计也就只剩两个月了。所以时间还是非常紧迫的。接下来所有的工作必须按照计划执行了,不能再拖了。 +> 为什么我感觉,我刚开始做毕设呢,之前的任务量几乎为零,请问您在干什么呢?三个月做完毕设,写完毕设论文?可能吗。尽量吧。太难了。 ## 一月份 diff --git a/工作日志/毕业设计.md b/工作日志/毕业设计.md index 159b65fe..263a9536 100644 --- a/工作日志/毕业设计.md +++ b/工作日志/毕业设计.md @@ -39,20 +39,19 @@ -### 1.3 研究内容和研究目标 +### 1.3 研究内容和目标 1. 联邦隐私保护学习方案——差分隐私、同态加密 2. 联邦非独立同分布学习方案——联邦元学习 3. 面向恶意软件检测的,基于联邦元学习和增强隐私保护能力的联邦学习框架 论文贡献(到时候再展开或者压缩内容。) -1. 联邦元学习解决了非独立同分布问题。 +1. 图卷积神经玩过解决了恶意软件检测问题 + 1. 完成算法,结合了代码的语义信息和恶意软件的行为信息 + 2. 通过实验验证了高效性和准确性。 +2. 联邦元学习解决了非独立同分布问题。 1. 完成算法,理论上的证明和解释。 2. 完成了相关的实验验证。证明了算法的有效性。 -2. 联邦差分隐私解决了隐私保护问题 - 1. 完成算法,理论上证明了隐私的合理性。 - 2. 并通过实验验证了差分隐私对参数隐私的保护 - 3. 构建了联邦学习框架和恶意软件检测系统。 1. 实现了文章的两个算法和多个可选的算法。能够使用差分隐私保护用户的隐私,能够应对非独立同分布场景。 2. 一个恶意软件特征提取和分析工具.恶意软件检测系统包括特征提取模块和模型检测模块。 @@ -60,95 +59,93 @@ ### 1.4 论文结构 -## 第二章:理论基础和关键技术研究 +## 第二章:相关的理论和技术 ### 2.1 Android恶意软件检测的原理 -1. 安卓操作系统、安卓安全机制、安卓反编译工具和原理。自己做的部分不包括这些工具,而是利用这些工具提取的特征组合的样式。 -2. 特征提取的方法 -3. 各种神经网络模型 -4. 常见的恶意软件检测手段 +1. 安卓平台:安卓操作系统,安卓安全机制、安卓反编译工具和原理。 +2. 恶意软件的数据集介绍 +3. 特征提取的方法介绍:动态提取和静态提取。统计特征、线性特征、图特征。 +4. 恶意软件分类的方法:机器学习的方法、深度学习的方法、LSTM、CNN、行为图匹配等 +5. 恶意软件检测的方法:特征码识别,机器学习的方法检测 +### 2.2 图神经网络和图表示学习以及图嵌入相关的知识 -### 2.2 联邦学习原理与联邦平均算法 +1. 介绍图嵌入的目标 +2. 介绍图嵌入的先关算法deepwalk、node2vec、GNN、GCN等。 +3. 介绍每种方法的优点和缺点,以及和恶意软件检测的结合。 + +### 2.3 联邦学习原理与联邦平均算法 > 联邦学习的基础原理。联邦学习的实现方案。联邦学习的分类和数学表示。联邦学习中的开放问题。 -### 2.3 差分隐私的原理 +1. 介绍联邦学习的基础概念和分类 +2. 介绍联邦学习面临的几个大问题。以及常见的解决方案 + + -> 差分隐私、同态加密方法。实现了多方安全计算。 -### 2.4 非独立同分布原理 -> 非独立同分布的原理、表示方法(衡量标准)、产生的影响(论证非独立同分布是联邦学习解决问题中的关键问题。) -> 对非独立同分布的数学的描述。 ### 2.5 元学习原理(放到算法那一章) +## 第三章:基于图嵌入的恶意软件检测方法 -## 第三章:基于贡献度和元学习的联邦学习算法 - -### 3.1 数据处理 - -#### 2.5.1 恶意软件特征去提取 +### 3.1 恶意软件特征提取 > 恶意软件主要分类、恶意软件主要分类的依据和数学表示(接口、行为?)、恶意软件主要的检测方法利用到的原理。 > 哪些内容能够表现恶意软件 > 特征提取技术,特征降维方法。动静态特征的提取方法。 -* 静态特征的提取 -* 动态特征的提取 -* 特征降维方法 - -#### 2.5.2 恶意软件特征选取 - - -#### 2.5.3 非独立同分布数据集的设置 +* 权限、API特征的提取。包括对API特征的假设,恶意软件API特征的频率更高、且更加聚集。 +* 函数调用图特征的提取。包括对函数调用图的举例和描述 +* 词嵌入处理统计特征 +* 图嵌入处理行为特征 ### 3.2 神经网络模型 -### 3.2.1 某神经网络的原理 - -### 3.2.2 某神经网络的应用 +* 基于两种类型的特征,合并构建神经网络模型 +* 完成二分类和多分类的任务。 +* 介绍图卷积神经网络的原理 ------------------------------------------------------------------ -### 3.3 非独立同分布问题的建模 +### 3.3 实验验证 -### 3.4 基于贡献度的聚合方法 +#### 3.3.1 数据集设置 +#### 3.4.2 实验环境、实验设置 +#### 3.4.3 实验结果 +#### 3.4.4 实验结论 + + +## 第四章:基于贡献度和元学习的联邦学习框架 + +### 4.1 联邦图学习算法 + +### 4.2 非独立同分布问题的建模 + +* 非独立同分布原理 + * 非独立同分布的原理、表示方法(衡量标准)、产生的影响(论证非独立同分布是联邦学习解决问题中的关键问题。) + * 对非独立同分布的数学的描述。 + +* 数据处理和非独立同分布数据集的设置 + * 包括五种设置方法,模拟现实场景的非独立同分布问题 + +### 4.3 基于贡献度的聚合方法 * 能够衡量用户的贡献度的方法 +### 4.4 基于元学习的联邦学习方法 + +### 4.5 实验验证 + +## 第五章:恶意软件检测系统构建 + +### 5.1 系统总体设计 -### 3.5 基于贡献度和元学习的联邦学习算法 - - - - -## 第四章:基于差分隐私的联邦学习算法 - -### 4.1 威胁模型(数学公式推导) -### 4.2 基于差分隐私的联邦学习算法(算法,加入到整体的联邦学习框架中) -### 4.3 隐私保护的验证方法(从理论上证明,隐私保护的准确性) - -### 4.4 实验验证 -#### 4.4.1 实验环境 -#### 4.4.2 实验设置 -#### 4.4.3 实验结果 -#### 4.4.4 实验结论 - - - - - -## 第六章:恶意软件检测系统构建 - -### 6.1 系统总体设计 - - -### 6.2 系统详细设计 +### 5.2 系统详细设计 > 存在多个功能模块。按子系统讲解。需要起个合理的名字。 @@ -174,7 +171,7 @@ 4. 训练展示模块 5. 实验结果对比模块 -### 6.3 系统测试 +### 5.3 系统测试 > 列出测试过程中的关键指标。 1. 各个模块的功能测试 2. 系统整体的集成测试 diff --git a/机器学习/殷康龙/图表示学习/1 入门.md b/机器学习/殷康龙/图表示学习/1 入门.md deleted file mode 100644 index d59f66cc..00000000 --- a/机器学习/殷康龙/图表示学习/1 入门.md +++ /dev/null @@ -1,34 +0,0 @@ -# 入门 - - -## 简介 - -### 概念 -图表示学习,即图网络嵌入(Network Embedding)、图嵌入(Graph Embedding),用于得到网络中节点的低维、稠密、实值的向量表示,该向量表示形式在向量空间中具有表示以及推理的能力,可作为机器学习模型的输入,进而运用到网络问题领域下的常见任务中,如节点关系可视化任务、节点类别检测任务、链路预测以及社交网络发现等任务等。 - -简单来说,就是将图转换成特征向量。 - -### 目的 -图表示学习是表示学习技术的分支领域,表示学习的目的是要得到对数据的广义特征表示,如邻接矩阵是对网络结构的表示,链表是对列表结构的表示,TFIDF 特征是对文本的特征表示。向量表示可以通过多种手法得到,手法区分形式也不同,如最经典的以是否为监督学习进行区分,是否以只进行局部表示学习而区分,以及利用表示学习过程中所采用的方法是否为线性方法而区分。而图表示学习则专注于对图网络的表示,如图 2-8 所示,它能够以更加直观、高效的方式还原原始空间中节点的关系。 - -![](image/2022-01-04-10-01-00.png) - - -### 分类 - -表示学习方法包括四类主流方法:基于矩阵分解的方法、基于随机游走的方 -法、基于深度编码器的方法以及基于邻域聚合的方法。 - -* 基于矩阵分解的方法主要以矩阵分解的方式将原始的𝑛 × 𝑚大小的邻接矩阵降维表示成一个𝑛 × 𝑘大小的矩阵,其中𝑘 ≪ 𝑛,典型的有基于谱的图表示学习算法如拉普拉斯特征映射(Laplacian Eigenmaaps)算法[46],以及基于最优化的图表示学习算法如多维量表算法 MDS[47]等。 -* 基于随机游走的方法主要是将 word2vec 方法引入到图表示学习过程,通过在网络随机游走形成大量“语列”信息,再将“语列”使用自然语言处理下的经典方法进行向量表示学习,得到能够体现节点间相互关系的、稠密的向量表示,典型的有 DeepWalk 算法[48],node2vec 算法[49]等。 -* 基于深度自编码器[50]的方法主要是使用神经网络来构建图自编码器,从而压缩节点邻居信息,典型如 SDNE 算法[34]。 -* 而基于邻域聚合的方法主要是将卷积神经网络中的“卷积”运算拓展到了图网络,通过邻域聚合的方式在不规则的图网络中进行特征聚合,从而得到节点嵌入表示。 - - -基于矩阵分解的方法、基于随机游走的方法和基于深度编码器的方法都具有很大的局限性,它们的学习目标是从一个固定的图中得到节点的嵌入表示,因此旦图结构发生改变或者有新的节点出现,就必须重新训练模型得到节点的嵌入表示。基于邻域聚合的方法属于归纳式学习方法[51],它的学习目标是得到为每个节点产生能够进行嵌入表示的映射函数,所以即使节点之间的边关系发生改变或者有新的节点出现,它都能很快得到节点的嵌入表示而无须重新训练模型。 - -而恶意软件检测正是一个需要用已知预测未知的问题,给定已知的恶意样本和良性样本的相关行为数据,需要能够基于这些已知的数据去检测未知样本的性质,而未知样本中可能很可能含有未知节点以及在训练样本中未曾出现过的函数调用关系。因此,本文采用了基于邻域聚合的图表示学习方法对函数调用行为进行嵌入表示学习,并将得到的函数节点嵌入表示输入到分类模型进行端到端的训练,从而实现对恶意软件的检测。 - - - -![](image/2022-01-04-10-04-46.png) diff --git a/机器学习/殷康龙/图表示学习/1 图表示学习.md b/机器学习/殷康龙/图表示学习/1 图表示学习.md new file mode 100644 index 00000000..d6130b19 --- /dev/null +++ b/机器学习/殷康龙/图表示学习/1 图表示学习.md @@ -0,0 +1,93 @@ +# 图表示学习 + + +## 0 简介 + +### 概念 +图表示学习,即图网络嵌入(Network Embedding)、图嵌入(Graph Embedding),用于得到网络中节点的低维、稠密、实值的向量表示,该向量表示形式在向量空间中具有表示以及推理的能力,可作为机器学习模型的输入,进而运用到网络问题领域下的常见任务中。 + +简单来说,就是将图转换成特征向量。 + +图表示学习,结合了图和表示学习领域相关的知识。希望通过神经网络能够自动抽取图中的特征。 + +### 应用 + +* 节点分类 +* 链路预测 +* 图分类 +* 节点关系可视化 +* 社交网络发现 +* 图进化 + + + +### 目的 +图表示学习是表示学习技术的分支领域,表示学习的目的是要得到对数据的广义特征表示。如邻接矩阵是对网络结构的表示,链表是对列表结构的表示,TFIDF 特征是对文本的特征表示。 + +**向量表示**可以通过多种手法得到,手法区分形式也不同,如最经典的以是否为监督学习进行区分,是否以只进行局部表示学习而区分,以及利用表示学习过程中所采用的方法是否为线性方法而区分。而图表示学习则专注于对图网络的表示,如图 2-8 所示,它能够以更加直观、高效的方式还原原始空间中节点的关系。 + +![](image/2022-01-04-10-01-00.png) + + +### 分类 + +表示学习方法包括四类主流方法:基于矩阵分解的方法、基于随机游走的方法、基于深度编码器的方法以及基于邻域聚合的方法。 + +* 基于矩阵分解的方法主要以矩阵分解的方式将原始的𝑛 × 𝑚大小的邻接矩阵降维表示成一个𝑛 × 𝑘大小的矩阵,其中𝑘 ≪ 𝑛,典型的有基于谱的图表示学习算法如拉普拉斯特征映射(Laplacian Eigenmaaps)算法[46],以及基于最优化的图表示学习算法如多维量表算法 MDS[47]等。包括特征向量和SVD分解等,都可以提取图的特征值。 +* 基于随机游走的方法主要是将 word2vec 方法引入到图表示学习过程,通过在网络随机游走形成大量“语列”信息,再将“语列”使用自然语言处理下的经典方法进行向量表示学习,得到能够体现节点间相互关系的、稠密的向量表示,典型的有 DeepWalk 算法[48],node2vec 算法[49]等。 +* 基于深度自编码器[50]的方法主要是使用神经网络来构建图自编码器,从而压缩节点邻居信息,典型如 SDNE 算法[34]。 +* 而基于邻域聚合的方法主要是将卷积神经网络中的“卷积”运算拓展到了图网络,通过邻域聚合的方式在不规则的图网络中进行特征聚合,从而得到节点嵌入表示。 + +### 分类说明 +* 基于矩阵分解的方法、基于随机游走的方法和基于深度编码器的方法都具有很大的局限性,它们的学习目标是从一个固定的图中得到节点的嵌入表示,因此旦图结构发生改变或者有新的节点出现,就必须重新训练模型得到节点的嵌入表示。基于邻域聚合的方法属于归纳式学习方法,它的学习目标是得到为每个节点产生能够进行嵌入表示的映射函数,所以即使节点之间的边关系发生改变或者有新的节点出现,它都能很快得到节点的嵌入表示而无须重新训练模型。 + +* 而恶意软件检测正是一个需要用已知预测未知的问题,给定已知的恶意样本和良性样本的相关行为数据,需要能够基于这些已知的数据去检测未知样本的性质,而未知样本中可能很可能含有未知节点以及在训练样本中未曾出现过的函数调用关系。因此,本文采用了基于邻域聚合的图表示学习方法对函数调用行为进行嵌入表示学习,并将得到的函数节点嵌入表示输入到分类模型进行端到端的训练,从而实现对恶意软件的检测。 + + + +![](image/2022-01-04-10-04-46.png) + +## 1 基于矩阵分解的方法 + +### 特征向量 + + +### SVD分解 + + +### 拉普拉斯映射算法 + + +### 多维量表算法MDS + + +## 2 基于随机游走的方法 + +![](./image/随机游走.png) + +* 原理:随机游走+skipgram模型 + * 随机游走生成节点列,输入到skipgram模型当中,进行训练和学习。 +* 相关的模型和算法 + * deepwalk算法 + * LINE模型 + * PTE模型 + * node2vec模型 + * metapath2vec模型 + +![](./image/随机游走方法.png) + + +### deepwalk算法 + + + +### node2vec算法 + +## 3 基于深度自编码器的方法 + +### SDNE 算法 + +## 4 基于邻域聚合的方法 + + +### GNN算法 \ No newline at end of file diff --git a/机器学习/殷康龙/图表示学习/graph.ipynb b/机器学习/殷康龙/图表示学习/graph.ipynb new file mode 100644 index 00000000..e69de29b diff --git a/机器学习/殷康龙/图表示学习/image/随机游走.png b/机器学习/殷康龙/图表示学习/image/随机游走.png new file mode 100644 index 00000000..ad82f32a Binary files /dev/null and b/机器学习/殷康龙/图表示学习/image/随机游走.png differ diff --git a/机器学习/殷康龙/图表示学习/image/随机游走方法.png b/机器学习/殷康龙/图表示学习/image/随机游走方法.png new file mode 100644 index 00000000..3fde915d Binary files /dev/null and b/机器学习/殷康龙/图表示学习/image/随机游走方法.png differ