一、优化问题
1、优化目标
(1)优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。
(2)优化算法的目标函数通常是基于训练数据集的损失函数,因此优化的目标是减少训练误差;深度学习(或更广义地说,统计推断)的目标是减少泛化误差,因此除了使用优化算法来减少训练误差之外,我们还需要注意过拟合。
(3)f(x)就是我们代码中的loss()函数,我们想要最小化损失。
(4)目标函数,是不管输入时什么矩阵,都处理为一个向量
(5)限制集合:给C的取值设置条件,比如说令权重方差为1均值为0的限制
2、局部最小与全局最小
(1)x处对应的f(x)值小于在x附近任意其他点的f(x)值,那么f(x)可能是局部最小值。如果f(x)在x处的值是整个域中目标函数的最小值,那么f(x)是全局最小值。
(2)数学公式
(3)使用迭代优化算法求解,一般只能得到局部最小值:深度学习模型的目标函数通常有许多局部最优解。当优化问题的数值解接近局部最优值时,随着目标函数解的梯度接近或变为零,通过最终迭代获得的数值解可能仅使目标函数局部最优,而不是全局最优。
(4)只有一定程度的噪声可能会使参数跳出局部最小值(是小批量随机梯度下降的有利特性之一,小批量上梯度的自然变化能够将参数从局部极小值中跳出)。
3、总结
(1)最小化训练误差并不能保证我们找到最佳的参数集来最小化泛化误差。
(2)优化问题可能有许多局部最小值。
二、凸性
1、凸集
(1)数学公式
(2)集合
2、凸函数
(1)数学公式
(2)在x!=f(x)时成立,为严格凸函数
(3)凸优化问题
(4)深度学习中的凸和非凸:学习的模型基本上都是非凸的,因为凸的(比如线性)很简单,那么信息就不多,非凸更接近实际生活中的例子。
二、梯度下降
1、梯度下降
(1)学习率的大小很重要:学习率太大会使模型发散,学习率太小会没有进展。
(2)梯度下降会可能陷入局部极小值,而得不到全局最小值。
(3)在高维模型中,调整学习率是很复杂的。
(4)预处理方法适当有助于调节比例。
2、随机梯度下降
(1)在样本中随机选择一个,虽然没有计算每一个梯度求平均平滑,但是总体趋势是差不多的
(2)对于凸问题,在广泛的学习率选择,随机梯度下降将收敛到最优解。
(3)当训练数据集中有更多样本时,计算梯度下降的每次迭代的代价更高,因此在这些情况下,首选随机梯度下降。
3、小批量随机梯度下降
(1)将计算机并行考虑进去。
(2)但是需要考虑合适的小批量,批量很小的时候,收敛快但计算慢,批量大的时候,计算代价很大。
(3)小批量随机梯度下降比随机梯度下降和梯度下降的速度快,收敛风险较小。
(4)在训练期间降低学习率有助于训练,前期学习率大一些,后期学习率调小。
(5)小批量随机梯度下降兼顾了计算和统计效率。
(6)在小批量随机梯度下降中,我们处理通过训练数据的随机排列获得的批量数据(即每个观测值只处理一次,但按随机顺序)。
三、冲量法
1、动量法用过去梯度的平均值来替换梯度,这大大加快了收敛速度。
2、动量法可以防止在随机梯度下降的优化过程停滞的问题。
3、由于对过去的数据进行了指数降权,有效梯度数为1/1−β。
4、动量法的实现非常简单,但它需要我们存储额外的状态向量(动量v)。
四、Adam
1、t比较大的时候
2、在t小的时候进行修正
3、g_t'
五、总结
1、深度学习模型大多是非凸
2、小批量随机梯度下降是最常用的优化算法
3、冲量对梯度会更加平滑
4、Adam对梯度做平滑,并且对梯度各个维度值都做重新调整