优化算法

摘要:
鞍点的形状类似一个马鞍,一个方向两头翘,一个方向两头垂,而中间区域近似平地;一旦优化的过程中不慎落入鞍点,优化很可能就会停滞下来。$r_t=ho*r_{t-1}+g_i*g_i$经验上,RMSProp已被证明是一种有效且实用的深度神经网络优化算法。
1.梯度下降法

1.1梯度

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x,∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。

微积分中使用梯度表示函数增长最快的方向;因此,神经网络中使用负梯度来指示目标函数下降最快的方向,这样可以求得目标函数的最小值

1.2梯度下降法的直观解释

优化算法第1张

一个人站在初始点位置,怎么最快下山。由于不知道怎么走,只能走一步算一步。由于梯度的负方向是山最陡的方向,为了下的快,就要沿着最陡的方向走。因此每走一步,都计算当前位置最陡的方向,这样一直走直到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。当我们换一个初始点位置,这个山峰的低处可能和之前的不一样。

从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解

负梯度中的每一项可以认为传达了两个信息:

  • 正负号在告诉输入向量应该调大还是调小(正调大,负调小)
  • 每一项的相对大小表明每个参数对函数值达到最值的影响程度;

优化算法第2张

1.3梯度下降法算法

1). 先决条件:确认优化模型损失函数

比如对于线性回归,假设函数表示为$h_ heta(x_1, x_2, ...x_n) = heta_0 + heta_{1}x_1 + ... + heta_{n}x_{n}$,添加一维特征$x_0 = 1$

变为$h_ heta(x_0, x_1, ...x_n) = sumlimits_{i=0}^{n} heta_{i}x_{i}$

损失函数为:$J( heta_0, heta_1..., heta_n) = frac{1}{2m}sumlimits_{j=0}^{m}(h_ heta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)^2$

2).初始化参数:在没有任何先验知识的时候,通常将所有的$ heta_i$初始化为0,步长初始化为1

3).梯度下降法:

一.确定当前位置的损失函数的梯度,对于$ heta_i$其梯度表达式如下:

$frac{partial}{partial heta_i}J( heta_0, heta_1..., heta_n)$

二.用步长乘以损失函数的梯度,得到当前位置下降的距离,$alphafrac{partial}{partial heta_i}J( heta_0, heta_1..., heta_n)$

三.确定是否所有的$ heta_i$的距离小于$varepsilon$,如果小于$varepsilon$则算法终止,否则进入步骤四($varepsilon$是自己设定的)

四.更新所有的$ heta_i$,更新表达式如下,更新完毕后继续执行步骤一

$ heta_i = heta_i - alphafrac{partial}{partial heta_i}J( heta_0, heta_1..., heta_n)$

1.4批量梯度下降法(Batch Gradient Descent)

求全部m条数据的梯度,$ heta_i$的表达式:$ heta_i = heta_i - alphasumlimits_{j=0}^{m}(h_ heta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$

1.5随机梯度下降法(Stochastic Gradient Descent)

求一条数据的梯度,$ heta_i$的表达式:$ heta_i = heta_i - alpha (h_ heta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$

使用一条数据的损失近似平均损失

随机梯度下降最大的缺点在于每次更新可能并不会按照正确的方向进行,因此可以带来优化波动(扰动)

优化算法第3张

1.6小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样本来迭代,1<x<m。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。对应的更新公式是:$ heta_i = heta_i - alpha sumlimits_{j=t}^{t+x-1}(h_ heta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}$,其中t是每次取x个样本的起始位置

批大小对优化效果的影响:

较大的批可以使梯度估计更精确

较小的批可以使模型具有更好的泛化能力(对未知数据有更好的预测能力),原因是小的批使梯度估计不那么准确,产生了一些正则化效果;小批量需要小的学习率,同时需要更长的训练时间。

当批的大小为2 的幂时能充分利用矩阵运算操作,所以批的大小一般取 32、64、128、256 等。

1.7梯度下降法存在的问题

梯度下降需要调整超参数α

梯度下降可能陷入局部极值点;除此之外,梯度下降还可能遇到“峡谷”和“鞍点”两种情况

  • 峡谷类似一个带有坡度的狭长小道,左右两侧是“峭壁”;在峡谷中,准确的梯度方向应该沿着坡的方向向下,但粗糙的梯度估计使其稍有偏离就撞向两侧的峭壁,然后在两个峭壁间来回震荡。
  • 鞍点的形状类似一个马鞍,一个方向两头翘,一个方向两头垂,而中间区域近似平地;一旦优化的过程中不慎落入鞍点,优化很可能就会停滞下来。

优化算法第4张

2.自适应学习率α算法

2.1AdaGard

AdaGard为不同参数自动选择不同学习率,偏导大,学习率大;偏导小,学习率小,因此适合稀疏数据学习。

优化算法第5张

$ heta_i$的表达式:$ heta_i = heta_i - {epsilon over delta + sqrt r} * g_{i-1}$

AdaGard存在的问题:

  • 学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束
  • 需要设置一个全局的初始学习率

2.2RMSProp

RMSProp用来解决AdaGard学习率单调递减,到后期学习率过小训练困难。

它在累计平方梯度的时候使用指数加权的移动平均。$r_t = ho*r_{t-1} + (1- ho)g_i * g_i$

优化算法第6张

  • 经验上,RMSProp 已被证明是一种有效且实用的深度神经网络优化算法。

  • RMSProp 依然需要设置一个全局学习率,同时又多了一个超参数(推荐了默认值)

  • Hinton 建议,衰减lvρ推荐为0.1,学习率ε设为0.001

2.3AdaDelta

AdaDelta 和 RMSProp 都是为了解决 AdaGrad 对学习率过度衰减的问题而产生的。

AdaDelta在一个窗口w中对梯度进行求和,而不是对梯度一直累加

优化算法第7张

$RMS[g]_{t} = sqrt{E[g^2]_t + epsilon}$

$RMS[Delta x]_{t-1} = sqrt{E[Delta x^2]_{t-1} + epsilon}$

2.4Adam

Adam在RMSProp基础上,增加了一阶矩估计,增加了偏差修正。

优化算法第8张

偏差修正

注意到,sr需要初始化为0;且ρ1ρ2推荐的初始值都很接近10.90.999),这将导致在训练初期sr都很小(偏向于 0),从而训练缓慢。因此,Adam 通过修正偏差来抵消这个倾向。

3.reference

梯度下降法:https://www.cnblogs.com/pinard/p/5970503.html

各种优化算法:http://ruder.io/optimizing-gradient-descent/

Momentum:http://www.cnblogs.com/jiaxblog/p/9695042.html

AdaDelta:https://blog.csdn.net/XiangJiaoJun_/article/details/83960136

免责声明:文章转载自《优化算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js原型链hookASP.NET Core SignalR (六):在SignalR中管理用户和分组下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

对偶上升

强对偶条件成立(对偶问题和原问题最优解一致) 原问题转化为最小化含最优对偶变量的拉格朗日函数 利用梯度上升法。更新x和对偶变量第一步x最小化,第二步对偶变量更新。 利用了梯度上升法求极大值(梯度下降是求极小值) 梯度用了约束条件的残差有点费解! 对偶分解: 一个f(x)是separable,能分成n个 这n个就可以并行运算了。 为了计算总的残差residu...

Logistic模型原理详解以及Python项目实现

此文转载自:https://blog.csdn.net/master_hunter/article/details/111158447#commentBox 目录 前言 一、Logistic回归模型 二、Logit模型 三、几率 四、Logistic模型 五、基于最优化方法的最佳回归系数确定 5.1梯度上升算法 5.1.1梯度 5.1.2使用梯度上升找到最...

AI框架导学篇--01

AI框架入门 01 作者:elfin 目录 1、数据加载与数据分析 1.1 导入数据 1.2 查看对象的方法、属性 1.3 查看数据集的描述 1.4 查看波士顿数据集的特征名 1.5 查看房间数信息 2、波士顿房价预测 2.1 数据转换与分析 2.2 根据历史报价(报价字典) 2.3 KNN-K近邻估计 2.4 线性回归 2.4.1...

MindSpore模型精度调优实战:常用的定位精度调试调优思路

摘要:在模型的开发过程中,精度达不到预期常常让人头疼。为了帮助用户解决模型调试调优的问题,我们为MindSpore量身定做了可视化调试调优组件:MindInsight。 本文分享自华为云社区《技术干货 | 模型优化精度、速度我全都要!MindSpore模型精度调优实战(二)》,原文作者:HWCloudAI 。 引言: 在模型的开发过程中,精度达不到预期常...

机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考《机器学习实战》这本书...

机器学习优化器总结

一、梯度下降法 1、标准梯度下降法(GD) 公式:Wt+1=Wt−ηtΔJ(Wt) 其中,WtWt表示tt时刻的模型参数。 从表达式来看,模型参数的更新调整,与代价函数关于模型参数的梯度有关,即沿着梯度的方向不断减小模型参数,从而最小化代价函数。 基本策略可以理解为”在有限视距内寻找最快路径下山“,因此每走一步,参考当前位置最陡的方向(即梯度)进而迈出下一...