研究人员采用AlexNet神经网络架构进行了实验。如下图,AlexNet的输入是一个224x224大小的单通道灰度图像,输出是一个大小为10的向量,分别代表10个类。
文章插图
为了验证该方法在处理大量恶意软件时的表现,本次试验采用了具有全连接架构的模型。如图,对于AlexNet而言,FC.0是一个具有4096个神经元的隐藏层——从卷积层接收6400个输入并生成4096个输出。因此,FC.0层的每个神经元有6400个连接权值,这意味着6400×3/1024=18.75KB的恶意软件可以嵌入到FC.0层的一个神经元中。 类似地,FC.1是一个有4096个神经元的隐藏层,它接收4096个输入并产生4096个输出,因此,4096×3/1024=12KB的恶意软件可以嵌入到FC.1层神经元中(FC.2是输出层,接收4096个输入后生成10个输出)研究人员对全连接层上有BN和没有BN的模型进行了性能比较。BN(Batch normalization,即批处理规范化)是一种加速深层网收敛的有效技术,BN层可应用于全连通层中的仿射变换和激活函数之间。经过大约100个阶段的训练,实验表明,在不使用BN的测试集上训练的模型,其准确率为93.44%,在使用BN的测试集上训练的模型,其准确率为93.75%。为了模拟真实场景,实验使用了公共存储库的真实恶意软件样本,并将这些样本上传到了VirusTotal,为了评估该方法的有效性,作者进行了以下实验设置,并尝试回答以下7个问题: 实验方案:使用恶意软件样本( sample)1-6分别替换FC.1层中的神经元,并在测试集上评估其性能。测试准确率在93.43%~93.45%之间。然后,从模型中提取恶意软件,并计算其SHA-1哈希值。哈希值保持不变。结果表明,该方法是可行的。实验方案:对于问题2~3,作者在AlexNet上用 sample1-6分别替换了FC.1层的5个、10个、...、4095个神经元;用 sample3-8替代FC.0层的有BN和无BN的AlexNet。
文章插图
FC.0中的每个神经元可以嵌入18.75KB的恶意软件。由于一个 sample最多可以替换FC.0和FC.1中的5个神经元,作者重复了替换过程,并用相同的样本替换各层中的神经元,直到替换的神经元数量达到目标。最后,作者得到了6组准确率数据,结果如上图所示。
文章插图
因此,可以得出结论:当替换较少数量的神经元时,对模型的准确率影响不大。对于带有BN的AlexNet,当替换FC.1中的1025个神经元时(25%,相当于嵌入了12MB的恶意软件),准确率仍然可以达到93.63%。当替换2050个神经元(50%)时,准确率为93.11%。当超过2105个神经元被替换时,准确率下降到93%以下。当超过2900个神经元被替换时,准确率下降到90%以下,准确率明显下降。当所有神经元都被替换时,准确率下降到10%左右(相当于随机猜测)。