Page 453 - 《软件学报》2026年第3期
P. 453
1416 软件学报 2026 年第 37 卷第 3 期
结构来进行庞氏骗局的检测. Liang 等人 [19] 提出了 PonziGuard 方法, 建立了全面的合约运行时行为图以准确描述
庞氏合约的行为. 然后将检测过程表述为图分类任务, 从而提高了整体效果. 然而, 这种动态分析操作码序列的方
式, 耗费了大量的资源和时间.
目前的检测机制对智能合约的分析主要在易获取的操作码序列上, 但庞氏骗局的行为是一个连续的过程, 不
应侧重于单个操作码的分析, 导致模型学习不充分, 而需要注重庞氏骗局操作码的结构特征与行为特征. 本文提出
的行为序列提取算法静态分析智能合约操作码, 构建操作码连通图, 最终深度遍历连通图获得保留结构信息和行
为信息的行为序列, 同时采用 Word2Vec 模型保留智能合约的语义信息.
2.2 对抗训练
近年来, 深度神经网络的对抗攻击问题引起广泛关注. 为增强深度学习模型对抗性鲁棒性, 人们提出了各种防
御措施, 其中对抗性训练被认为是最有效的实践方法之一 [20] . 对抗训练的思想是在每个训练迭代中用对抗性例子
来增加训练数据. 因此, 对抗性训练的模型在面对对抗性例子时比标准训练的模型表现得更正常, 相较于标准训练
的模型更具鲁棒性. Szegedy 等人 [21] 首次提出对抗样本的概念, 即通过向原始数据上添加扰动来构造对抗样本. 在
图像领域, 对抗训练通常能提高其鲁棒性, 但往往会导致泛化性下降. 而在语言领域, 对抗训练不仅提高了鲁棒性
还有助于提高泛化性能. 从数学上看, 对抗性训练被表述为一个最小-最大问题 [22] , 即寻找最坏情况下的最佳解决
方案. 因此, 对抗训练的主要挑战可看作如何解决内部最大化问题 [23] .
Miyato 等人在文献 [24] 中提出快速梯度符号法 (fast gradient sign method, FGSM) 和快速梯度法 (fast gradient
method, FGM), 可以让扰动的方向沿着梯度提升的方向, 也就意味着让损失增大到最大. FGSM 和 FGM 的区别在于
采用了不同的归一化方法, FGSM 是通过 sign 函数对梯度采取最大归一化, FGM 则采用的是 L2 归一化. 而这两种
方法都有个假设, 即损失函数是线性的或者是局部线性的. 如果不是 (局部) 线性的, 那梯度提升的方向就不一定是
最优方向. 为了解决这一线性假设问题, Madry 等人 [25] 提出了使用投影梯度下降法 (projection gradient descent,
PGD) 方法来求解内部的最大值问题. PGD 采用迭代攻击的方式, 相比于 FGSM 和 FGM 的单次迭代, PGD 进行多
次迭代, 每次走一小步, 并且每次迭代都会将扰动投影到预先设定的范围内. 但在一次前向后向计算过程中, 不能同
时利用计算出来的参数的梯度和输入的梯度. Shafahi 等人 [26] 在 PGD 的基础上提出 FreeAT, 对于每个 min-batch 的
样本会求 K 次梯度, 每次求得的梯度, 既用来更新扰动, 也用来更新参数, 从而优化了对抗训练的效率.
Zhang 等人 [27] 提出了 YOPO (you only propagate once) 算法, 简化了生成对抗扰动的计算方法. Jiang 等人 [28] 提
出了 SMART 算法, 使用平滑诱导对抗正则化方法来替代传统的极小-极大对抗训练算法. Li 等人 [29] 提出了一种令
牌感知虚拟对抗训练方法, 引入令牌级的归一化, 更细粒度地约束扰动. 但其可能会受到少数梯度模长较大的令牌
影响, 不利于神经网络的训练. Cheng 等人 [30] 采用分布归一化 (distribution normalization, DN) 和边际平衡 (margin
balance, MB) 两种策略对不同类别的分布进行正则化的方法, 以提高对抗鲁棒性. 其中 DN 归一化类别特征, 消除
易受攻击的类内方向. 而 MB 平衡不同类别之间的边缘, 使攻击更加困难. Zhao 等人 [31] 通过采用结合 Lyapunov 稳
定性和保守 Hamiltonian 神经流来构建图卷积神经网络, 显著提高了其抵御对抗性扰动的能力.
在智能合约领域, Han 等人 [32] 在智能合约异常检测中引入对抗样本的概念, 生成了新型蜜罐样本. 受此启发,
欲利用对抗训练算法提高庞氏骗局检测模型的鲁棒性, 并不需要在对抗训练时生成文本层面上的真实样本. 本文
将庞氏骗局智能合约的行为序列作为 TextCNN 的输入, 采用主流的对抗训练算法 PGD 进行对抗训练. PGD 的对
抗过程实际上分为内外两部分, 内部是在约束范围内找到使得损失函数最大的最佳扰动, 外部则是在此扰动的作
用下, 让模型拟合对抗样本, 提高模型的鲁棒性. 然而, PGD 总是按照固定步长寻找最佳扰动, 并且不能正确感知
优化趋势, 存在局部最优问题. 本文在 PGD 的基础上提出了动态步长投影梯度下降算法, 该算法步长不再固定, 且
结合两个方向来感知优化趋势, 更利于寻找最佳的扰动.
3 融合 TextCNN 和对抗训练的庞氏骗局检测方法
本文提出了一种基于动态步长投影梯度下降算法的庞氏骗局检测方法, 其整体架构如图 2 所示. 首先从智能

