前言

最近在看GPEN的代码,其中Generator的部分借鉴了StyleGAN2,并包含比较多tricks。本文主要挖一个关于「Equalized Learning Rate」的坑,后续再填。

ELR背景

ELR 源自PG-GAN,在StyleGAN系列中被沿用,目的是为了稳定训练。

关于其具体实现(在 linear layer 和 conv2d layer 中有应用),简单来说:

  • 1)当初始化 layer 权重时,不再采用各种 fancy 的初始化方法,仅采用N(0, 1)分布随机初始化
  • 2)在训练模型过程中,对 layer 权重进行归一化。其中,归一化系数 c 是通过 kaiming 初始化方法计算得到fan_in,具体的系数值会根据模型本身有所不同。 当layer前向传播过程中,对layer权重进行缩放,缩放系数为c(即实现方式1中self.scale, 参考PG-GAN 4.1节中per layer normalization constant from He’s initializer)

ELR出发点

依旧引用PG-GAN原文中的说法:

The benefit of doing this dynamically instead of during initialization is somewhat subtle, and relates to the scale-invariance in commonly used adaptive stochastic gradient descent methods such as RMSProp (Tieleman & Hinton, 2012) and Adam (Kingma & Ba, 2015). These methods normalize a gradient update by its estimated standard deviation, thus making the update independent of the scale of the parameter. As a result, if some parameters have a larger dynamic range than others, they will take longer to adjust. This is a scenario modern initializers cause, and thus it is possible that a learning rate is both too large and too small at the same time. Our approach ensures that the dynamic range, and thus the learning speed, is the same for all weights. A similar reasoning was independently used by van Laarhoven (2017).

也就是说ELR影响优化器(如Adam, RMSProp)求解时梯度更新。Adam和RMSProp的共同点在于,计算步长时考虑了梯度的二阶矩估计(Second Moment Estimation,即梯度的未中心化的方差)。计算步长时,梯度方差作为分母可以理解为将步长统一到相同尺度下(大概是这么个意思),而如果不同参数的数值范围(上文中的dynamic range)差距较大,意味着数值范围较大的参数往往需要更多次的步长更新,而数值范围较小的参数当前步长可能过大。ELR通过将参数本身进行normalization,使得所有参数的数值范围是相近的,再使用Adam、RMSProp求解的时候,每个参数的更新步长相近,学习速率是相同的。

ELR原理

理解ELR的原理,先回顾Kaiming大神的权重初始化方法:

  • Weight Initialization in Neural Networks: A Journey From the Basics to Kaiming 非常浅显易懂
  • kaiming初始化的推导 理解思想后,从数学推导中进一步理解

即,通过Kaiming He initialization:

  • 前向传播的时候,每一层的卷积计算结果的方差为1
  • 反向传播的时

[占坑] Equalized learning rate implementation相关推荐

  1. 如何理解深度学习分布式训练中的large batch size与learning rate的关系?

    问题详情: 在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问 ...

  2. 【学习率调整】学习率衰减之周期余弦退火 (cyclic cosine annealing learning rate schedule)

    1. 概述 在论文<SGDR: Stochastic Gradient Descent with Warm Restarts>中主要介绍了带重启的随机梯度下降算法(SGDR),其中就引入了 ...

  3. 机器学习笔记之学习率(learning rate)与过拟合(overfitting)

    这次的笔记,之所以把学习率和过拟合放在一起讲,是因为,Msc阶段的几个挂掉的入职面试(投的实习,有的直接变成了校招的比如hw和zx,还有ali),问了相关的问题,结果回答地不好,所以在这里把这两个东西 ...

  4. Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法

    Paper:论文解读-<Adaptive Gradient Methods With Dynamic Bound Of Learning Rate>中国本科生(学霸)提出AdaBound的 ...

  5. 学习速率 learning rate

    学习速率的选取策略 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 ααα : 如果学习速率太小,则会使收敛过慢. 如果学习速率太大,则会导致代价函数振荡 ...

  6. machine learning (5)---learning rate

    degugging:make sure gradient descent is working correctly cost function(J(θ)) of Number of iteration ...

  7. learning rate四种改变方式

    Fixed learning rate固定不变 base_lr = 0.01 lr_policy = "fixed" Step learning rate在每迭代stepsize次 ...

  8. [Android]用架构师角度看插件化(3)-Replugin 需要占坑跳转?

    一.占坑 什么是占坑?为什么要占坑? Android插件化中,从一个插件Activity跳转到不同插件的Activity的时候,是否可以能正常跳转成功? 声明Activity需要配置什么? 声明Act ...

  9. 关于Increased rates of convergence through learning rate adaptation一文的理解

    原文地址:http://www.researchgate.net/profile/Robert_Jacobs9/publication/223108796_Increased_rates_of_con ...

  10. 深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)

    在训练和测试的时候遇到的问题, _error_if_any_worker_fails() RuntimeError: DataLoader worker (pid 25637) is killed b ...

最新文章

  1. LeetCode Algorithm 1290. 二进制链表转整数
  2. LOJ - #116. 有源汇有上下界最大流(有源汇有上下界的最大流)
  3. Java开发中的常见危险信号
  4. 下列选项中不属于python循环语句的是哪一项_下列选项中,不属于字典操作的方法是哪一项?_学小易找答案...
  5. JavaScript 数组和对象
  6. 基础集合论 第一章 4 子集
  7. html表格之个人简历
  8. 基于ThinkPHP5框架知识付费系统网站源码含PC+移动+小程序
  9. 小米电脑如何把计算机放桌面上,小米电脑怎么把此电脑放到桌面上
  10. jmeter的${__time(,)}和${__timeShift(,,,,)}函数使用
  11. 男人好苦,好累,好受罪
  12. 基于GPU编程的三维重建系统
  13. 手机邮箱怎么注册申请,手机邮箱在哪里找到,电子邮箱怎么弄?
  14. Anti_TexturePacker工具
  15. 019基于脑电图信号和CNN的癫痫发作检测2018
  16. 武汉大学数据结构MOOC第1周测验
  17. django 下载安装xadmin(django3.x + python3.6+xadmin2.x)
  18. 谈谈个人的发展与方向
  19. Least Squares
  20. Linux用户管理 day5

热门文章

  1. IOT项目之网卡驱动
  2. 软件设计师_计算机系统——加密技术
  3. awk的BEGIN与END模式
  4. The Data Scientist’s Toolbox
  5. 【shader自娱自乐】开始的开始
  6. PVT重磅升级:三点改进,性能大幅提升
  7. NYOJ1294 刚哥遇到了感情问题(二)(字符串处理)
  8. python中if的用法-讲解Python中if语句的嵌套用法
  9. 神经衰弱的原因有这些,日常要如何去预防呢?
  10. for循环,数字类型与字符串