zoukankan      html  css  js  c++  java
  • Gradient-based Hyperparameter Optimization through Reversible Learning

    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{ heta}, t)), 其中(mathbf{w})是网络的权重, (mathbf{ heta})是指超参数.

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

    但是如果只是单纯地反向转递梯度,我们需要构建一个包含(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计算了俩次(dmathbf{v}), 实际上第一次作为中间变量以计算超参数的导数, 后一次是为下一次进行准备(算法中的公式都是容易推出的).

    需要注意的是, 我们在恢复的过程中用到了( abla)甚至( abla abla), 个人认为这些是在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

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

  • 相关阅读:
    keyCode的使用
    写自已的类库需要的核心代码
    50个必备的实用jQuery代码段
    javascript基础
    给js原生Array增加each方法
    jquery中一些容易让人困惑的东西总结[转载]
    ajax编程
    oracle的正则表达式 [转载]
    eclipse 插件大全
    SlickGrid Options
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/12661019.html
Copyright © 2011-2022 走看看