由浅层的神经网络到层次较深的神经网络,单纯靠增加神经网络层数并不能有效提高模型的性能,此处将总结一些优化算法:
优化神经网络一:使用正则化技巧提高模型的泛化能力
常用的正则化方法如下所示:
- L1、L2 正则化
- dropout 正则化
- Data Augmentation 增加训练样本
- Early stopping 选择合适的迭代训练次数
优化神经网络二:梯度优化
常用的梯度优化方法如下:
-
梯度下降
- Batch 梯度下降
- Mini-Batch梯度下降
- 随机梯度下降 (SGD)
-
动量梯度下降 (Momentum GD)
-
Nesterw Momentum
-
AdaGrad
-
RMSprop
-
Adam
优化神经网络三:网络初始化技巧和超参数调优
- 网络初始化技巧
-
网络输入的标准化 (使各特征值的数量取值范围相同)
-
权重 w 初始化
- 让权重 W 的方差为 1 / n[l-1]
W[l] = np.random.randn(n[l],n[l-1])*np.sqrt(1/n[l-1])
- 让权重 W 的方差为 2 / n[l-1]
W[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/n[l-1])
- 让权重 W 的方差为 2 / n[l−1]⋅n[l]
W[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/(n[l-1]*n[l]))
-
- 超参数调试
深度神经网络需要调试的超参数较多,常见如下:- 学习因子 α
- 动量梯度下降因子 β
- Adam 优化算法参数 β1、β2、ε
- 神经网络层数
- 各隐藏层神经元个数
- 学习因子下降参数
- 批量训练样本包含的样本个数
- L1、L2 正则化系数 λ