AI 到底是怎么「想」的?

2023-05-16

640?wx_fmt=gif

本文作者:kurffzhou,腾讯 TEG 安全工程师

最近,Nature发表了一篇关于深度学习系统被欺骗的新闻文章,该文指出了对抗样本存在的广泛性和深度学习的脆弱性,以及几种可能的解决方法。安全平台部基础研究组自2017年来在对抗样本的生成及防守方法进行了深入研究,在这里团队通过在攻击方面的经验,分享我们对于防守对抗样本的一些思考,欢迎共同讨论。

深度学习在现实生活中的应用越来越广,然而越来越多的例子表明,深度学习系统很容易受到对抗样本的欺骗。那么,AI到底是怎么“想”的?为什么这么容易被骗?

要回答这个问题,我们首先看图片来做个小实验——

640?wx_fmt=png
图1
  • 图1左图:原始图片(图片来源:ImageNet数据集)

  • 图1中图:局部块保持像素的布局不变,但是整体图像的全局布局改变

  • 图1右图:局部块的像素的布局变化,但是整体图像的全局布局不变

对于这三幅图,神经网络会“认为”图1中图图1右图哪张图片更与图1左图是一致的呢?

毫无疑问,对于人的直觉来说,相对图1中图而言,图1右图更与图1左图一致,因为人类普遍倾向于对整体图像的布局进行识别。

然而我们通过统计实验发现,利用神经网络进行预测,图1中图的预测结果更加倾向于与图1左图的预测结果保持一致。可见,人与机器对图片的识别结果存在较大差异。

为了深入解释这种差异,下文首先对深度学习常用的模型进行简单介绍,再对深度学习模型所学习得到的特征进行可视化来解释深度学习模型在图像方面的优势,并通过相关实验研究深度学习模型到底在“想”什么、学习了什么。

1、深度学习常用模型以及特征可视化

深度学习常用模型之一的Alexnet模型:Alexnet模型通过多层卷积以及max-pooling操作,最后通过全连层得到最后预测结果,通过计算损失L来刻画网络预测结果与我们人工标注类别的差异大小,然后通过计算损失对可学习参数的梯度,通过梯度下降的方式来更新网络的权重,直到损失L下降到网络预测的结果与我们人工标注差异很小时,即神经网络通过对输入图像的层层卷积、max-pooling、全连等操作获得了正确的结果。

640?wx_fmt=png
图2:Alex网络结构(图片来源:文献9)

我们首先对多种不同类型的网络(AlexNet, ResNet等)的底层卷积核进行可视化,我们发现这些底层特征存在一定的共性:这些网络底层卷积核都在提取梯度、颜色等局部模式,对应图像中边和线等,如图3所示。

640?wx_fmt=png
图3:神经网络底层卷积核可视化(图片来源:链接11)

为了可视化高层特征,我们通过梯度上升优化目标函数的方式来直观认识高层特征所对应的直观图像。我们首先将图像初始化为0,并通过计算如图4中损失函数对图像的梯度,并不断修改图像像素就会得到图5中的可视化结果。这些图表示,要使得最终某类的分数最大,那么所对应的输入图像应该是什么样子,从图5中可以直观看出大概所属类别洗衣机、键盘、狐狸、鹅、鸵鸟以及轿车。如果我们换一种考虑特征多面性的可视化方法,就可以得到一个更加清晰的可视化图,从中可以更加清晰、直观地看出所属类别不同层次的特征,如图6所示。

640?wx_fmt=png
图4:神经网络高层特征的使用方法(图片来源:链接11)
640?wx_fmt=png

图5:高层特征可视化结果(图片来源:文献12)
640?wx_fmt=png
图6:不同层次特征可视化结果(图片来源:文献13)


2、深度学习模型到底学习了什么?

那么,深度学习模型到底都在学习什么呢?

首先输入一张正常图像,我们通过放大的方式来可视化神经网络看到的模式:首先将原始图片通过神经网络进行计算,得到当前图片的输出结果,然后用梯度上升的方式最大化该输出结果,利用如图4中所使用的方法,最后得到如图8所示的结果。

640?wx_fmt=png
图7:自然风景图片(图片来源:链接14)

从图中可以看出,神经网络对输入图像中的颜色和纹理进行了语义类别的放大,并产生对应的语义理解。例如,在山的区域,神经网络进行了建筑以及动物的解释,在天空区域有某些海洋生物的解释。但是由于这幅输入图像的这种解释所产生的特征响应并没有达到一定的程度,因此不会影响最后网络的识别,即神经网络不会把山那块区域识别成动物等。

640?wx_fmt=png
图8:DeepDream结果(图片来源:链接14)

从上述可视化的结果可以看出,神经网络是对纹理颜色等进行了语义的理解,但并没有显著对全局的形状等信息进行了理解,最近一系列工作都表明了这点,例如Geirhos, Robert等人指出,在ImageNet预训练的网络对纹理存在偏向,他们利用实验做了说明:如下图所示:

640?wx_fmt=png
图9:纹理实验(图片来源:文献2)

第一幅没有任何全局形状的信息,神经网络预测该幅图像为大象,对于第二幅图像预测为猫,对于第三幅图像,神经网络依然预测为大象,尽管人可能会识别出是一只猫,因此从这个对比实验中可以看出,神经网络更倾向于对纹理等信息进行了语义理解。

本文开头的小实验也进一步验证了这个假设:局部纹理的打乱,能够显著破坏神经网络的高层语义理解,但是全局结构的打乱并不能显著破坏神经网络的语义理解。


3、对抗样本生成

那么,一般是如何生成对抗样本呢?主要有两种方法:

1)基于梯度的方法:一般采用类似可视化的方法,只不过优化的目标不同,通过梯度更新的方式使得损失变大,并将生成纹理扰动叠加到原始图像上得到对抗样本。比较常用的方法有FGSM,BIM,基于momentum的方法,基于所有图片的梯度进行平滑的方法UAP,以及我们为了解决黑盒迁移性提出的TAP方法,这类方法速度较慢,一般通过多次迭代得到对抗样本,这类方法简单易扩展到其他任务。

2)基于神经网络的对抗样本生成方法:采用神经网络直接输出对抗样本,例如,AdvGAN、ATN等方法。这类方法的速度较快,但由于神经网络参数固定后生成的对抗样本会存在不丰富的问题。


4、如何避免“被骗”?

如Nature新闻中所说,不停的加入对抗样本训练能够获得对对抗样本的鲁棒性吗?我们给出答案是NO。对于对抗训练生成的模型,我们论文中的方法已经实验证明无法扛住低频扰动的对抗样本,文献3通过大量的实验也已证明,NIPS 2017对抗样本挑战赛中所使用的防守方法都无法防住包含低频扰动的对抗样本。

此外,底层图像去噪这种方法也是见效甚微。底层图像去噪只能防止高频的噪声的对抗样本,对于低频的噪声的对抗样本也无法完全抵抗。

通过在攻击方面的经验,团队对于对抗样本的防守方法有以下思考:

1)对特征值进行截断限制

对神经网络里使用truncated relu这类激活函数,对特征值进行截断处理,防止因为对抗样本造成的特征突变太大,影响网络最终预测结果。

2)设计模型更加关注图像整体结构,而不是纹理特征获得更强的鲁棒性

如Nature新闻中指出的,DNN和符号AI的结合,加入结构化的规则来融合整体的结构信息。

安全平台部公共平台中心基础研究组在对抗样本方面进行了深入的研究,并在计算机视觉顶级会议之一的ECCV 2018上发表对抗样本生成的论文,在NIPS 2017对抗样本挑战赛、极棒上海邀请赛等国内外大赛中均取得优异成绩。欢迎各位对对抗样本生成以及防守感兴趣的同学与我们交流。

参考文献:

1、Zhou, Wen, et al. "Transferable adversarial perturbations." Proceedings of the European Conference on Computer Vision (ECCV). 2018.

2、Geirhos, Robert, et al. "ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness." arXiv preprint arXiv:1811.12231 (2018).

3、Sharma, Yash, Gavin Weiguang Ding, and Marcus Brubaker. "On the Effectiveness of Low Frequency Perturbations." arXiv preprint arXiv:1903.00073 (2019).

4、https://www.nature.com/articles/d41586-019-03013-5

5、Krizhevsky, A., Sutskever, I., Hinton, G.E.: Imagenet classification with deep con- volutional neural networks. In: Advances in neural information processing systems. (2012) 1097–1105

6、Carlini, N., Wagner, D.: Towards evaluating the robustness of neural networks. arXiv preprint arXiv:1608.04644

7、Dong, Y., Liao, F., Pang, T., Su, H., Zhu, J., Hu, X., Li, J.: Boosting adversar- ial attacks with momentum. In: The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). (June 2018)

8、Shumeet Baluja and Ian Fis- cher. Adversarial transformation networks: Learn- ing to generate adversarial examples. arXiv preprint arXiv:1703.09387, 2017

9、Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.

10、http://www.image-net.org

11、http://cs231n.stanford.edu

12、Simonyan K, Vedaldi A, Zisserman A. Deep inside convolutional networks: Visualising image classification models and saliency maps[J]. arXiv preprint arXiv:1312.6034, 2013.

13、Nguyen A, Yosinski J, Clune J. Multifaceted feature visualization: Uncovering the different types of features learned by each neuron in deep neural networks[J]. arXiv preprint arXiv:1602.03616, 2016.

14、https://ai.googleblog.com/2015/06/inceptionism-going-deeper-into-neural.html

文中链接若打不开,可下方跳转到知乎查看收藏:

640?wx_fmt=jpeg

640?wx_fmt=gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AI 到底是怎么「想」的? 的相关文章

  • [GIT] git打标签tag和分支branch的区别

    tag代表了当前的提交点 xff0c 是个点 xff0c tag是当前提交点的一个记录 xff0c tag名字是不能重复的 xff0c 就代表了唯一的这个点 branch代表里新的支线 xff0c 是个线 xff0c 可以继续延展 当在某个
  • 从社区贡献者到加入核心团队,开源给他带来了这些变化

    作者 尔悦 采访嘉宾 谭雪峰 就在今年六月份 xff0c 又一位社区Contributor成功入职涛思数据 xff0c 他的身份也从TDengine的社区贡献者转变为专职的研发人员 在身份变换的同时 xff0c 他对于自身的成长和发展 对于
  • quartus Ⅱ 12.1 使用教程(4) uart 测试

    开发板使用的是EP4CE15F23C8 xff0c 软件使用的是quartus 12 1 xff0c 工程实现的功能是使用uart进行回环测试 顶层 module uart test i clk i rst n rx tx input i
  • WebRTC音视频同步

    这两篇文章 xff0c 可以直接去看 xff1b WebRTC音视频同步机制实现分析 https www jianshu com p 3a4d24a71091 WebRTC音视频同步分析 https blog csdn net lincai
  • qemu 虚拟机和宿主机之间传输文件

    实现简单的虚拟机和宿主机之间的文件传输 使用dd创建一个文件 xff0c 作为虚拟机和宿主机之间传输桥梁 dd if 61 dev zero of 61 opt share img bs 61 1M count 61 200格式化share
  • apt update和apt upgrade命令 - 有什么区别?

    在之前的文章中 xff0c 我们查看了APT 命令以及您可以使用包管理器来管理包的各种方法 这是一个总体概述 xff0c 但在本指南中 xff0c 我们暂停并重点关注 2 个命令用法 这些是apt update和apt upgrade命令
  • 48 个 Linux 面试问题和答案

    你在准备 Linux 面试吗 xff1f 我们准备了一些常见的 Linux 面试问题及其答案 如果您是初学者 xff08 具有一定的 Linux 知识或获得认证 xff09 或具有专业的 Linux 管理经验 xff0c 那么下面的问答有助
  • linux服务篇-Xinetd服务

    Xinetd 61 eXtended InterNET services daemon 扩展互联网服务守护进程 61 超级互联网守护进程 61 超级服务 xff0c xinetd是新一代的网络守护进程服务程序 xff0c 又叫超级Inter
  • 内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解

    https blog csdn net yangdashi888 article details 51356385 1 相机参数是三种不同的参数 相机的内参数是六个分别为 xff1a 1 dx 1 dy r u0 v0 f u0 v0为图像
  • C语言中的__FILE__、__LINE__和#line

    原文链接 xff1a http hi baidu com 419836321 blog item fcf5ceec484681cfb31cb1f7 html C语言中的 FILE 用以指示本行语句所在源文件的文件名 xff0c 举例如下 x
  • PX4 SITL MAVROS速度控制-用机身坐标系发布速度

    不改变PX4控制双闭环源码 xff0c 仅依靠mavros现有的速度控制和位置控制话题 xff0c 来实现旋翼圆形轨迹 1 位置控制 xff1a mavros setpoint position local 优点 xff1a 位置准确 xf
  • 用java简单的实现单链表的基本操作

    此代码仅供参考 xff0c 如有疑问欢迎评论 xff1a package com tyxh link 节点类 public class Node protected Node next 指针域 protected int data 数据域
  • 算法:海量日志数据,提取出某日访问百度次数最多的那个IP

    首先是这一天 xff0c 并且是访问百度的日志中的IP取出来 xff0c 逐个写入到一个大文件中 注意到IP是32位的 xff0c 最多有个2 32个IP 同样可以采用映射的方法 xff0c 比如模1000 xff0c 把整个大文件映射为1
  • 使用JUnit测试预期异常

    开发人员常常使用单元测试来验证的一段儿代码的操作 xff0c 很多时候单元测试可以检查抛出预期异常 expected exceptions 的代码 在Java语言中 xff0c JUnit是一套标准的单元测试方案 xff0c 它提供了很多验
  • BlockingQueue深入分析

    1 BlockingQueue 定义的常用方法如下 抛出异常特殊值阻塞超时插入add e offer e put e offer e time unit 移除remove poll take poll time unit 检查element
  • Qt对directshow的封装

    在源码路径中 xff1a qt everywhere opensource src 5 1 1 qtmultimedia src plugins directshow xff0c 有两个文件夹player 和 camera xff0c 1
  • 聚合类新闻客户端产品功能点详情分析

    产品功能点 功能 今日头条 百度新闻 鲜果 ZAKER 媒体订阅 个性化内容推荐 个性化订阅 RSS 视频新闻 评论盖楼 搜索新闻 离线下载 地方新闻 一键分享 收藏 推送 天气 夜间模式 线上活动 主题设置 感兴趣 语音读文章 字体设置
  • 聚合类新闻客户端初体验

    初体验的产品 xff1a 今日头条 ios3 6 百度新闻 ios4 4 0 ZAKER ios4 4 5 鲜果 ios3 8 7 中搜搜悦 ios4 0 1 Flipboard ios2 3 9 1 Flipboard 一款国外很火的ap
  • 聚合类新闻客户端的改进

    zaker和鲜果是最早的聚合类新闻产品 xff0c 前几年发展很快 xff0c 迅速占领了市场 xff0c 但近两年发展变得缓慢 xff0c 而今日头条自发布以来才两年 xff0c 用户量就迅速超过了zaker和鲜果 xff0c 使用起来非
  • 单例模式优缺点

    主要优点 xff1a 1 提供了对唯一实例的受控访问 2 由于在系统内存中只存在一个对象 xff0c 因此可以节约系统资源 xff0c 对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能 3 允许可变数目的实例 主要缺点 xff

随机推荐

  • 适配器模式优缺点

    优点 xff1a 1 将目标类和适配者类解耦 2 增加了类的透明性和复用性 xff0c 将具体的实现封装在适配者类中 xff0c 对于客户端类来说是透明的 xff0c 而且提高了适配者的复用性 3 灵活性和扩展性都非常好 xff0c 符合开
  • Oracle 的 Round函数

    Round函数用法 xff1a 截取数字 格式如下 xff1a ROUND xff08 number decimals xff09 其中 xff1a number 待做截取处理的数值 decimals 指明需保留小数点后面的位数 可选项 x
  • eclipse报错:Failed to load the JNI shared library

    电脑自装系统以来 xff0c 好久没有写java代码了 xff0c 所以一直也没用 eclipse IDE xff0c 今天将eclipse打开 xff0c 报了个问题 xff0c Failed to load the JNI shared
  • 10串口通信

    51单片机学习记录10 通信通信的的基本概念串口参数及时序图常用通信接口比较 51单片机串口介绍串口通信简介串口内部结构串口通信相关寄存器 串口通信实验串口向计算机发送数据计算机通过串口控制LED 通信 通信的的基本概念 通信的方式 通信方
  • 【已解决】zookeeper配置出现问题合集

    已解决 zookeeper配置出现问题合集 1 问题诊断 日志2 问题解决合集2 1zookeeper集群搭建报错 拒绝连接 2 2zookeeper集群搭建报错 没有找到主机路由 1 问题诊断 日志 1 进入文件查看日志 xff1a zo
  • noVNC 安装、配置与使用

    最近项目中使用到了远程终端操控 xff0c 从各方找到了noVNC这个神奇的家伙 xff0c 废话不多说 xff0c 开始介绍它的安装配置与使用 1 下载noNVC 好多渠道可以下载到noVNC xff0c 可以直接访问noVNC的官方网页
  • 360极速浏览器网页保护色

    方法一 xff1a 360浏览器的 扩展中心 有一个 绿色眼睛 的插件 xff1b 但是感觉一般 xff0c 不够彻底 xff1b 方法二 xff1a 360急速浏览器是基于开源Chrome浏览器修改的 xff0c 所以可以直接用Chrom
  • STM32基于FreeRTOS的多任务程序案例

    STM32基于FreeRTOS的多任务程序案例 一 初步了解FreeRTOS二 实验要求三 基于FreeRTOS的多任务程序案例四 参考链接 使用工具 野火stm32mini开发板 Keil uVision5 野火多功能调试助手 一 初步了
  • 【TcaplusDB知识库】TcaplusDB刷新tbus通道介绍

    命令 xff1a RefreshBusCfg 其中 xff0c 指进程的进程id xff0c 比如1 2 2 2 1 2 1 2等 xff0c 也支持简单的正则表达式 xff0c 比如RefreshBusCfg 1 2 2 那么只要匹配到1
  • Python中下划线的5种含义

    作者 xff1a 地球的外星人君 链接 xff1a https zhuanlan zhihu com p 36173202 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 分享一篇文章
  • ubuntu下 安装PX4编译环境

    最近博主的ubuntu虚拟机再次崩溃 xff0c 狠下决心将4G内存升级为12G 这样就可以给虚拟机多分配些内存了 鉴于前两次安装PX4环境出现了很多错误 xff0c 走了很多弯路 xff0c 没有一一记录下来 xff0c 所获甚少 故而借
  • PX4原生固件,position_estimator_inav解读

    INAV integrated navigation组合导航 对于多旋翼的位置姿态估计系统 xff1a PX4原生固件如今已经默认使用EKF2了 xff0c 另一种情况是 使用local position estimator attitud
  • FusionCharts Free (FCF) 版本 v3.0 更新细节

    版本 v3 0 更新细节 1 新的图表类型 滚动图 柱二维 xff0c 二维和区系的二维 xff0c 堆栈柱二维 xff0c 二维结合 xff0c 结合二维 xff08 双 Y 轴 xff09 样图 样条区域图 对数坐标图 二维多图单 组合
  • dwm-1000 测距总是出现 #define SYS_STATUS_RXPTO 0x00200000UL /* Preamble detection timeout */

    ex 05b ds twr resp 程序 总是出现 致使官方的代码 无法实现通讯 define SYS STATUS RXPTO 0x00200000UL Preamble detection timeout 需要着重修改参数
  • VNC远程桌面到linux,提示connection refused(10061)解决办法

    确认server端的VNC服务开启 xff0c service vncserver start xff0c 检测状态时ok的 ps ef grep vnc xff0c 来查看不是已经开启多个vnc连接 如果有多个vnc连接 xff0c 使用
  • uio驱动框架

    核心 xff0c 利用mmap进行映射 参考资料 uio 编写实例 1 https blog csdn net wujiangguizhen article details 12453253 uio编写实例 2 https blog csd
  • enum类型被intent所携带时需要注意的地方

    一般我们在Activity之间传递对象时多用Parcelable 比如写一个class xff0c 在这个class上标明implements Parcelable并实现接口就可以用Intent putExtra String Parcel
  • dump文件,windbg

    dump文件 xff0c 在VC中的调试还是非常非常非常有用的 xff0c 因为我们也不会经每一行代码都加上日志 xff0c 当然如果你愿意 xff0c 也可以每一行都加上日志 xff1b 在Windows上 xff0c 添加dump文件有
  • 使用PyQt4制作一个音乐播放器(1)

    1 前言 最近用Python给老妈写了一个处理excel表格的小软件 xff0c 因为自己平时用Python一般都是用在数值计算领域 xff0c 所以一般使用命令行的方式交互即可 但是给老妈用发现用命令行交互方式使用并不是很方便 xff0c
  • AI 到底是怎么「想」的?

    本文作者 xff1a kurffzhou xff0c 腾讯 TEG 安全工程师 最近 xff0c Nature发表了一篇关于深度学习系统被欺骗的新闻文章 xff0c 该文指出了对抗样本存在的广泛性和深度学习的脆弱性 xff0c 以及几种可能