​Fisher信息量检测对抗样本代码详解

10a7a49adcdd63c2e44bec203f0b5f4d.gif

©PaperWeekly 原创 · 作者 | 鬼谷子

cd219f6dc922a48900b5a43c8b0ea3c7.png

引言

在上一篇《Fisher信息量在对抗样本中的应用》中详尽地阐述了 Fisher 信息量在对抗攻击,防御,以及检测中的应用,并解析了三篇具有代表性的论文。Fisher 信息量是可以用来去挖掘深度学习模型对抗行为的深层原因的非常好用一个数学工具。

本文主要基于用 Fisher 信息量去检测对抗样本的一篇论文《Inspecting adversarial examples using the Fisher information》的代码进行深度解析,该论文提出了三个指标对对抗样本进行检测分别是 Fisher 信息矩阵迹,Fisher 信息二次型和 Fisher 信息敏感度。本文会对论文中直接给出的结果的中间证明过程进行补充,而且代码中一些重要的关键细节也会在对应的章节中有所说明。

bdec356b8870d2e59b3a83944694b808.png

Fisher信息矩阵迹

给定输入样本 ,神经网路的输出一个 维概率向量 ,则关于神经网络参数 的 Fisher 信息矩阵的连续形式和离散形式如下所示:

346dd93105489668804928935c543a62.png

其中可知 ,,。需要注意的是,计算一个非常小规模的神经网络,Fisher 信息矩阵的计算量 也是棘手的,更何况是那些动辄就上亿的参数量规模的神经网络,计算量更加庞大。因为原论文目的是只关注检测对抗样本,不需要详细计算 Fisher 信息矩阵中每个精确值,给定样本 Fisher 信息量的一个取值范围即可作为检测的指标,所以论文中采用 Fisher 信息矩阵的迹作为检测指标,具体计算公式如下所示:

265f33ab178a58d0b750beb5afd46282.png

要知道理论分析和实际编程总会有一些出入,在以上公式推导中,是将神经网络里的所有权重参数当成一个一维参数向量来考虑,但实际编程中时,神经网络的参数是按层排序的,不过当在求解Fisher信息量的时候,这两种情况时一致的。假设有一个四隐层的神经网络,参数分别是 ,则对应的参数和梯度如下所示:

56a3cf21b739f40570decdc6f4e41826.png

进一步可知两种情况下 Fisher 信息矩阵的迹相等:

9e49e16ef385caf97a0a49592ad9fcb1.png

此时可以发现使用反向传播计算 Fisher 信息矩阵的迹的计算量为 ,要远远小于计算 Fisher 信息矩阵的计算量 。

bc334e07c41c4fe0a5dfc51f27ac08af.png

Fisher信息二次型

矩阵 的迹可以写成 ,其中 为单位向量,即第 个元素为 ,其余元素为 ,这可以理解为 散度对每个参数变化的平均值。受此启发,作者可以选择一个特定的方向和度量,而不是在完全正交的基础上求平均值,即有如下二次型:

3ab391e8d7704248a0ef2abf8f402f4d.png

其中给定的向量 与参数 和数据点 有关:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值