本文由  网易云发布。

“知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充《论衡·实知》。人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道。“知物由学”希望通过一篇篇技术干货、趋势解读、人物思考和沉淀给你带来收获的同时,也希望打开你的眼界,成就不一样的你。当然,如果你有不错的认知或分享,也欢迎通过邮件(zhangyong02@corp.netease.com)投稿。

以下是正文:

对于很多计算机程序,在黑客眼中,他们不是想享受这些程序提供的服务,而是想如何利用这些程序获得一些非法的收入。带黑帽子的黑客通常会利用程序中最微小的漏洞进入系统,窃取数据并造成严重破坏。

100%真正的黑客

但由深度学习算法驱动的系统应该可以避免人为干扰吧?黑客如何通过神经网络训练TB量级的数据?

但,事实证明,即使是最先进的深层神经网络也很容易被愚弄。用一些小技巧,你可以强迫神经网络显示你想要的任何结果:

我修改了这张猫的图片,以便它被认为是烤面包机。

因此,在你启动一个由深度神经网络打造的新系统之前,你需要了解如何攻破它们以及如何保护自己免受攻击。

神经网络作为安全警卫

假设我们运行了一个像eBay这样的网站,在我们的网站上,我们希望阻止人们销售违禁物品,例如活动物甚至一些野生的保护动物。

如果你拥有数百万级别用户,那么实行这些规则就很困难。你可以聘请数百人手工审查每一个拍卖物品,但这意味着很高的成本。相反,我们可以使用深度学习来自动检查违禁物品的拍卖照片,并标记违反规定的拍卖照片。

第一步,我们需要从这个场景中带着问题走出来,我们可以发现,这个问题其实就是一个典型的图像分类问题。为了达到目的,我们将训练一个深层卷积神经网络,告诉什么是违禁物品什么是合法的物品,然后我们将它运行我们网站上,来保证网站规则能够有效的实施。

首先,我们需要一个过去拍卖清单的数千个图像的数据集。我们需要合法和违禁物品的图像,以便我们可以训练神经网络来区分它们:

为了训练神经网络,我们使用标准的反向传播(BP)算法。我们通过一个图片,传递该图片的预期的结果,然后遍历神经网络中的每个图层,稍微调整它们的权重以使它们在为该图片生成正确输出方面表现的更好一些:

我们用数千张照片重复数千次,直到模型能够准确地产生正确的结果。最终我们可以打造一个可靠的用于图像分类的神经网络:

注意:阅读下文你需要了解卷积神经网络的原理,如果你想了解卷积神经网络如何识别图像中的对象,请参阅第3部分[1]。

但事情并不像看起来那么简单...

卷积神经网络是用于图像分类的最受欢迎的模型。无论它们出现在图像中的哪个位置,它们都可以识别复杂的形状和图案。在许多图像识别任务中,它们的性能可以超过常人的判断。

有了这样的强大的模型,将图像中的几个像素更改为更暗或更亮应该不会对最终预测产生很大影响吧?当然,它可能会稍微改变最终的预测,但它不应该将图像从“违禁”转换为“合法”。

我们期望的是:对输入照片的小改动只会对最终预测产生微小的变化。

但在2013年的一篇名为神经网络的神奇属性[2]的论文中,人们发现这并非总是如此。如果你确切的知道改变那些像素点可以使图像最大可能的发生改变,你就可以故意迫使神经网络对给定的图片做出错误的预测,而图片的外观改变的并不是很多。

这意味着我们可以有意地制作一张图片,该图片显然是一种被禁止的项目,但却完全愚弄了我们的神经网络:

为什么会这样?机器学习分类器的工作原理是找出它试图分辨的东西的分界线。以下是在图表上显示的一个简单的二维分类器的示例,该分类器将红点(合法)与绿点(违禁)分开:

现在,该分类器的可以做到100%的正确率。找出一条线将红点和所有绿点完美的分开。

但是,如果我们想诱使它将一个红点误分类为绿点,该怎么办?

如果我们在边界旁边的红点的Y值上添加一小部分,我们可以将它简单地推到绿色区域:

因此,要欺骗一个分类器,我们只需要知道从哪个方向来推动点越过线。如果我们不想过于狡猾,理想情况下我们会尽可能少地提出这一点,但理想总归是理想情况,黑客通常不会再理想情况下进入。

在使用深度神经网络的图像分类中,我们所分类的每个“点”是由数千个像素组成的整个图像。这给了我们数以千计的可能值,我们可以通过调整这些数值来突破决策线。如果我们确保以对人类来说不太明显的方式调整图像中的像素,我们可以欺骗分类器而不会使图像看起来被改动。

换句话说,我们可以对一个物体进行真实拍摄,并且非常轻微地改变像素,以便图像可以完全欺骗神经网络,使其认为图像是其他东西:

把一只猫变成烤面包机,基于网络的Keras.js演示的图像检测结果

如何欺骗神经网络

我们已经讨论过训练神经网络来分类照片的基本过程:

  1. 利用照片训练神经网络。
  2. 检查神经网络的预测,看看其性能。
  3. 使用反向传播调整神经网络中每层的权重,使最终预测逐渐接近正确答案。
  4. 用几千张不同的训练照片,重复步骤“1-3”。

但是,如果不是调整神经网络层的权重,而是调整输入图像本身,直到我们得到我们想要的答案为止呢?

那么让我们把已经训练好的神经网络再训练一遍。但让我们使用反向传播来调整输入图像而不是神经网络图层:

以下是新算法:

  1. 利用照片训练神经网络。
  2. 检查神经网络的预测,看看其性能。
  3. 使用反向传播调整使用的照片,使最终预测逐步接近我们想要得到的答案。
  4. 用相同的照片重复步骤“1-3”几千次,直到网络给到我们理想的答案。

在这之后,我们将拥有一个图像,可以在不改变神经网络内部的任何东西的情况下愚弄神经网络。

唯一的问题是,通过随意调整单个像素,对图像的更改可以太过明显,以至于你会看出它们。他们会出现变色斑点或波浪区域:

你可以看到猫周围的绿色变色斑点和白色墙壁上的波浪图案。

为了防止出现这些情况,我们可以为我们的算法添加一个简单的约束。被黑客入侵的图像中的任何一个像素都不能从原始图像中改变很多,比如0.01%。这迫使我们的算法以一种愚弄神经网络的方式来调整图像,而不会让它看起来与原始图像太不同。

下面是我们添加该约束时生成的图像的样子:

即使这幅图像看起来与我们之前的一样,它仍然愚弄了神经网络!

Let’s Code It!

首先我们需要一个预先训练的神经网络来愚弄。我们不是从头开始训练,而是使用Keras,Keras是深受欢迎的深度学习框架,它带有几个预先训练好的神经网络[3]。我们将使用Google的Inception v3深度神经网络的副本,该网络已经过预先训练,可以检测1000种不同类型的对象。

Keras中的基本代码使用这个神经网络来识别图片中的内容。在运行它之前,确保你已经安装了Python 3和Keras(详细代码获取见文末):

当我们运行它时,它正确地检测到波斯猫的形象:

$ python3 predict.py
This is a Persian_cat with 85.7%confidence!

现在让我们开始调整图像,直到它能够愚弄神经网络,让神经网络认为这只猫是一个烤面包机。

Keras中没有内置的方式来训练输入图像,所以我不得不手动编码训练步骤。

代码如下(详细代码获取见文末):

图为部分代码

如果我们运行它,它最终会生成一个可以欺骗神经网络的图像:

$ python3 generated_hacked_image.py
Model's predicted likelihood that theimage is a toaster: 0.00072%
[ .... a few thousand lines of training....]
Model's predicted likelihood that theimage is a toaster: 99.4212%

注意:如果你没有GPU,则可能需要几个小时才能运行。如果你确实已经使用Keras和CUDA正确配置了GPU,则运行时间不应超过几分钟。

现在让我们再次测试通过原始模型运行鉴别这张经过技术更改的图片:

$ python3 predict.py
This is a toaster with 98.09%confidence!

我们成功的欺骗了神经网络,认为猫是烤面包机!

我们可以用黑客技术生成图像做些什么呢?

我们这样篡改图像被称为“产生敌对的例子”。我们故意制作一段数据,以便机器学习模型将其误分类。这是一个巧妙的技巧,但为什么在现实世界中这很重要?

研究表明,这些被黑客篡改的图像具有一些令人惊讶的特性:

  1. 即使将它们打印在纸上,被篡改的图像仍然可以欺骗神经网络!因此,你可以使用这些被黑客篡改的图像来欺骗物理相机或扫描仪,而不仅仅是直接上传图像文件的系统。
  1. 欺骗一个神经网络的图像往往也会欺骗其他神经网络,如果他们接受类似数据的训练,就会完全不同的设计。

所以我们可以用这些被黑客篡改的图片做很多事情!

但是,我们如何创建这些图像仍然存在很大的局限性!因为我们要想攻击就需要直接访问神经网络本身。因为我们实际上生成图片的过程,就需要神经网络的参与,所以我们需要它的一个副本。在现实世界中,没有公司会让你下载他们训练的神经网络的代码,所以这意味着我们不能攻击他们吗?

NO!研究人员最近表明,你可以训练自己的神经网络来反映另一个神经网络[4],通过探测它来了解它的行为。然后你可以使用你的替代神经网络来生成被黑客入侵的图片,这些图片仍然会欺骗原始网络!这被称为黑盒攻击。

黑盒攻击的应用是无限的,这里有一些例子:

  1. 自动驾驶汽车看到停车标志误认为绿灯,这可能会导致车祸!
  2. 欺骗内容过滤系统让非法内容通过。
  3. 欺骗ATM检查扫描仪,例如支票上的笔迹。

而这些攻击方法并不仅限于图像。你可以使用相同类型的方法来处理其他类型数据的分类器。例如,你可以欺骗病毒扫描程序将你的病毒识别为安全代码!

我们如何保护自己免受这些攻击?

所以现在我们知道有可能存在欺骗神经网络(以及其他的机器学习模型)的事情,我们又该如何防御呢?

简短的回答是,没有人知道如何完美防御。防止这些类型的攻击仍然是一个正在进行的研究领域。了解最新该领域发展的最好方法是阅读Ian Goodfellow和Nicolas Papernot的cleverhans博客,他们是该领域最有影响力的两位研究人员。

但是到目前为止,我们知道一些关于这方面的情况:

  1. 如果你拥有大量被黑客篡改的的图像,并将其纳入未来的训练数据集中,这似乎会使你的神经网络更能抵御这些攻击。这就是所谓的对抗训练,这可能是现在考虑采用的最合理的防御方法。
  2. 还有另一种有效的方法称为Defensive Distillation[5],你可以训练第二个模型来模拟你的原始模型,但是这种方法是全新的而且相当复杂的。
  3. 几乎所有研究人员迄今为止尝试过的其他想法都未能有效预防这些攻击。

由于我们还没有最终防御方案,所以我们应该考虑到底如何确定使用神经网络的场景,以便减少这种攻击会对你的业务造成损害的风险。

云安全(易盾)基于网易20年技术积累及安全大数据,为互联网各行业提供反垃圾、验证码、注册保护、登录保护、活动反作弊、应用加固、DDoS 防护等整体安全解决方案,全程提供完善的技术支持,助力产品建立安全防护体系。

原文地址:http://mp.weixin.qq.com/s/RV3jUJiOYCD-SjDRRX5spw

了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/

知物由学 | 未来安全隐患:AI的软肋——故意欺骗神经网络的更多相关文章

  1. 听起来很美,用起来很累!停车类APP软肋在哪

    据数据显示,全国现有汽车已达1亿7千万辆,停车位缺于6800万个.而在北京,汽车保有量和车位的配比大约是1:0.5,而国际上一般是1:1.2,结构严重失衡.正所谓哪里有需求,哪里就有市场.停车位的走俏 ...

  2. 【转载】 如何看待 2019 年 CS PhD 现扎堆申请且大部分为 AI 方向?未来几年 AI 泡沫会破裂吗?

    原贴地址: https://www.zhihu.com/question/316135639 作为一个 AI 方向的在读博士生,实在是过的蛮闹心,无意中逛知乎发现了这个帖子,发现很适合现在的自己,于是 ...

  3. 未来 USB Type-C 将可靠软体判断线材是否符合规定

    USB Type-C 插头允许通过的电流和功率比过去常见的 USB 规范要大得多,因此从市面上「随便买一条」USB Type-C 的充电线的危险也同样大得多,毕竟不是所有的线材能承受的电流都一样,万一 ...

  4. 醒醒吧!互联网的真正未来不是AI,更不是VR,AR,而是区块链

    这些力量并非命运,而是轨迹.他们提供的并不是我们将去向何方的预测,而是告诉我们,在不远的将来,我们会向那个方向前行,必然而然. ---凯文•凯利 文字与货币 人类在演化过程中,凭借智慧创造了无数事物, ...

  5. 转:Node.js软肋之CPU密集型任务

    文章来自于:http://www.infoq.com/cn/articles/nodejs-weakness-cpu-intensive-tasks Node.js在官网上是这样定义的:“一个搭建在C ...

  6. 我想挑战下我的软肋,动手实现个Spring应用上下文!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 目录 [x] 第 1 章:开篇介绍,我要带你撸 Spring 啦! [x] 第 2 章:小试牛 ...

  7. 知物由学 | 基于DNN的人脸识别中的反欺骗机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  8. 【读一本书】《昇腾AI处理器架构与编程》--神经网络基础知识(2)

    1 卷积神经网络:输入层 之前提到多层感知机的参数太多,导致训练耗时长并且对图像处理也不具有优势,因此大神们 就提出了多层神经网络,其中最经典的是卷积神经网络(Convolution Neural N ...

  9. DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络

    介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录. 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程 ...

随机推荐

  1. 带最小值操作的栈 · Min Stack

    [抄题]: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. [思维问题]: [一句话思 ...

  2. iis 应用程序连接池 在计算机“.”上没有找到WAS服务

    重新打开控制面板----打开或关闭windows功能,全部勾选internet information services 可承载的web核心. internet信息服务.microsoft.net f ...

  3. gridview 级联删除、dataset

    gridview编辑列(不使用控件绑定数据源)需要如下代码:<asp:GridView ID="GridView1" runat="server" Aut ...

  4. windows下用tcc编译Lua

    脚本来源:Demon's Blog,http://demon.tw/software/compile-lua-with-tcc.html 版权归原作者所有 使用方法: 1.下载tcc编译器,本文解压目 ...

  5. css样式: 宽高按一定比例进行自适应

    纯 CSS 实现高度与宽度成比例的效果 最近在做一个产品列表页面,布局如右图所示.页面中有若干个 item,其中每个 item 都向左浮动,并包含在自适应浏览器窗口宽度的父元素中. item 元素的 ...

  6. go实现的简易TCP的客户端和服务器

    今天介绍golang版本的通信基础:基于TCP的客户端和服务器实现,参考书籍:The Way To Go 那时学习java的时候也是做过通信的,当时是socket编程,服务器监听某一个端口,然后客户机 ...

  7. db2 批处理

    db2在Windows下执行批处理,需要使用两个.bat文件 1)把以下命令保存为first_do.bat@echo off@@ECHO ------------------------------- ...

  8. 建表Table

    Sstudent表   学  号    Sno  姓  名   Sname   性  别    Ssex     年  龄      Sage   所 在 系    Sdept   200215121 ...

  9. 使用phpExcel导出excel文件

    function export($log_list_export) { require "../include/phpexcel/PHPExcel.php"; require &q ...

  10. python性能监控初试

    标 题: python性能监控初试作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990765.html 欢迎转帖 请保持文本完整并注明出处 之前性能统计 ...