前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >When Does Machine Learning FAIL? Generalized Transferability for Evasion and Poisoning Attacks论文笔记

When Does Machine Learning FAIL? Generalized Transferability for Evasion and Poisoning Attacks论文笔记

作者头像
Mezereon
发布2019-02-25 11:23:29
8480
发布2019-02-25 11:23:29
举报
文章被收录于专栏:MyBlogMyBlog

When Does Machine Learning FAIL? Generalized Transferability for Evasion and Poisoning Attacks论文笔记

该论文主要是介绍了一个FAIL模型, 即一个通用框架用来分析针对机器学习系统的真实攻击, 同时也提出了一种有目标的投毒攻击, 称作StingRay, 使得该攻击能击溃现存的防御, 通过观察FAIL的维度, 发现现存的有目标的逃逸攻击(Evasion Attack)中的一种新的迁移特性以及一种能够对有目标的投毒攻击提供弹性的特性, 扩展了先前对于攻击迁移特性的研究并针对投毒攻击的样本给出一些结论.

投毒攻击: 即往训练样本里面掺杂恶意的样本, 使得训练后整体的模型性能下降 有目标: 即指的是针对某类结果进行攻击, 即最后攻击的是针对某类结果的性能下降, 而不是整体的性能下降 逃逸攻击: 逃逸是指攻击者在不改变目标机器学习系统的情况下, 通过构造特定输入样本以完成欺骗目标系统的攻击

概述

主要是针对对于机器学习系统的攻击, 先前许多攻击都有很多关于攻击者知识和能力的不同的假设, 这些假设可能是非真实的, 为了更好地更加系统地分析攻击的威胁性, 提出FAIL模型, 利用FAIL模型可以较好描述攻击者的能力, 更好地针对那些对于特征, 模型算法等细节的知识进行控制, 进而研究受限制的攻击者的表现.

利用FAIL分析了一种逃逸攻击的迁移特性以及设计了一种投毒攻击, 攻破了4个机器学习应用, 并针对投毒攻击逃逸攻击的样本的迁移特性进行进一步的讨论.

1. 介绍

现存的在各个领域的机器学习系统都有被攻击的风险, 包括数据集可能被投毒, 他人可能构造出一些对抗样本来使得系统结果出错等.近来有许多研究工作关注逃逸攻击, 举个例子, 一个分类器能区分猫和狗, 攻击者试图找到一张特定猫的图片使得其被分类为狗, 那么这张特定的猫的图片就可以诱导分类器出错, 这是有目标的逃逸攻击, 当然, 有目标的投毒攻击也被证明是可行的.

然而这些攻击方法层出不穷, 更新换代很快, 而且很多现存的攻击方法并不能表现真实环境下的攻击者, 为了能够更好地分析其性能和限制, 提出FAIL模型, FAIL即, Feature特征, Algorithm算法, Instances实例, Leverage影响, 在该框架下, 显示出一种先前的黑盒逃逸攻击在通用的迁移下表现不好.

提出了StingRay, 一种有目标的投毒攻击, 克服了先前此类攻击的限制, 攻破两种反投毒策略.

借助FAIL, 系统地探索了实际的攻击场景, 结果表现出通过FAIL维度表征的攻击的迁移特性.

2. 问题陈述

  1. 如何能够系统地基于现实的关于攻击者能力的假设对攻击者进行建模?
  2. 如何在各式各样的攻击模型中来定义和分析一种通用的迁移特性?
  3. 是否能够构造一种有目标的投毒攻击, 保证该攻击能够克服一些检测机制?

比如使用label标记正确的样本, 但是该样本会导致决策边界的移动

2.1 机器学习中一些定义

一个分类器可被定义为:

h: \mathscr{X} \rightarrow \mathscr{Y}
h: \mathscr{X} \rightarrow \mathscr{Y}

其中

x\in \mathscr{X}
x\in \mathscr{X}

, 是一个实例输入, 对应

y\in \mathscr{Y} = \{y_0, y_1, ... ,y_n\}
y\in \mathscr{Y} = \{y_0, y_1, ... ,y_n\}

为标签,

x = (x_1, ..., x_n)
x = (x_1, ..., x_n)

是一个n维的特征向量.

给出一个距离度量, 针对n维特征向量而言有:

D(x,x')
D(x,x')

训练集定义为

S \subset\mathscr{X}
S \subset\mathscr{X}

, 对应着标签集

Y_S \subset \mathscr{Y}
Y_S \subset \mathscr{Y}

, 测试集记为

T
T

, 学习算法记作

A
A

, 利用学习算法和训练集得到的分类器可以记作

h = A(S)
h = A(S)
2.2 威胁模型

对于测试集中的

t\in T
t\in T

, 有对应的标签

y_t \in \mathscr{Y}
y_t \in \mathscr{Y}

, 定义干净的数据集为

S^*
S^*

, 有

h^* = A(S^*), h^*(t) = y_t
h^* = A(S^*), h^*(t) = y_t

对于攻击者来说, 不能控制

t
t

y_t
y_t

, 但知道特征的表示形式, 攻击者的目的为:

  1. 利用
S^*
S^*

得到一个训练集

S
S

, 使得

h=A(S), h(t)=y_d
h=A(S), h(t)=y_d

,

y_d
y_d

即攻击者希望对于

t
t

的分类结果

  1. 尽可能地对总体产生较小地影响, 通过PDR(性能下降比例)来衡量, 其中
PDR=\frac{L_S(h)}{L_{S^*}(h^*)}
PDR=\frac{L_S(h)}{L_{S^*}(h^*)}

L_S(h)
L_S(h)

为训练集为

S
S

得到的分类器

h
h

的Loss

3. 对实际的攻击者建模

主要有知识能力两个方面 利用FAIL分为四个维度:

  1. 特征知识(Feature):
F_k = \{i\in 1 ... n: x_i 是已知的\}
F_k = \{i\in 1 ... n: x_i 是已知的\}

主要问题: 对于什么特征是保密的? 攻击者能够访问具体的特征值吗?

  1. 算法知识(Algorithm):
A'
A'

, 学习所用的算法, 攻击者利用此算法来创造对抗样本

主要问题: 算法类型是否已知? 训练算法是否保密? 分类器参数是否保密?

  1. 实例知识(Instance):
S'
S'

, 标记了的训练实例集

主要问题: 整个训练集都已知吗或者是部分已知吗? 已知的训练实例是否足够让攻击者训练出一个鲁棒的分类器?

  1. 影响知识(Leverage):
F_m = \{i \in 1 ... n:x_i 可以被修改\}
F_m = \{i \in 1 ... n:x_i 可以被修改\}

, 即攻击者能够修改的部分特征

主要问题: 哪一个特征是可以被攻击者修改的?

4. StingRay攻击

这里给出算法的伪代码

算法伪代码

给出算法的约束

算法约束

4.1 针对反投毒攻击的策略

RONI(Reject on Negative Impact)是一种反投毒攻击的防御策略, 但是RONI对于那些有目标的攻击效果不好, 因此又有tRONI(Target aware RONI), 这里给出tRONI的算法的伪代码

tRONI

5. 部分结论

对StingRay配合RONI和tRONI防御来进行分析

StingRay

可以看出tRONI最多只能拦截40%的恶意样本, 但是仍然会造成较大的性能损耗, PDR还是特别的高

通过FAIL模型还可以得到针对不同攻击和防御算法的分析数据

分析

6. 后话

可以看出来, 该文章利用FAIL模型对攻击者进行建模, 然后更加实际地来研究攻击模型的威胁, 从这个角度入手可能可以构造出更强的攻击或者更为实际的攻击方式, 毕竟对攻击者的知识和能力都做出了约束, 进而对于防御一块也有较大的贡献.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.01.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • When Does Machine Learning FAIL? Generalized Transferability for Evasion and Poisoning Attacks论文笔记
    • 概述
      • 1. 介绍
        • 2. 问题陈述
          • 3. 对实际的攻击者建模
            • 4. StingRay攻击
              • 5. 部分结论
                • 6. 后话
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档