一、tensorflow调参方法
(1)Grid Search:网格搜索,在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。
(2)Random Search:
(3)Bayesin Optimization:贝叶斯优化;
二、深度学习调参经验
2.1 激活函数的选择:常用的激活函数有relu、leaky-relu、sigmoid、tanh等。对于输出层,多分类任务用softmax输出,二分类任务选用sigmoid输出。而对于中间隐层,则优先选择relu激活函数。另外,构建RNN时,要优先选用tanh激活函数。
2.2 学习率设定:一般学习率从0.1或0.01开始尝试。学习率设置太大会导致训练十分不稳定,设置太小会导致损失下降太慢。学习率一般要随着训练进行衰减。衰减系数设0.1,0.3,0.5均可,衰减时机,可以是验证集准确率不再上升时,或固定训练多少个周期以后自动衰减。
2.3 防止过拟合:一般常用的防止过拟合方法有L1、L2、dropout、提前终止、数据集扩充等。如果模型在训练集上表现良好但在测试集上表现欠佳,可以选择增大L1或L2正则的惩罚力度,或者增大dropout的随机失活概率(经验首先0.5);或者当随着训练的持续,在测试集上不增反降时,使用提前终止训练的方法。
2.4 优化器选择:如果数据是稀疏的,就用自适应方法,即Adagrad, Adadelta, RMSprop, Adam。整体来讲,Adam是最好的选择。SGD虽然能达到极小值,但是比其它算法用的时间长,而且可能被困在鞍点。如果需要更快的收敛,或者是训练更深更复杂的网络,需要用一种自适应的算法。
2.5 BN层:BN层具有加速训练速度,有效防止梯度消失与梯度爆炸,具有防止过拟合的效果。
2.6 自动调参方法:(见上)
2.7 参数随机初始化与数据预处理:参数初始化很重要,它决定了模型的训练速度,与是否可以躲开局部极小。数据预处理方法一般也就是采用数据归一化即可。