专栏名称: 优达学城Udacity
想要追赶技术潮流,永远保持技能和薪资的领先水平吗?来自硅谷的学习平台——优达学城(Udacity)是最好的选择,让你在家追随 Google、Facebook等技术大佬,掌握数据分析、 前端开发、机器学习、人工智能等黑科技,从零开始改变世界!
目录
相关文章推荐
芋道源码  ·  分享15条高频SQL优化技巧 ·  3 天前  
Java编程精选  ·  SpringCloud+Gateway+Se ... ·  6 天前  
芋道源码  ·  线程数突增!领导说再这么写就gc掉我.... ·  5 天前  
芋道源码  ·  字节做 IDE 了!!! ·  1 周前  
51好读  ›  专栏  ›  优达学城Udacity

一个像素就能攻陷神经网络?赶紧学起来(附教程

优达学城Udacity  · 公众号  ·  · 2018-02-28 22:59

正文

导语:仅用一个像素就能让神经网络蒙圈,产生对图片错误的判断。

文/ Hyperparticle

译/ 园长,Udacity前端开发纳米学位毕业生

来源/ 知乎专栏“极光日报”


索尼曾经发行过一部叫《像素大战》的电影,剧情也不新鲜:某天,地球被神秘外星人入侵。而外星人居然全部以可爱的像素电子游戏形象出现!!但素,凡是被它们碰过的物体、人类无一例外都被像素化。


还记得童年玩的“吃豆人”咩?在电影里可是大反派哦~



当然,像素入侵只是电影里的脑洞,现实中像素人畜无害,但有时候,仅用一个像素,就能让致密的神经网络“瘫痪”,不信?github有位大佬就这么干了...




太长不看版(其实也不长~)


对抗图像随机改变一个像素点,用神经网络运行;然后这个点和对抗图样再结合结合继续用神经网络运行;如果有像素点让神经网络的置信度降低,就将这个替换为当前最佳解决方案;重复迭代上述步骤,将使神经网络产生误判。


示例攻击过程详解:Hyperparticle/one-pixel-attack-keras


——by 园长



如果我们只改变一个像素点,能否让深度神经网络把图片错误分类?

相信我们,用一个像素点,足以实现对神经网络攻陷。

在很多情况下,我们甚至可以让神经网络给出我们想要的任何答案。

它是如何工作的?

在这套攻击中,我们使用了 Cifar10 dataset。数据集的任务是将 32X32 像素的图片进行正确分类,分类池有十个选项(如鸟、鹿、卡车等)。这个黑盒(black-box)攻击仅需要由神经网络输出的概率标签(每个分类的概率值)即可。我们通过选择一个像素并且将其修改为某种颜色来生成伪分类。

通过使用被称为差分进化(Differential Evolution,DE)的进化算法,迭代出对抗图像以试图最小化神经网络分类的置信度。


  • 首先,生成几个对抗样本,随机修改一个像素点,用神经网络运行图像。

  • 接下来,将改变后的图像和先前的像素位置和颜色结合在一起,从产生更多的对抗样本,然后继续通过神经网络运行这些样本。如果上一步,有像素降低了神经网络的置信度,那就将它们替换为当前的 best know 解决方案。

  • 重复上述的步骤并进行几次迭代;在最后一步返回对抗图像,最大程度的降低神经网络的置信度。如果成功了,置信度会大大降低,以至于新的(不正确的)类别现在具有最大概率的可信度。


可以参考以下攻击成功的示例:


Getting Started

如果你想要阅读项目和代码,可以看:View the tutorial notebook on GitHub.

要运行教程中的代码,推荐使用适合运行 keras 专用 GPU(TensorFlow - GPU)。

需要 python 3.5+。

1.克隆仓库(repository)

git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keras

2.如果你还没有安装过 requirement.txt 中的 python 包,那就先安装它

pip install -r ./requirements.txt

3.用 Jupyter 运行 iPython tutoriol notebook

jupyter notebook ./one-pixel-attack.ipynb

训练和测试

运行 train.py 来训练模型,在运行模型后,会自动将检查点保存在 networks/models 目录下。

举个例子,用 200 个检查点和 128 字节的批处理来训练 ResNet:

python train.py --model resnet --epochs 200 --batch_size 128

目前可用的模型:

  • lecun_net

  • pure_cnn

  • net_in_net

  • resnet

  • densenet

  • wide_resnet

  • capsnet



结果

运行几次试验后的初步结果:

对每个 100 个样本的 1、2、3 个像素无差别攻击

看起来攻击成功率和本文阐述的还有一些差距,但是这主要是由于差异演化实施的低效率,这也是下一步我们要尽快解决的问题。

图表中可以看出,CapsNet 对比其他神经网络,能更好的抵御一个像素的攻击,但是仍然也是很脆弱的。

里程碑

  • Cifar10 dataset(√)

  • Tutorial notebook(√)

  • Lecun Network, Network in Network, Residual Network, DenseNet models(√)

  • CapsNet (capsule network) model(√)

  • Configurable command-line interface(√)

  • Efficient differential evolution implementation

  • MNIST dataset

  • ImageNet dataset


更详细过程请阅读:Hyperparticle/one-pixel-attack-keras


更多精彩:

怕比特币暴涨跌?别慌,手把手教你预测价格走势~

10 款口碑爆表的 Chrome 插件,Max 你的工作效率!

为啥扎克伯格天天穿同一件T?审美阵亡了?才不是

冒死我也要说:Python 是最好的语言!



— 完 —

喜欢这篇文章?别忘了分享到朋友圈哦!

快点扫我~

长按上面二维码,关注优达学城(Udacity)订阅号,回复关键字【学习资料】,获取【前端开发技能清单】【大数据求职指南】、【机器学习求职指南】等学习资料。

跟随 Google 无人车之父系统掌握深度学习,21周打造属于你的深度学习前沿应用。生成电视剧剧本、图像识别、生成人脸……点击阅读原文,体验硅谷仿真课堂!