首页
社区
课程
招聘
[原创] 浅谈梯度分析与样本对抗:以vlm和ddddocr为例
发表于: 1天前 890

[原创] 浅谈梯度分析与样本对抗:以vlm和ddddocr为例

1天前
890

早在2018年,便有学者发现可以通过仅修改几个像素来干扰模型对输入的预测。

作为一篇社区博客,本文将谈论如何构造验证码,而不是如何解决验证码,以避免不必要的副面影响(构造验证码来保护在线业务几乎总是有利于保护网络安全环境的)。请勿恶意构造其他数据,或利用类似方法做对抗性滤波,避免对他人服务产生影响。

那么,闲话休提,让我们开始吧。

在开始谈论对抗性验证码构造前,我们必须了解验证码识别器的原理。

绝大多数的人工智能识别器,从ResNet到Yolo,都是基于卷积层的。卷积层是网络的核心,其运算并非数学严格定义上的卷积,而是互相关运算。给定一个二维输入张量X,其维度为高度H和宽度W,卷积核K为一个大小为kH乘以kW的张量。输出特征图矩阵中的每一个元素Y(i, j)是通过卷积核在输入图像上的滑动窗口内进行逐元素相乘并求和得到的。从数学角度看,这可以表示为在每一个空间位置上,输入局部区域向量与卷积核权值向量的内积再加上偏置项。由于同一个卷积核在整个输入空间上滑动,这种权值共享极大减少了参数数量,并利用了图像统计属性的局部平稳性。在卷积操作之后,通常会施加一个非线性激活函数,最常用的是修正线性单元ReLU,即函数f(x)等于max(0, x)。引入非线性的目的是为了使网络能够拟合复杂的非线性函数,否则多层线性卷积层在数学上等价于单层线性变换,将失去深层结构的表达能力。

这里,为了更教育意义,我们这里先自己训练一个甚至有一点过度简化(只有数字识别、没有位置检测和分割功能)的验证码识别器。在产业中,这一步可以直接替换为使用攻击者使用的模型进行防御。

我们先对mnist数据集进行一些简单的扰动,代码如下:

效果如图所示

图片描述

很多传统的验证码生成器就到此为止了(生成随机干扰点和线)。必须指出,尽管在今天看来,这种扰动是毫无意义的(任何合理的OCR都能无视这种扰动),但是它可以避免我们接下来的构建的识别器过度简单,从而不能正确地反应其他识别器的弱点。

我们可以随手(嗯,真的是随手,根本没怎么调优)设计一个CNN网络,比如说如图所示:

图片描述

代码如下:

并画上那么几秒钟进行一个简单的训练。五秒钟后,尽管模型的准确率只有95%,并且没有分割等功能,但是已经足够我们下一步使用了。

构造对抗性样本有很多种不同的方法,这里展示一种笔者前日设计的方法的变种:取预测中高置信度的部分作为优化目标,进行逐点干扰。这里,为了确保不被滤波器滤除,同时没有benchmark需求,我们选择随机构造扰动幅度,代码如下:

上述代码中A处是为了避免重复修改相同像素,B处是刚才提到的随机扰动,C处是为了避免生成的值不再是图像;这些点比较琐碎,但不正确的实现还是会导致效果不对。g+与g-的混合因子、试探方式与paper中存在微小出入,是为了更好地适配ddddocr进行的工程优化。那么,就,大功告成。

4339

图片描述

ddddocr-数字模式:识别失败


[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 2464
活跃值: (1775)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
技术有深度,语言很易懂。好文章
1天前
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
Saileaxh 技术有深度,语言很易懂。好文章
您好,我想求助,拜托怎么联系呀?
8小时前
0
游客
登录 | 注册 方可回帖
返回