超参数调整——1

10分钟教你深度学习的调参

linxinzhe

简书作者

0.2072018-03-20 11:47打开App

两类需要调参的参数(parameters)

  1. 优化类的参数:学习率(learning rates)、mini batch、训练代数(epochs)
  2. 模型类的参数:隐含层数(hidden layers)、模型结构的参数(如RNN)

优化类的参数

学习率 Learning Rate

一个好的起点是从0.01尝试起
可选的几个常用值:

  • 0.01
  • 0.001
  • 0.0001
  • 0.00001
  • 0.000001

判断依据是验证集的误差(validation error)

常用策略:

  • 学习率衰减(learning rate)
    • 如果选用了Adam和Adagrad的作为优化器(optimizer),则他们自带了可自适应的学习率(adaptive learning rate)

Mini Batch

可选的常用值:1,2,4,8,16,【32】,64,128,256

推荐32比较常用。32、64、128、256都比较合适

256比较大,一次性计算的多,速度会快,但因为矩阵计算量较大,内存可能超过

小的mini batch size可能因为收敛的抖动比较厉害反而不容易卡在局部最低点
但是mini batch也不能太大,反而准确率下降。

Training Iterations/Epochs

要选择合适的Epochs,就可以用early stopping的方法:

  • 具体就是观察validation error上升时就early stop,但是别一看到上升就停,再观察一下,因为有可能只是暂时的现象,这时候停止反而训练会不充分

early stopping

模型类的参数

隐含层单元数Hidden Units

  • 解决的问题的模型越复杂则用越多hidden units,但是要适度,因为太大的模型会导致过拟合
  • 可以增加Hidden Units数量直到validation error变差
  • 通常来说3层的隐含层比2层的好,但是4,5,6层再深就没什么明显效果了
    ,一个例外情况是CNN

RNN的调参

  • RNN内参数
    1. 选择CELL类型,常用LSTM和GRU
    2. stack多少个layer,通常两层
  • 用作RNN模型前端的word embedding层的embedding数量控制在 50-200之间

深度学习-超参数调整总结

在深度神经网络中,超参数的调整是一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数,下面将分别介绍并总结了不同超参数的调整规则。

 

(1)学习率

学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常lr取值为[0.01,0.001,0.0001]

(2)批次大小batch_size

批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。bath_size通常取值为[16,32,64,128]

(3)优化器optimizer

目前Adam是快速收敛且常被使用的优化器。随机梯度下降(SGD)虽然收敛偏慢,但是加入动量Momentum可加快收敛,同时带动量的随机梯度下降算法有更好的最优解,即模型收敛后会有更高的准确性。通常若追求速度则用Adam更多。

(4)迭代次数

迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。

(5)激活函数

在神经网络中,激活函数不是真的去激活什么,而是用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。比如有些问题是线性可分的,而现实场景中更多问题不是线性可分的,若不使用激活函数则难以拟合非线性问题,测试时会有低准确率。所以激活函数主要是非线性的,如sigmoid、tanh、relu。sigmoid函数通常用于二分类,但要防止梯度消失,故适合浅层神经网络且需要配备较小的初始化权重,tanh函数具有中心对称性,适合于有对称性的二分类。在深度学习中,relu是使用最多的激活函数,简单又避免了梯度消失。

 

调参
 非常相似的数据集非常不同的数据集
非常少的数据在顶层调一层线性分类器尝试在不同的层训练线性分类器
非常多的数据可微调一些层微调更多的层

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值