深度学习训练调优秘籍

image

有时候获胜的不是谁有最好的算法,而是谁有最多的数据

自2006年始,深度学习不断刷新着人们对于人工智能上限的理解,并逐步开始在工业界发挥着越发重要的作用。然而不可否认的,现阶段大多数较成熟的深度学习神经网络还是一个黑盒子,如何调校模型以达到最优的应用效果仍是一个经验性的工作。好在已有Rishabh Shukla大侠将深度学习训练调优的秘籍分享了出来,小虾米借花献佛,与江湖好友们一同切磋~

  1. 训练数据预处理
    尽管深度学习相比浅层学习对输入数据的特征更加不敏感,但也要做好必要的预处理工作,包括:尽可能获得更多的数据(百万级以上),移除不良数据(噪音、假数据或空值等),做必要的数据增强等。

  2. 选择合适的激励函数
    合适的激励函数将为模型引入必要的非线性因素。Sigmoid函数由于其可微分的性质是传统神经网络的最佳选择,但在深层网络中会引入梯度消失和非零点中心问题。Tanh函数可避免非零点中心问题,此外还可以尝试ReLU、SoftSign等面向特定任务的激励函数。

  3. 确定隐层单元和数量
    隐层单元数量多少决定了模型是否欠拟合或过拟合,两害相权取其轻,尽量选择更多的隐层单元,因为可以通过正则化的方法避免过拟合。与此类似的,尽可能的添加隐层数量,直到测试误差不再改变为止。

  4. 权重初始化
    权重初始化常采用随机生成方法以避免网络单元的对称性,但仍过于太过粗糙,根据目前最新的实验结果,权重的均匀分布初始化是一个最优的选择,同时均匀分布的函数范围由单元的连接数确定,即越多连接权重相对越小。

  5. 确定学习速率
    学习速率是重要的超参数之一,它是在收敛速度和是否收敛之间的权衡参数。选择0.01或者伴随着迭代逐步减少都是合理的选择,最新的方法开始研究学习速率的自动调整变化,例如基于目标函数曲率的动量或自适应调参等。

  6. 超参数调优
    网格搜索是传统机器学习方法中的重要超参数优化手段,然而深度神经网络参数的大幅增多将使得该过程呈指数爆炸而不可行。可行的解决办法是通过随机采样或者添加先验知识来降低搜索空间范围。

  7. 选择优化算法
    传统的随机梯度下降算法虽然适用很广,但并不高效,最近出现很多更灵活的优化算法,例如Adagrad、RMSProp等,可在迭代优化的过程中自适应的调节学习速率等超参数,效果更佳。

  8. 参数设置技巧
    无论是多核CPU还是GPU加速,内存管理仍然以字节为基本单元做硬件优化,因此将参数设定为2的指数倍,如64,128,512,1024等,将有效提高矩阵分片、张量计算等操作的硬件处理效率。

  9. 正则优化
    除了在神经网络单元上添加传统的L1/L2正则项外,Dropout更经常在深度神经网络应用来避免模型的过拟合。初始默认的0.5的丢弃率是保守的选择,如果模型不是很复杂,设置为0.2足矣。

  10. 其他方法
    除了上述训练调优的方法外,还有其他一些常用方法,包括:使用mini-batch learning方法、迁移训练学习、打乱训练集顺序、对比训练误差和测试误差调节迭代次数、日志可视化观察等等。


数据科学武林风起云涌,
随数据小虾米共闯江湖~
weixin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值