深度学习笔记(11) 超参数调试

深度学习笔记(11) 超参数调试


1. 选择合适的范围

关于训练深度最难的事情之一是要处理的参数的数量
学习速率 a 到 Momentum(动量梯度下降法)的参数 β
如果使用Momentum或Adam优化算法的参数,β1,β2和ε
还得选择层数
也许还得选择不同层中隐藏单元的数量
也许还想使用学习率衰减
使用的不是单一的学习率a,可能还需要选择mini-batch的大小

最为广泛的学习应用是a,学习速率是需要调试的最重要的超参数
例如Momentum参数β,0.9就是个很好的默认值
当应用Adam算法时,一般从不调试β1,β2和ε,总是选定其分别为0.90.99910 -8
还会调试mini-batch的大小,以确保最优算法运行有效

在这里插入图片描述
当给超参数取值时

  • 采用由粗糙到精细的策略
    通过试验超参数的不同取值,可以选择对训练集目标而言的最优值或对于开发集而言的最优值,或在超参搜索过程中最想优化的东西
  • 随机取值可以提升搜索效率
    随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺
    在这里插入图片描述
    假设要选取隐藏单元的数量n[l]
    假设选取的取值范围是从50到100中某点
    这种情况下,在从50-100的数轴上可以随机在其取点
    这是一个搜索特定超参数的很直观的方式
    在这里插入图片描述
    如果要选取神经网络的层数L
    也许会选择层数为2到4中的某个值,顺着2,3,4随机均匀取样才比较合理
    这是在几个在考虑范围内随机均匀取值的例子,这些取值还蛮合理的
    但对某些超参数而言不适用
    在这里插入图片描述
    假设在搜索超参数a(学习速率),假设怀疑其值最小是0.0001或最大是1
    如果画一条从0.0001到1的数轴,沿其随机均匀取值
    那90%的数值将会落在0.1到1之间
    反而,用对数标尺搜索超参数的方式会更合理
    因此这里不使用线性轴
    分别依次取0.0001,0.001,0.01,0.1,1,在对数轴上均匀随机取点
    在Python中,可以这样做,使
    import numpy as np
    import math
    

r = -4 * np.random.rand()
a = math.pow( 10, r )

    那么a∈[10 -4,10 0]

    另一个棘手的例子是给β 取值,用于计算指数的加权平均值
    假设认为β是0.9到0.999之间的某个值,当计算指数的加权平均值时
    取0.9就像在10个值中计算平均值
    有点类似于计算10天的温度平均值
    而取0.999就是在1000个值中取平均
    不要随机均匀在此区间取值

    所以最好的方法就是,探究1-β,此值在0.1到0.001区间内
    设定了1-β=10r,β=1-10r
    在这里颠倒了大小,左边的是最大值,右边的是最小值
    所以要做的就是在[-3,-1]里随机均匀的给 r 取值


    2. 超参数调试实践

    在这里插入图片描述
    如果拥有足够的计算机去平行试验许多模型:
    那绝对采用鱼子酱方式,尝试许多不同的超参数

    如果没有许多计算资源或足够的CPU和GPU下:
    采用熊猫方式,在小批量的训练过程中,耐心地调试学习率等


    参考:

    《神经网络和深度学习》视频课程


    相关推荐:

    深度学习笔记(10) 优化算法(二)
    深度学习笔记(9) 优化算法(一)
    深度学习笔记(8) 实践层面(三)
    深度学习笔记(7) 实践层面(二)
    深度学习笔记(6) 实践层面(一)


    谢谢!

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值