前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hype:组合机器学习和超参数优化

Hype:组合机器学习和超参数优化

作者头像
用户1737318
发布2018-06-06 11:52:36
6910
发布2018-06-06 11:52:36
举报
文章被收录于专栏:人工智能头条人工智能头条

原文:Hype: Compositional Machine Learning and Hyperparameter Optimization 译者:刘翔宇 审校:赵屹华、刘帝伟 责编:周建丁(zhoujd@csdn.net)

Hype是一个概念验证的深度学习库,你可以使用它对拥有许多模块的组合机器学习系统进行优化,即使这些模块本身就能进行优化。

这通过嵌套自动微分(AD)实现,它可以让你得到代码中任一浮点值的自动精确导数。底层的计算由BLAS/LAPACK实现(默认OpenBLAS)。

自动求导

你不必费心在模型中计算梯度(或Hessians矩阵),这些都会被AD准确、有效地计算出来。AD底层的功能由DiffSharp提供。

“反向模式”(Reverse mode)AD是“反向传播”的一般形式,与数字或符号微分不同。

除了反向AD之外,Hype使用了前馈AD,并嵌套组合前馈和反向AD。核心微分API提供了梯度函数、Hessians矩阵、Jacobian矩阵、方向导数及Hessian与Jacobian向量的乘积。

超梯度

你可以通过超参数得到训练和验证损失的梯度。这些超参数可以让你对基于梯度的优化进行梯度优化,这意味着你可以优化学习率,动量调度,权重初始化参数,步长以及哈密顿蒙特卡罗模型( Hamiltonian Monte Carlo models)中的质量矩阵。(最近有一篇文章使用了Python来实现:Maclaurin, Dougal, David Duvenaud, and Ryan P. Adams. “Gradient-based Hyperparameter Optimization through Reversible Learning.” arXiv preprint arXiv:1502.03492 (2015).)

代码语言:javascript
复制
open Hypeopen Hype.Neural// Train a network with stochastic gradient descent and a learning rate schedulelet train (x:DV) = 
    let n = FeedForward()
    n.Add(Linear(784, 300))
    n.Add(tanh)
    n.Add(Linear(300, 10))    let loss, _ = Layer.Train(n, data, {Params.Default with 
                                        LearningRate = Schedule x
                                        Momentum = Momentum.DefaultNesterov
                                        Batch = Minibatch 100                                        Loss = CrossEntropyOnLinear})
    loss // Return the loss at the end of training

// Train the training, i.e., optimize the learning schedule vector by using its hypergradientlet hypertrain = 
    Optimize.Minimize(train, DV.create 200 (D 1.f), {Params.Default with Epochs = 50})

你同样可以使用导数来训练数据,分析训练的敏感性。

组合性

嵌套AD可以处理任何高阶导数,包括下面这种复杂的导数:

min(x↦f(x)+min(y↦g(x,y)))

其中min函数使用了基于梯度的优化。(注意,内部函数对外部函数参数进行了引用。)这可以让你创建复杂的系统,许多成分可以进行内部优化。

比如,你可以优化多玩家游戏的规则,玩家们使用一个简单的对手模型来优化自己的策略,具体来说就是通过观察对手的行为进行优化。

你也可以对使用了微分达到特定目标而不是优化的程序进行优化,比如自适应控制或仿真。

复杂目标函数

你可以在目标函数的定义中使用导数进行模型训练。例如,你的目标函数考虑了输入敏感因素,对训练模型来说,在一系列输入转换之后那都是不变的。

路线图

目前版本:

  • 默认OpenBLAS
  • 回归,前馈神经网络
  • 递归神经网络,LSTM,GRU
  • 哈密顿蒙特卡罗模型

将来的特性:

  • GPU/CUDA
  • 概率推理
  • 卷积神经网络

Hype由爱尔兰国立梅努斯大学哈密顿研究所大脑与计算机实验室Atılım Güneş BaydinBarak A. Pearlmutter开发。Hype在MIT许可下发布。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自动求导
  • 超梯度
  • 组合性
  • 复杂目标函数
  • 路线图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档