梯度下降法
-
梯度下降法是一种致力于找到函数极值点的算法。
-
梯度的输出向量表明了在每个位置损失函数增长最快的方向,可将它视为表示了在函数的每个位置向哪一个方向移动函数值可以增长
学习速率
-
所谓“学习”就是改进模型参数,以便通过大量训练步骤将损失最小化
-
梯度就是表明损失函数相对参数的变化率,对梯度进行缩放的参数被称为学习速率
-
学习速率是一种超参数或对模型的一种可配置的设置,需要为它指定正确的值。如果学习速率太小,则找到损失函数极小值点时可能需要许多轮迭代;如果太大,则算法可能跳过极小值点并因周期性的跳跃而永远找不到极小值点
-
具体实践中,通过查看损失函数随时间的变化曲线,来判断学习速率的选取是否合适
-
合适的学习速率,损失函数(loss值)随时间下降,直到稳定;不合适的学习速率,损失函数可能会发生
优化器
- 常见的优化器Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重
网络容量
- 可认为与网络中的可训练参数成正比
- 网络中的神经元越多/层数越多,网络容量越大,神经网络的拟合能力越强,但是训练速度、难度越大,越容易产生过拟合、
- 增加神经元个数或者层数都可以提高网络性能,但增加神经元个数效果并不明显,增加层可大大提高,这也是现如今深度学习的层越来越深的原因
过拟合
- 在训练数据上得分很高(loss小,acc大),在测试数据得分却较低,在训练数据某一阶段的loss是下降的,在该阶段测试数据的loss却是上升的;
- 欠拟合则反之
dropout抑制过拟合
-
在训练时丢弃部分神经元,在测试时使用全部神经元
-
待理解:随机森林
超参数
- 在搭建神经网络过程中,需要我们自己选择的参数,而不是通过梯度下降算法去优化的参数,比如中间层的神经元个数、学习速率都是超参数
参数选择原则
-
首先开发一个过拟合的模型
- 添加更多的层
- 让每一层变得更大
- 训练更多的次数
-
然后抑制过拟合
- dropout
- 正则化(较简单)
- 图像增强
- 增加训练数据(最好的办法)
-
最后调节超参数
-
学习速率
-
隐藏层单元数
-
训练次数
-
构建网络的总原则
- 增大网络容量,直到过拟合
- 抑制过拟合
- 继续增大网络容量,直到过拟合