一、优化器
1.SGD是什么?
- 批梯度下降:遍历全部数据集算一次损失函数,计算量开销大,计算速度慢,不适合在线学习。
- 随机梯度下降(SGD):每次随机选择一个数据计算损失函数,求梯度并更新参数,计算速度快,但收敛性可能不太好。
- 批量随机梯度下降(Mini-batch SGD):用小批量样本来近似全部,将样本分为m个mini-batch,每个mini-batch包含n个样本。
- 使用动量(Momentum)的随机梯度下降法(SGD):在随机梯度算法中,每一步的步幅是固定的,而在动量学习算法中,每一步走多远不仅依赖于本次的梯度大小还取决于过去的速度。速度是累计各轮训练参数的梯度。动量主要解决SGD的两个问题:一是随机梯度引入的噪声;二是hessian矩阵病态问题,可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题。
2.简单介绍下Adam算法
RMSprop将学习率分解成一个平方梯度的指数衰减的平均。Adam中动量直接并入梯度的一阶矩估计。其次,相比缺少修正因子导致二阶矩估计可能在训练初期具有很高偏置的RMSprop,Adam还包括偏置修正,修正从原点初始化的一阶矩估计和二阶矩估计。本质上是带有动量的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要是经过偏置校正后,每一次迭代学习率都有一个确定范围,使得参数比较平稳。
3.Adam和SGD的区别?
- SGD缺点是更新方向完全依赖于当前batch计算出的梯度,因此十分不稳定。
- Adam的优点在于:1.考虑历史步中的梯度更新信息,能够降低梯度更新噪声.2.此外经过偏差和校正后,每一次迭代学习率都有个确定单位,使得参数比较平稳。
- 但Adam可能对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。且SGD和Adam没法很好的避免局部最优问题。
二、过拟合
1.过拟合指什么?造成的原因是什么?解决方法有哪些?
- 定义:模型在训练集上表现很好,但在测试集合新数据上表现很差
- 出现的原因:1.模型的复杂度过高、参数过多 2.训练数据比较小 3.训练集合测试集的分布不一致 4.样本里的噪声数据过大,导致模型过分记住了
- 解决方法:降低模型复杂度;数据增强;正则化(L1,L2,dropout);早停
2.过拟合和欠拟合的比较
过拟合:模型在训练集上表现的很好,但是在测试集合新的数据上表现的很差。输出结果高方差,模型很好的适配训练样本,但在测试集上表现的很糟糕,有一个很大的方差。