EMA
源
Exponential moving average (EMA) 是一个非常有用的trick, 起到加速训练的作用. 近来发现, 该技巧还可以用于提高网络鲁棒性(约1% ~ 2%). EMA的流程很简单, \(f(\cdot;\theta)\)是我们用于训练的网络, 则在每次迭代结束后进行:
\]
其中\(\theta'\)是\(f'(\cdot; \theta')\)网络的参数, \(f', f\)的网络初始化是一致的, 另外\(f'\)的网络参数的更新仅仅通过上式.
一般情况下, 对抗训练用\(f(\cdot; \theta)\)来生成对抗样本, 即
\]
来获得, 而我想的能不能
\]
背后的直觉是, \(f'\)相较于\(f\)更为平稳, 则由其产生的对抗样本的分布更加稳定, 则\(f\)拟合起来会不会更加容易?
我在一个8层的网络上进行测试, 结果不如人意:
设置
| model | cifar |
|---|---|
| dataset | CIFAR-10 |
| attack | PGD |
| epsilon | 8/255 |
| stepsize | 2/255 |
| steps | 10 |
| loss | cross entropy |
| optimizer | sgd |
| momentum | 0.9 |
| beta1 | 0.9 |
| beta2 | 0.999 |
| weight_decay | 2e-4 |
| leaning_rate | 0.1 |
| learning_policy | AT |
| epochs | 200 |
| batch_size | 128 |
| transform | default |
| seed | 1 |
| alpha | 0.999 |
结果
| Accuracy | Robustness | |
|---|---|---|
| EMA* | ![]() |
![]() |
| EMA | ![]() |
![]() |
| EMA + GroupNorm | ![]() |
![]() |
上图中, EMA是原本的逻辑, 可见其的确能加速训练(Shadow表示\(f'\)), 虽然最后的结果是降了点, 这主要是参数没调好, 毕竟对抗训练很容易过拟合. 但是我们的直接却完全不起作用, 这让我非常困惑, 因为, 我料想的最差的结果, 也应当是鲁棒性不怎样, 不能精度和鲁棒性都很差, 因为虽然是通过\(f'\)生成的对抗样本, 这些对抗样本依旧是满足$|x_{adv} - x|_{\infty} \le 8 /255 $ 的,所以应该是没问题的.
于是我又尝试让\(\alpha\)由\(0\)慢慢增加到\(0.999\), 但是结果依然不容乐观. 我料想是batch normalization的问题, 于是换了group normlization:
虽然结果似乎表明我们的直觉完全是错误的, 但是还是体会到了 normalization 的重要性, BN很难应对不同分布.
EMA的更多相关文章
- 股票中的数学:EMA的推导01
说明:本人并不炒股,原因很简单:没钱.当然了,作为一名IT工作者,因为工作需要和个人兴趣,就有了本系列文章.阅读本系列文章不需要任何高深的知识,哪怕是一个像我这样从未真正炒过股的人也没关系.但本文还是 ...
- EMA计算的C#实现(c# Exponential Moving Average (EMA) indicator )
原来国外有个源码(TechnicalAnalysisEngine src 1.25)内部对EMA的计算是: var copyInputValues = input.ToList(); for (int ...
- 新修改了EMA的计算方法,合并线性回归率的计算。和通达信的结果一模一样
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- WeQuant交易策略—EMA指标
策略名称:EMA指标策略关键词:指数移动平均.双均线.动态止损.方法:1)用快慢两条指数移动平均线的交叉作为买入卖出信号:2)快线自下而上穿过慢线,买入:自上而下穿过慢线,卖出:3)持仓期间计算净值的 ...
- 新概念英语(1-9)How is Ema?
A:Hello Helen. B:Hi Steven. A:How are you today? B:I'm very well, thank you. And you? A:I'm fine tha ...
- tensorflow(3):神经网络优化(ema,regularization)
1.指数滑动平均 (ema) 描述滑动平均: with tf.control_dependencies([train_step,ema_op]) 将计算滑动平均与 训练过程绑在一起运行 train_o ...
- 多种移动平均计算总结(MA,EMA,SMA,DMA,TMA,WMA)
多种移动平均计算总结 股票期货里面经常会遇到这些公式,通达信,同花顺,文华,基本都有.作为一个程序员觉得网上比较的思路不清晰,在此做个总结,一目了然. 一.函数简介 MA(x,n)-移动平均,是最简单 ...
- 【优化技巧】指数移动平均EMA的原理
前言 在深度学习中,经常会使用EMA(exponential moving average)方法对模型的参数做平滑或者平均,以求提高测试指标,增加模型鲁棒性. 参考 1. [优化技巧]指数移动平均(E ...
- EMA指数平滑移动平均
英文参考:http://www.incrediblecharts.com/indicators/exponential_moving_average.php Exponential moving av ...
- EMA algorithm: https://blog.csdn.net/m0_38106113/article/details/81542863
EMA algorithm: https://blog.csdn.net/m0_38106113/article/details/81542863
随机推荐
- DBeaver客户端工具连接Hive
目录 介绍 下载安装 相关配置 1.填写主机名 2.配置驱动 简单使用 主题设置 字体背景色 介绍 在hive命令行beeline中写一些很长的查询语句不是很方便,急需一个hive的客户端界面工具 D ...
- Linux学习 - 条件判断
一.判断格式 test -e /root/install.log 或 [ -e /root/install.log ] 使用echo $?查看是否正确,当返回0时表示返回正确 1 按照文件类型进行判断 ...
- 【Service】【MiddleWare】【Message】rabbitMQ
1. 概念: 1.1. 消息型中间件:遵循AMQP协议(高级消息队列协议)AMQP 0-9-1 AMQP 1.0 1.2. 路由模型: direct topic fan-out headers 1.3 ...
- 【Linux】【Services】【Disks】zfs
1. 简介: 据说zfs有去除重复数据的功能,无良人士继续要求吧samba共享盘使用的centos7上自带的xfs改成zfs,并且开启去重功能.samba配置见 http://www.cnblogs. ...
- APICloud - 提交项目 点击右键 没有git这个选项
你们是不是也遇到过这个问题,吧项目检出来后,花了很久的时间,好不容易吧项目改完,提交的时候点击鼠标右键,发现git选项没有在里面了,找不到,但是这个问题也不是很常遇到,机率很小,下面我来告诉你们吧 原 ...
- window 查看端口占用情况
查看哪个进程在用 netstat -aon|findstr "8080" TCP 0.0.0.0:8080 0.0.0.0:0 ...
- 9.Vue.js 监听属性
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器: <div id = "app&q ...
- 莫烦python教程学习笔记——数据预处理之normalization
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 使用Zabbix + Python对Mysql监控
一.背景介绍 随着公司业务的变迁,公司的开发数据库以mysql为主了.mysql服务器层面的监控,例如CPU.内存.硬盘空间等就用zabbix自带的linux模板即可.数据库层面zabbix也自带了一 ...
- Python小组作业:基于yolov5的口罩佩戴识别
Python老师给了三个小组项目:1.自身专业问题 2.人工智能 3.游戏或者小工具 提前告知了,写游戏不好拿高分,小工具又不能展示自己的水平.大一刚来也没碰到什么专业问题,于是经过讨论,决定了做人工 ...





