Gradient-based Hyperparameter Optimization through Reversible Learning
@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的更多相关文章
- [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 ________ ...
- DAGs with NO TEARS: Continuous Optimization for Structure Learning
DAGs with NO TEARS: Continuous Optimization for Structure Learning 目录 DAGs with NO TEARS: Continuous ...
- 论文笔记系列-Speeding Up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves
I. 背景介绍 1. 学习曲线(Learning Curve) 我们都知道在手工调试模型的参数的时候,我们并不会每次都等到模型迭代完后再修改超参数,而是待模型训练了一定的epoch次数后,通过观察学习 ...
- Federated Optimization: Distributed Machine Learning for On-Device Intelligence
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1610.02527v1 [cs.LG] 8 Oct 2016 坐标下降法:https://blog.csdn.net/qq_ ...
- 斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)
本章节主要讲怎么确定梯度下降的工作是正确的,第二是怎么选择学习率α,如下图所示: 上图显示的是梯度下降算法迭代过程中的代价函数j(θ)的值,横轴是迭代步数,纵轴是j(θ)的值 如果梯度算法正常工作,那 ...
- A novel multi-swarm particle swarm optimization with dynamic learning strategy(一种新颖的具有动态学习策略的多种群粒子群优化算法)
1.核心 在每个子种群的粒子被划分为普通粒子(ordinary particles)和交流粒子(communication particles),在每次迭代过程中,不同的粒子执行不同的进化操作.普通粒 ...
- 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 ...
- arXiv 2015深度学习年度十大论文
由康奈尔大学运营维护着的arXiv网站,是一个在学术论文还未被出版时就将之向所有人开放的地方.这里汇聚了无数科学领域中最前沿的研究,机器学习也包括在内.它反映了学术界当前的整体趋势,我们看到,近来发布 ...
- 机器学习超参数优化算法-Hyperband
参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...
随机推荐
- 日常Java 2021/11/6
Java多线程编程 Java给多线程编程提供了内置的支持.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个钱程,每条线程并行执行不同的任务.多线程是多任务的一种特别的形式,但多线程使用 ...
- 8. LINUX shell 环境变量
wc –l file 计算文件行数, wc -w file 计算文件中的单词数, wc -c file 计算文件中的字符数 查看文件内容: cat .more
- 【c++】解析多文件编程的原理
其实一直搞不懂为什么头文件和其他cpp文件之间的关系,今晚索性一下整明白 [c++]解析多文件编程的原理 a.cpp #include<stdio.h> int main(){ a(); ...
- 【Android】No Android SDK found(mac)+ 真机调试
[1]No Android SDK found 如果没下载SDK,可以去google官方下载 如果因为上网问题,这里提供两个网址,有人整理好了,这里先谢谢他们,下面两个择其一下载 http://to ...
- centos 7 重新获取IP地址
1.安装软件包 dhclient # yum install dhclient 2.释放现有IP # dhclient -r 3.重新获取 # dhclient 4.查看获取到到IP # ip a
- show processlist命令详解
1.show processlist; SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到 ...
- java职业路线图
- zookeeper 异常 :stat is not executed because it is not in the whitelist. Connection closed b
1 .问题 1.启动 zookeeper 后 用指令: telnet 127.0.0.1 2181 连接 提示输入指令 :stat 后报错,然后关闭连接 2.问题解决: 修改启动指令 zkServe ...
- Spring Boot中注解@ConfigurationProperties
在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景.本篇文章带大家了解一下三种场景的使用情况. 场景一 使用@ ...
- jQuery - 的几种删除方法,还有他们的区别
1.empty() 清空节点,它能清空元素中的所有后代节点,不能删除自己本身这个节点 2.remove() 该节点与该节点所包含的所有后代节点将同时被删除,提供传递一个筛选的表达式,删除指定合集中的元 ...