zoukankan      html  css  js  c++  java
  • 对抗攻击基础知识(完结)

    对抗攻击基础知识

    https://cloud.tencent.com/developer/news/162169

    https://zhuanlan.zhihu.com/p/37260275

    什么是对抗攻击

    • 为图片添加噪声,人眼看不出明显差别,但会导致机器识别错误.

    攻击模式分类

    1. Black/White box:是否需要模型的先验知识,如算法、参数、训练集.在实际应用中,通过模型A生成对抗样本,进而攻击模型B,若两者是同一个模型则为白盒,否则为黑盒.

    2. Targeted/Non-targeted:对于攻击样本的目标分类是具有指向性还是仅仅使其预测错误即可.

    3. Specific/Universal:攻击方式是否跟特定图片有关.

    4. Perturbation norm:对噪音的限制计算方式.

    5. Learning:单次和逐渐迭代.

    6. Strength:攻击强度.

    对抗攻击的来龙去脉

    • 《Intriguing properties of neural networks(神经网络有趣的特性)》:

      1. 神经网络中包含语义信息的部分并不是在每个独立的神经元,而是整个空间.

      2. 神经网络学习到的从输入到输出的映射很大程度上是不连续的.

      3. 验证了将图片适当修改后能欺骗深度学习模型的可能性.

    • 《Explaining and harnessing adversarial examples》:

      1. 产生对抗攻击根本原因的猜测:深度神经网络在高维空间中的线性特征.

      2. 更高效制造对抗样本的方法.

    • 《Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey》

    如何理解对抗攻击

    • 每层神经元的输出a=g(Wx+b),实际上是二维平面上的旋转、移动和拉伸:

      1. 使用W线性变换

      2. 使用b移动

      3. 使用g非线性变换.

      对于简单的分类问题,在二维平面被拉伸成可以通过直线完成分类的布局,对于较复杂问题,通过增加神经元,在高维空间进行分离.

      img

      img

    • 神经网络通过对空间进行变换后,从最终的表征层中学习,因此包含该语义信息的是整个空间.

    • 在上图的拉伸结果中,距离较大的地方可以认为映射是连续的,但仍缠绕在一起的部分超平面已经无法连续.对抗样本正是跨过了该界限.我理解是要保持与某类点的平均距离尽量近的同时去跨过该界限.

    • 抵御对抗攻击的一个直观方法是将对抗样本加入到训练集中去.

    • GoodFellow提出生成对抗样本的方法:

      1. 根基是目前神经网络为了提高训练效率,所使用的激活函数在局部过于线性.

      2. img

        w是权重向量,x是真实样本,n是 噪音.当n足够小时肉眼无法区分出x的变化,但是若n与w的方向完全一致,则对激活值的计算会产生巨大干扰.

      3. img

        快速梯度符号法FGSM:为了能使n与w方向一致,即损失函数在待构造样本上的梯度方向.ε是调节系数,J是损失函数.在调整损失函数时会用θ - ∂θ来进行,而该方法令x̄ = x +∂x.此方法有一个开源攻击库CleverHans.

    如何抵御攻击

    • 修改训练样本:例如通过添加对抗样本到训练集中.

    • 梯度掩码:将原始梯度隐藏起来.

    • 修改训练网络:例如在最后一层使用更加非线性的激活函数、随机化等.可分为完全抵抗和仅检测两种方式.

    • 去噪:在样本输入模型前先去噪,剔除扰动信息.

    • 附加网络:在不改变原有模型的情况下使用额外的网络进行辅助,例如生成式对抗网络GAN.

  • 相关阅读:
    js 基于函数伪造的方式实现继承
    js 创建List<Map> 这种格式的集合
    微信get post请求到微信服务器 模版 素材操作
    微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
    Jackson 高性能的JSON处理 ObjectMapper
    baseDao 使用spring3+hibernate4方式
    PropertiesUtil 读取配置文件工具类
    C语言(函数)学习之strstr strcasestr
    命令行选项解析函数(C语言):getopt()和getopt_long()
    AE插件开发的一些总结
  • 原文地址:https://www.cnblogs.com/limitlessun/p/11670982.html
Copyright © 2011-2022 走看看