汕头建设网站的公司,网站设计与开发公司,单位建设网站硬件,499元做网站常见优化器整理
一、SGD#xff08;随机梯度下降#xff09; 公式#xff1a; 经典的mini-batch SGD使用的很多#xff0c;效果也比较不错#xff0c;但是存在一部分问题 选择恰当的初始学习率很困难学习率调整策略受限于预先制定的调整规则相同的学习率被应用于各个参数…常见优化器整理
一、SGD随机梯度下降 公式 经典的mini-batch SGD使用的很多效果也比较不错但是存在一部分问题 选择恰当的初始学习率很困难学习率调整策略受限于预先制定的调整规则相同的学习率被应用于各个参数高度非凸的误差函数的优化过程如何避免陷入大量的局部次优解或鞍点
梯度下降遇到的问题
很难选择一个合适的学习率如果学习率太小将会导致收敛非常缓慢如果学习率太大也会阻碍收敛导致损失函数值在最小值附近波动甚至发散。上述问题可以通过提前定义一个学习速率表当达到相应轮数或者阈值时根据表改变学习率但是这样无法适应训练数据本身特征。并且对于所有参数我们使用同一个学习速率如果我们的数据是稀疏的或者我们特征具有不同的频率我们可能不希望将它们更新到同样的程度并且我们希望对那些出现频率低的特征更新更快。另外在神经网络中普遍是具有非凸的误差函数这使得在优化网络过程中很容易陷入无数的局部最优点而且更大困难往往也不是陷入局部最优点而是来自鞍点也就是在一个维度上其梯度是递增另一个维度其梯度是递减而在鞍点处其梯度为0这些鞍点附近往往被相同误差点所包围且在任意维度梯度近似为0所以随机梯度下降很难从这些鞍点逃出。
二、AdaGradAdaptive Gradient 自适应梯度 能够对每个不同的参数调整不同的学习率对频繁变化的参数以更小的步长进行更新对稀疏的参数以更大的步长进行更新 公式 增加了分母梯度平方和的平方根能够累积个参数的历史梯度评分频繁更新的梯度累计分母大步长就小稀疏的梯度累积的梯度分母小步长就大。AdaGrad能够自动为不同参数适应不同的学习率平方根的分母项相当于对学习率α进行了自动调整大多数的框架实现采用默认学习率α0.01 优势在数据分布稀疏的场景能够更好利用稀疏梯度的信息比标准SGD更容易收敛 缺点分母项不断累积当时间累积后会导致学习率收缩到太小导致无法收敛
三、RMSProp 结合梯度平方的指数移动平均数来调节学习率变化能够在不稳定的目标函数情况下很好收敛。 公式 计算t时刻的梯度 计算梯度平方的指数移动平均数Exponential Moving Averageγ是遗忘因子指数衰减率默认设置为0.9 梯度更新的时候与AdaGrad类似只是更新的梯度平方的期望指数移动均值其中ε10−8避免除数为0。默认学习率α0.001。 优势能够克服AdaGrad梯度急剧减小的问题再很多应用中都展现出优秀的学习率自适应能力尤其在不稳定Non-Stationary的目标函数下比基本的SGD、Momentum、AdaGrad表现更良好。
四、Adadelta Adadelta算法可以解决上述问题其一阶向量跟adagrad一样二阶参数有所变化 二阶参数表达式跟动量表达式相似引入了参数γ可以知道二阶动量其实之前所有梯度平方的一个加权平均值表达式如下 从而可以解决AdaGrad带来的分母越来越大的问题
五、Adamadaptive Moment Estimation自适应矩估计 Adam是一种将动量和Adadelta或RMSprop结合起来的算法也就引入了两个参数β1和β2其一阶和二阶动量公式为 但是由于一阶和二阶动量初始训练时很小接近于0因为β值很大于是又引入一个偏差来校正 其中t代表其t次方所以刚开始训练时通过除以1-β就可以很好修正学习速率当训练多轮时分母部分也接近1又回到了原初始方程所以最后总的梯度更新方程为 其中β1默认值为0.9β2默认值为0.999ε为10-8Adam集合动量和Adadelata两者的优点从经验中表明Adam在实际中表现很好同时与其他自适应学习算法相比更有优势。