【AI】恶意文件静态检测模型检验及小结

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 在之前的博文中,博主提及过恶意文件静态检测的一种方法,并因此训练了模型,由于样本量巨大以及资源有限,训练一个 epoch 就需要一周多的时间,因此就先拿训练过一个 epoch 的模型来进行测试;

前言

在之前的博文 【AI】浅析恶意文件静态检测及部分问题解决思路 中,博主提及过恶意文件静态检测的一种方法,并因此训练了模型,由于样本量巨大以及资源有限,训练一个 epoch 就需要一周多的时间,因此就先拿训练过一个 epoch 的模型来进行测试;

拉取测试集

既然是要用来测试的样本,那么我们要尽可能的与训练集以及验证集中的样本不一样,因此,最好在一开始就做好分类,或者可以借用集合 set 的特性来整合;

我们先用训练集和验证集进行测试,伪代码如下:

with open('...pkl', 'rb') as f:
    train_data = pickle.load(f)

with open('...pkl', 'rb') as f:
    val_data = pickle.load(f)

train_data_ = [x[0] for x in train_data]
val_data_ = [x[0] for x in val_data]
zz = set(train_data_) - set(val_data_)
AI 代码解读

image.png

可以看到数量是完全相同的,因此训练集和验证集没有交集,即两者之间没有重复的样本;

接下来我们就开始拉去测试集,先从 Metadata_PE 表中去获取到 pathsha256 字段,然后在根据 sha256Event_PE_lab_22_11_24 表中进行查询 lab 标签;

image.png

这里的话,可以根据联合索引,直接从数据库中将全部数据导入,借用 pymsqlpandas 的包,在 python 中处理的速度比原生 SQL 要快不少,不过因为数据量较大,导入也消耗的一定的时间:

image.png

导入完成之后就是对数据进行处理:

new_sample_df = sample_df[sample_df['date'] >= pd.Timestamp('2022-12-01')]
pd.merge(new_sample_df, label_df, on="sha256")
AI 代码解读

这里的话,根据入库时间进行拉取,选取 2022-12-01 之后入库的样本:

image.png

因为这里只需要 exe 类型的文件,所以还需要再进行一次判断,样本量过大可采取多线程 ThreadPoolExecutor

if pefile.PE(path).is_exe():
    ...
AI 代码解读

全部完成之后,就是我们需要的测试集了;

image.png

检验模型

我们先将刚刚准备好的测试集进行导入:

test_loader = DataLoader(...)
AI 代码解读

然后传入到模型中,获取预测值,并计算损失:

# 特征值,模型的输入
test_x = batch_data[0].to(torch.float32).to(device)
# 预测值,模型的输出,两个值分别为黑白样本概率,如 [0.4052, -0.3841]
out = model(test_x)
# 标签值,用于计算损失
label = batch_data[1].to(device)
# 预测值与真实值之间的损失
loss = criterion(out, label.long())
# 一个 batch 的大小
val_size += label.size(0)
# 一个 batch 的损失,loss.item() 每个样本的平均损失
running_loss += loss.item() * label.size(0)
AI 代码解读

因为是检验模型,我们需要去评价模型的好坏,判断是否为恶意文件其实就是个二分类问题,这里的话使用混淆矩阵:

预测值0 预测值1
真实值0 TN FP
真实值1 FN TP
  • TN:真实值是0,预测值是0,即我们预测是 negative,预测正确了。
  • FP:真实值是0,预测值是1,即我们预测是 positive,预测错误了。
  • FN:真实值是1,预测值是0,即我们预测是 negative,预测错误了。
  • TP:真实值是1,预测值是1,即我们预测是 positive,预测正确了。

accuracy_score = (TP+TN) / (TP+TN+FP+FN):函数计算分类准确率,返回被正确分类的样本比例(default)或者是数量(normalize=False)。

精准率(查准率)和召回率(查全率)等指标对衡量机器学习的模型性能在某些场合下要比 accuracy 更好。

精准率:precision = TP / (TP+FP)。所谓的精准率是:分母为所有预测为1的个数,分子是其中预测对了的个数,即预测为正的样本中,实际为正的比例。

召回率:recall = TP / (TP+FN)。所谓的召回率是:所有真实值为1的数据中,预测对了的个数,也就是我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。

接下来,我们就根据预测值和标签值来进行计算:

preds_n = preds_sg
label_n = label_sg
# zes: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 
zes = np.zeros(label.size(0))
# ons: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
ons = np.ones(label.size(0))
preds_np = preds_n
label_np = label_n.reshape(-1)
train_correct01 = int(((preds_np == zes) & (label_np == ons)).sum())
train_correct10 = int(((preds_np == ons) & (label_np == zes)).sum())
train_correct11 = int(((preds_np == ons) & (label_np == ons)).sum())
train_correct00 = int(((preds_np == zes) & (label_np == zes)).sum())
FN += train_correct01
FP += train_correct10
TP += train_correct11
TN += train_correct00
accuracy_score = (TP+TN) / (TP+TN+FP+FN)
precision = TP / (TP+FP)
recall = TP / (TP+FN)
AI 代码解读

这里的话就用几个 batch 来略作检验:

image.png

其实看的出模型的效果挺差的;

排查问题

由上可知,我们训练了一段时间的模型效果并不理想,这是为什么呢?

看了一下过往的日志,发现一个问题:

image.png

一个 batch 里的所有预测值都是一样的?怪事;

再去看看自己训练集里的样本,发现是各不相同的:

image.png

那就是梯度消失导致了这一问题...

现在的一个解决方案就是更换模型,换成一个小模型,之后训练的效果如何,会更新在之后的博文里,敬请期待!

后记

以上就是 【AI】恶意文件静态检测模型检验及小结 的全部内容了。

本文介绍了拉取数据集的一些小细节,以及如何对模型进行检验,排查相关问题,希望对大家有所帮助!

目录
打赏
0
0
0
0
0
分享
相关文章
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
Step-Audio:开源语音交互新标杆!这个国产AI能说方言会rap,1个模型搞定ASR+TTS+角色扮演
Step-Audio 是由阶跃星辰团队推出的开源语音交互模型,支持多语言、方言和情感表达,能够实现高质量的语音识别、对话和合成。本文将详细介绍其核心功能和技术原理。
312 91
Step-Audio:开源语音交互新标杆!这个国产AI能说方言会rap,1个模型搞定ASR+TTS+角色扮演
NotaGen:中央音乐学院联合清华推出AI音乐生成模型,古典乐谱一键生成,音乐性接近人类!
NotaGen 是由中央音乐学院、北京航空航天大学、清华大学等机构联合推出的音乐生成模型,基于模仿大型语言模型的训练范式,能够生成高质量的古典乐谱。该模型通过预训练、微调和强化学习相结合的方式,显著提升了符号音乐生成的艺术性和可控性。
207 15
NotaGen:中央音乐学院联合清华推出AI音乐生成模型,古典乐谱一键生成,音乐性接近人类!
SpatialVLA:上海AI Lab联合上科大推出的空间具身通用操作模型
SpatialVLA 是由上海 AI Lab、中国电信人工智能研究院和上海科技大学等机构共同推出的新型空间具身通用操作模型,基于百万真实数据预训练,赋予机器人强大的3D空间理解能力,支持跨平台泛化控制。
49 7
SpatialVLA:上海AI Lab联合上科大推出的空间具身通用操作模型
阿里开源AI视频生成大模型 Wan2.1:14B性能超越Sora、Luma等模型,一键生成复杂运动视频
Wan2.1是阿里云开源的一款AI视频生成大模型,支持文生视频和图生视频任务,具备强大的视觉生成能力,性能超越Sora、Luma等国内外模型。
603 2
阿里开源AI视频生成大模型 Wan2.1:14B性能超越Sora、Luma等模型,一键生成复杂运动视频
ComfyUI-Copilot:阿里把AI助手塞进ComfyUI:一句话生成工作流,自动布线/调参/选模型,小白秒变大神!
ComfyUI-Copilot 是阿里推出的基于 ComfyUI 的 AI 智能助手,支持自然语言交互、智能节点推荐和自动工作流辅助,降低开发门槛并提升效率。
182 6
ComfyUI-Copilot:阿里把AI助手塞进ComfyUI:一句话生成工作流,自动布线/调参/选模型,小白秒变大神!
ENEL:3D建模革命!上海AI Lab黑科技砍掉编码器,7B模型性能吊打13B巨头
ENEL是由上海AI Lab推出的无编码器3D大型多模态模型,能够在多个3D任务中实现高效语义编码和几何结构理解,如3D对象分类、字幕生成和视觉问答。
68 9
ENEL:3D建模革命!上海AI Lab黑科技砍掉编码器,7B模型性能吊打13B巨头
文本、图像、点云任意模态输入,AI能够一键生成高质量CAD模型了
《CAD-MLLM: Unifying Multimodality-Conditioned CAD Generation With MLLM》提出了一种新型系统CAD-MLLM,能够根据文本、图像、点云或其组合生成高质量的CAD模型。该系统基于大型语言模型(LLM),通过多模态数据对齐和渐进式训练策略,实现了高效的CAD模型生成。作者创建了首个包含文本、图像、点云和命令序列的多模态数据集Omni-CAD,包含约450K个实例。实验表明,CAD-MLLM在多个任务上表现出色,特别是在点云条件生成任务中显著优于现有方法。未来工作将聚焦于提升计算效率、增加数据多样性及探索新模态。
181 18

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等