4.基于梯度的攻击——MIM

MIM攻击原论文地址——https://arxiv.org/pdf/1710.06081.pdf

1.MIM攻击的原理

  MIM攻击全称是 Momentum Iterative Method,其实这也是一种类似于PGD的基于梯度的迭代攻击算法。它的本质就是,在进行迭代的时候,每一轮的扰动不仅与当前的梯度方向有关,还与之前算出来的梯度方向相关。其中的衰减因子就是用来调节相关度的,decay_factor在(0,1)之间,decay_factor越小,那么迭代轮数靠前算出来的梯度对当前的梯度方向影响越小。其实仔细想想,这样做也很有道理,由于之前的梯度对后面的迭代也有影响,那么这使得,迭代的方向不会跑偏,使得总体的大方向是对的。到目前为止都是笔者对MIM比较感性的认识,下面贴出论文中比较学术的观点。

 其实为了加速梯度下降,通过累积损失函数的梯度方向上的矢量,从而(1)稳定更新(2)有助于通过 narrow valleys, small humps and poor local minima or maxima.(专业名词不知道怎么翻译,可以脑补函数图像,大致意思就是,可以有效避免局部最优)

 

 

是decay_factor,另外,在原论文中,每一次迭代对x的导数是直接算的1-范数,然后求平均,但在各个算法库以及论文实现的补充中,并没有求平均,估计这个对结果影响不太大。

2.代码实现(直接把advertorch里的代码贴过来了)

 1 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: babel.mim.js 是一个JavaScript编译器,可以将ES6及以上版本的JavaScript代码转换为ES5及以下版本的JavaScript代码,使得这些高级语言特性可以在旧版本浏览器中运行。要下载这个文件,可以直接在Babel官网下载,也可以使用npm包管理器进行安装。在下载或安装完成后,将其添加到HTML页面的<script>标签中即可使用。Babel编译器还有很多对应的插件和预设,可以根据需要进行自定义编译,例如添加对React JSX语法的支持,或者只编译特定的API。使用Babel可以让开发者更方便地使用新特性,同时也提高了代码的兼容性和可维护性。需要注意的是,Babel只是将代码转换为更旧的语法,但并没有解决浏览器API的兼容性问题,因此在使用高级特性时仍需要考虑最终的运行环境。 ### 回答2: babel.mim.js 是一个 JavaScript 库,主要用于实现 ECMAScript2015(ES6)及以上版本的代码转换,让其在浏览器和其他 JavaScript 运行环境中得到支持。该库可以将 ES6 的代码转换成 ES5 的代码,从而兼容更多浏览器和平台。babel.mim.js 的下载方式一般有两种,一种是通过在官网下载,另一种则是通过应用包管理器(如 npm)进行安装。 如果需要在自己的项目中使用 babel.mim.js,可以直接从官网下载最新的版本。下载完成后,可以将其复制到自己项目的 js 文件夹下,然后在 HTML 文件中通过 <script> 标签引入即可。需要注意的是,该库需要依赖一些第三方的库文件,需要将这些文件也一并复制引入才能正常使用。 如果项目采用了包管理器进行管理,可直接通过命令行进行安装,在项目目录下执行命令 npm install babel-core --save 即可完成安装。安装完成后,在 JavaScript 代码中使用该库时,需要通过 require() 函数将其引入到代码中,同时还需要配置相关参数以指定转换规则和插件。配置完成后,即可正常使用该库的所有功能。 总之,无论是通过官网下载还是通过包管理器安装,都可以获得 babel.mim.js 库的相关文件及其依赖库,并用于实现浏览器对 ES6 新特性的支持和兼容。 ### 回答3: babel.mim.js 是 Babel 编译工具的核心文件,用于将 ES6/ES7 的代码转换为 ES5 标准的 JavaScript 代码。在安装和使用 Babel 的过程中,我们需要下载并引入 babel.mim.js 文件到项目中,这样才能正常运行 Babel 工具。 下载 babel.mim.js 文件可以通过多种方式,比如在 Babel 官网上下载最新版的 Babel 包,或者通过 CDN 的方式引入,也可以通过 npm 安装并引入。在下载文件之后,我们需要将其引入到 HTML 文件的 head 部分或是 body 底部的 script 标签中,如: ``` <script src="path/to/babel.mim.js"></script> ``` 或者在 Node.js 中安装 Babel 后使用 require 引入: ```JavaScript const babel = require('@babel/core'); ``` 下载 babel.mim.js 文件后,我们就可以通过使用 Babel 提供的各种插件和预设来实现对 JavaScript 代码的转换工作,比如将 JSX 语法转换为普通 JavaScript,或是将箭头函数转换为普通函数等等。同时,我们也可以在 babel.mim.js 文件中进行一些配置,比如设置转换目标环境等,以实现更加灵活和个性化的项目配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值