Page 457 - 《软件学报》2026年第3期
P. 457
1420 软件学报 2026 年第 37 卷第 3 期
20. END FOR
21. END
3.3 文本卷积神经网络
TextCNN [36] 是一种基于卷积神经网络的文本分类模型, 其架构如图 4 所示, 在这个架构中, 输入的文本首先被
表示为一个词向量矩阵, 其中每一行代表一个词向量. 卷积层中将该词向量矩阵作为输入, 并使用不同大小的卷积
核对文本进行卷积操作, 并利用 ReLU 激活函数进行非线性变换, 得到多个特征图. 卷积操作可以捕获不同长度的
局部特征, 从而在不同的层次上提取文本的语义信息. 池化层对每个特征图进行最大池化操作, 从每个特征图中提
取出最重要的特征向量. 将池化层输出的特征向量拼接起来形成一个全面的特征向量, 并使用全连接层对其进行
归一化处理, 最终输出预测结果.
Fully
SWAP connected
DUP layer
SWAP
JUMP 2 classes
PUSH
Feature concatenation
Word embedding
Max-pooling
Convolutional layer Feature maps
图 4 TextCNN 模型架构
将第 3.2 节中得到的词向量矩阵 V adv 作为 TextCNN 卷积层的输入. TextCNN 使用的卷积是一维卷积, 卷积核
1:n
的宽度与词嵌入的维度 k (其中, k = 300) 一致; 高度 h 为每个窗口中词的数量, 受文献 [12] 与实验结果的启发, 最
终将卷积核的高度设置为 h ={2,3,4}, 所以卷积核 ω ∈ R k×h 具体可表示为:
{ }
ω ∈ R 300×2 ,R 300×3 ,R 300×4 (1)
V adv 是输入矩阵的第 i 行到第 i+h−1 行所组成的一个大小为 k×h 的窗口, 每个滑动窗口的卷积结果 C m 如下:
i:i+h−1 i
( )
m
C = f ω·V adv +b (2)
i i:i+h−1
其中, b ∈ R 是偏置项, f 是非线性函数. 对 n−h+1 个滑动窗口同时进行卷积操作, 最终生成一个特征映射 C m =
[ m m m ]
C ,C ,...,C . 池化操作是为了提取特征映射中的最大值. 于是将 C m 传入池化层, 并使用最大池化法提取重
1 2 n−h+1
C max , 如公式 (3) 所示:
要特征
C max = max(C m ) (3)
卷积核的数量决定输出的特征映射矩阵的维度. 假设卷积核的数量设置为 j 个, 再分别计算每个卷积核的最
大值, 最后将其叠加成一个完整的特征映射矩阵 M ∈ R m×j 作为输出向量. 此外, 可在全连接层之前添加 Dropout 操
作来防止模型过拟合. 最后, 在全连接层中使用 Softmax 函数对池化层的输出向量进行归一化处理, 将其转换为我
们想要的预测结果.
4 实验评估
4.1 数据集与评价指标
本文从 XBlock 中获得了已经标注的数据集, 其中包括 3 607 个非庞氏骗局智能合约和 296 个庞氏骗局, 两者
的比例大概为 10:1. 此数据集中提供了智能合约的字节码文件, 因此我们通过搭建 Go-Ethereum 客户端将字节码

