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. 大数据学习day36-----flume02--------1.avro source和kafka source 2. 拦截器(Interceptor) 3. channel详解 4 sink 5 slector(选择器)6 sink processor

    1.avro source和kafka source 1.1 avro source avro source是通过监听一个网络端口来收数据,而且接受的数据必须是使用avro序列化框架序列化后的数据.a ...

  2. Linux学习 - 系统定时任务

    1 crond服务管理与访问控制 只有打开crond服务打开才能进行系统定时任务 service crond restart chkconfig crond on 2 定时任务编辑 crontab [ ...

  3. JavaIO——System对IO的支持、序列化

    1.系统类对IO的支持 在我们学习PriteWriter.PrintStream里面的方法print.println的时候是否观察到其与我们之前一直使用的系统输出很相似呢?其实我们使用的系统输出就是采 ...

  4. gitlab基础命令之代码回滚

    #:gitlab状态 root@ubuntu:~# gitlab-ctl status run: alertmanager: (pid 13305) 215965s; run: log: (pid 1 ...

  5. go 代理

    环境变量中设置 #GO111MODULE=auto GOPROXY=https://goproxy.io 如果不第一次,则在命令行设置 go env -w GO111MODULE=on go env ...

  6. mango后台

     环境搭建 项目配置 下载后导入项目,删除mvnw.mvnw.cmd两个文件 修改spring-boot-starter-web pom.xml --> run as --> mave i ...

  7. java对象分配

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  8. Spring支持5种类型的增强

    Spring支持5种类型的增强:1.前置增强:org.springframework.aop.BeforeAdvice代表前置增强,因为Spring只支持方法级的增强,所以MethodBeforeAd ...

  9. JFinal之ActiveRecord开发示例

    JFinal独创Db + Record模式示例 JFinal配备的ActiveRecord插件,除了实现了类似Rails ActiveRecrod的功能之外,还实现了Db + Record模式,此模式 ...

  10. @Order注解使用

    注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响: @ ...