怎么做好一个深度学习调包侠

1、到底是选择Adam还是SGD优化器    

选Adam的好处
Adam傻瓜式,可以无视学习率
-- 收敛速度快

选SGD的好处
SGD适合要求高的模型
-- 精度高
-- 一般从一个较大的学习率进行训练

最优选择:Adam+SGD
-- 可以先用Adam粗调,然后使用SGD精调

2、Momentum优化器也有很大作用    

面对小而连续的梯度但是含有很多噪声的时候,最先使用这个
--  Momentum借用了物理中的动量概念,即前几次的梯度也会参与运算,每次迭代有一定的衰减。
-- 最红要参数:动量衰减参数α
-- α经常取的值:0.9,0.99,0.7等。
-- α越大,前一迭代的所占比重越大,方向梯度改变越小,越能加速学习

3、根据数据集的特点选择优化器

除了上面这些显而易见的情况,其他情况下优化器的选择,则是根据具体情况具体选择了。不可说,不可说。

4、为什么要批量归一化

最终目的:

-- 为了解决sigmoid函数梯度消失的问题

形象理解:

-- 将特征数据,挪到梯度集中的区域,就像其他的归一化方法做的事情
-- 但批量归一化多了两个参数来进行还原
-- 一般归一化方法虽然对梯度消失会有一定效果,但难免在修正特征数据后会有负面影响
-- 而批量归一化因为其还原操作,可以减少这种影响

实际流程:

-- 批量归一化层也可以当作一个独立的神经网络层,也有前向和反向阶段来训练其两个归一化参数γ和β
-- 初期γ值为1,β值为0,β是还原因子,前期β为0,所以前期这个批量归一化层就相当于一个普通的归一化层,后期经过训练后还原效果才越来越好
-- 从批量归一化层的前期还原能力低,但解决梯度消失的能力大,到后期的还原能力高,此时已经网络训练完毕,不用关心梯度消失,所以完美契合了网络训练过程

5、随机失活    

问题是,随机失活是完全随机,自己也不知道会失活哪一部分神经元

优点:
-- 可以提升训练速度
-- 但可能会丢失特征

6、合理调整网络神经元个数

怎么理解神经元

在数学上

-- 在机器学习中的神经元就是一个数学函数的占位符,它仅有的工作就是对输入使用一个函数,然后给一个输出。
-- 这种神经元中使用的函数,在术语上通常叫做激活函数

物理上

-- 神经元数即是节点数
-- 每层的节点数都是2的幂次方,这样在物理上更友好

神经元个数越多,理论上说准确性越高,因为抽取的特征越多,但变量也会越多,所以训练速度会越慢

7、欠拟合

如果训练到最后,训练集,测试集准确率都很低,那么说明模型有可能欠拟合。
那么后续调节参数方向,就是增强模型的拟合能力。例如增加网络层数,增加节点数,减少dropout值,减少L2正则值等等。

8、过拟合

如果训练集准确率较高,测试集准确率比较低,那么模型有可能过拟合,这个时候就需要向提高模型泛化能力的方向,调节参数。
-- 训练集准确率大于测试集

你可能感兴趣的