Maclaurin D, Duvenaud D, Adams R P, et al. Gradient-based Hyperparameter Optimization through Reversible Learning[J]. arXiv: Machine Learning, 2015.

@article{maclaurin2015gradient-based,

title={Gradient-based Hyperparameter Optimization through Reversible Learning},

author={Maclaurin, Dougal and Duvenaud, David and Adams, Ryan P},

journal={arXiv: Machine Learning},

year={2015}}

本文给出了利用梯度更新超参数的方法(低memory消耗).

主要内容

假设第\(t=1,\ldots, T\)次训练的损失函数为\(L(\mathbf{w}, \mathbf{\theta}, t)\), 其中\(\mathbf{w}\)是网络的权重, \(\mathbf{\theta}\)是指超参数.

进行一次meta-iteration(即T次训练之后), 我们利用验证集对其验证, 设其损失为\(f(\mathbf{w})\), 我们知道, 因为\(\mathbf{w}\)实际上是\(\mathbf{\theta}\)的函数, 我们求\(f(\mathbf{w})\)关于\(\mathbf{\theta}\)的梯度, 并更新\(\mathbf{\theta}\).

但是如果只是单纯地反向转递梯度,我们需要构建一个包含\(t=1,\ldots,T\)的图, 这是十分消耗memory的. 本文的贡献便是提出一种算法来解决此问题.

下图为利用SGD(带momentum)训练权重\(\mathbf{w}\)的过程:

算法

假设meta-iteration后的权重为\(\mathbf{w}_T\), 我们利用此来一步一步地恢复前面的信息, 并且逐步计算有关超参数的导数.

算法中, 6, 7, 8实际上是SGD的一个逆行, 用以恢复\(\mathbf{w}_{t-1}, \mathbf{g}_t,\mathbf{v}_{t-1}\), 注意到, 9, 10计算了俩次\(d\mathbf{v}\), 实际上第一次作为中间变量以计算超参数的导数, 后一次是为下一次进行准备(算法中的公式都是容易推出的).

需要注意的是, 我们在恢复的过程中用到了\(\nabla\)甚至\(\nabla \nabla\), 个人认为这些是在SGD训练的时候保存下来的.

finite precision arithmic

实验

3.1

Meta-optimization strategies: 将学习率作为超参数;

How smooth are hypergradients?: 探究损失关于超参数是否光滑(即导数是否连续).

Optimizing weight initialization scales: 将初始化超参数的scale作为超参数.

3.2

将正则化参数作为超参数.

3.3

将训练样本作为超参数.

3.4

...

3.5

如何优化网络结构, 因为网络结构是一种离散化的超参数, 所以...

Gradient-based Hyperparameter Optimization through Reversible Learning的更多相关文章

  1. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  2. DAGs with NO TEARS: Continuous Optimization for Structure Learning

    DAGs with NO TEARS: Continuous Optimization for Structure Learning 目录 DAGs with NO TEARS: Continuous ...

  3. 论文笔记系列-Speeding Up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves

    I. 背景介绍 1. 学习曲线(Learning Curve) 我们都知道在手工调试模型的参数的时候,我们并不会每次都等到模型迭代完后再修改超参数,而是待模型训练了一定的epoch次数后,通过观察学习 ...

  4. Federated Optimization: Distributed Machine Learning for On-Device Intelligence

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1610.02527v1 [cs.LG] 8 Oct 2016 坐标下降法:https://blog.csdn.net/qq_ ...

  5. 斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)

    本章节主要讲怎么确定梯度下降的工作是正确的,第二是怎么选择学习率α,如下图所示: 上图显示的是梯度下降算法迭代过程中的代价函数j(θ)的值,横轴是迭代步数,纵轴是j(θ)的值 如果梯度算法正常工作,那 ...

  6. A novel multi-swarm particle swarm optimization with dynamic learning strategy(一种新颖的具有动态学习策略的多种群粒子群优化算法)

    1.核心 在每个子种群的粒子被划分为普通粒子(ordinary particles)和交流粒子(communication particles),在每次迭代过程中,不同的粒子执行不同的进化操作.普通粒 ...

  7. How to Evaluate Machine Learning Models, Part 4: Hyperparameter Tuning

    How to Evaluate Machine Learning Models, Part 4: Hyperparameter Tuning In the realm of machine learn ...

  8. arXiv 2015深度学习年度十大论文

    由康奈尔大学运营维护着的arXiv网站,是一个在学术论文还未被出版时就将之向所有人开放的地方.这里汇聚了无数科学领域中最前沿的研究,机器学习也包括在内.它反映了学术界当前的整体趋势,我们看到,近来发布 ...

  9. 机器学习超参数优化算法-Hyperband

    参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...

随机推荐

  1. Hive(三)【DDL 数据定义】

    目录 一.DDL数据定义 1.库的DDL 1.1创建数据库 1.2查询数据库 1.3查看数据库详情 1.4切换数据库 1.5修改数据库 1.6删除数据库 2.表的DDL 2.1创建表 2.2管理表(内 ...

  2. ES6必知,箭头函数与普通函数的区别。

    1. 箭头函数没有prototype(原型),所以箭头函数本身没有this let a = () =>{}; console.log(a.prototype); // undefined 2. ...

  3. 【2021赣网杯web(一)】gwb-web-easypop

    源码分析 <?php error_reporting(0); highlight_file(__FILE__); $pwd=getcwd(); class func { public $mod1 ...

  4. 内存管理——placement new

    C++给我们三个申请内存的方式,new(new operator),array new 和placement new. placement new意思是 让对象构建在已经分配好的内存上. (这里我再把 ...

  5. Swift Storyboard找不到类文件

    Swift语言引入了Module概念,在通过关键字@objc(类名)做转换的时候,由于Storyboard没有及时更新Module属性,会导致如下两种类型错误: 1 用@objc(类名)标记的Swif ...

  6. go goroutines 使用小结

    go +方法 就实现了一个并发,但由于环境不同,需要对并发的个数进行限制,限制同一时刻并发的个数,后面称此为"并发限流". 为什么要并发限流? 虽然GO M+P+G的方式号称可以轻 ...

  7. Oracle带输入输出参数的存储过程

    (一)使用输入参数 需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60. 创建存储过程: create or rep ...

  8. 2.7 Rust Structs

    A struct, or structure, is a custom data type that lets you name and package together multiple relat ...

  9. js格式化合计金额

    var summoney=1040.010400000000000001; var totalMoney=parseFloat(summoney).toFixed(2); var arry=total ...

  10. 【Linux】【RedHat】下载 安装 注册

    RedHat 下载 安装 注册 记录 因为找入口太麻烦了,所以写了篇博文记录下来大致入口@萌狼蓝天 注册 点击进入注册地址(https://www.redhat.com/wapps/ugc/regis ...