TASK6

梯度下降法(Gradient Descent)

目前梯度下降法,目前分为三种梯度下降法:标准梯度下降法(GD,Grandient Descent),随机梯度下降法(SGD,Stochastic Gradient Descent)及批量梯度下降法(BGD,Batch Gradient Descent)

1、标准梯度下降(GD)

  • 假设要学习训练的模型参数 W W W,代价函数为 J ( W ) J(W) J(W)则代价函数关于模型参数的偏导数即相关梯度 Δ J ( W ) \Delta J(W) ΔJ(W),学习率为 η t \eta_t ηt,则使用梯度下降法更新参数为:
    W t + 1 = W t − η Δ J ( W t ) W_{t+1} = W_t - \eta\Delta J(W_t) Wt+1=WtηΔJ(Wt)
    W 为模型参数
  • 从表达式来看,模型参数的更新调整,与代价函数关于模型参数的梯度有关,即沿着梯度的方向不断减少模型参数,从而最小化代价函数
  • 基本策略是“在有限视距内寻找最快路径下山”,因此没走一步,参考当前位置走最陡的方向(即梯度)进而迈出下一步。可以表示为下图:
    在这里插入图片描述
    缺点:
  • 训练速度慢:每走一步就需要调整下一步的方向,下山的速度变慢。在应用大型数据集中,每输入一个样本都要更新一次参数,且每次迭代都要遍历所有的样本。使得训练过程及其缓慢,需要花费很长时间才能得到收敛解
  • 容易陷入局部最优解:由于是在有限视距内寻找下山的反向。当陷入平坦的洼地,会误以为达到了山谷最低点,从而不会继续往下走。所谓局部最优解就是鞍点。落入鞍点,梯度为0使得模型不会更新

2.批量梯度下降法(BGD)

  • 假设批量训练样本总数为n,每次输入和输出的样本分别为 X ( i ) , Y ( i ) X^{(i)},Y^{(i)} X(i),Y(i),模型参数为 W W W,代价函数为 J ( W ) J(W) J(W),每输入一个样本 i i i代价函数关于 W W W的梯度为 Δ J i ( W t , X ( i ) , Y ( i ) ) \Delta J_i(W_t,X^{(i)},Y^{(i)}) ΔJi(Wt,X(i),Y(i)),学习率为 η t \eta_t ηt,则使用批量梯度下降更新的公式如下:
    W t + 1 = W t − η t ∑ i = 1 n Δ J i ( W t , X ( i ) , Y ( i ) ) W_{t+1} = W_t - \eta_t\sum_{i=1}^{n}\Delta J_i(W_t,X^{(i)},Y^{(i)}) Wt+1=Wtηti=1nΔJi(Wt,X(i),Y(i))
    其中, W t W_t Wt表示 t t t时刻的模型参数
  • 从表达式来看,模型参数的调整更新与全部输入样本的代价函数的和(即批量/全局误差)有关。即每次权值调整发生在批量样本输入之后,而不是每输入一个样本就更新一次模型参数。这样就会大大加快训练速度
  • 基本策略可以理解,在下山之前掌握了附近的地势情况,选择总体平均梯度最小的方向下山。
    评价:
  • 批量梯度下降法比标准梯度下降法训练时间短,且每次下降的方向很正确

3.随机梯度下降法(SGD)

  • 对比批量梯度下降法,假设从一批训练样本 n n n中随机选取一个样本 i s i_s is。模型参数为 W W W,代价函数为 J ( W ) J(W) J(W),梯度为 Δ J ( W ) \Delta J(W) ΔJ(W),学习率为 η t \eta_t ηt,则使用随机梯度下降法更新参数表达式为:
    W t = W t − η t g t W_t = W_t - \eta_tg_t Wt=Wtηtgt
    其中, g t = Δ J i s ( W t ; X i s ; X ( i S ) ) , i s ∈ 1 , 2 , . . . , n g_t = \Delta J_{i_s}(W_t;X^{i_s};X^{(i_S)}),i_s\in {1,2,...,n} gt=ΔJis(Wt;Xis;X(iS)),is1,2,...,n表示随机选择的一个梯度方向, W t W_t Wt表示 t t t时刻的模型参数。
  • E ( g t ) = Δ J ( W t ) E(g_t)=\Delta J(W_t) E(gt)=ΔJ(Wt),这里引入了随机性和噪声,但期望仍然等于正确的梯度下降。
  • 基本测率可以理解为随机梯度下降像一个盲人下山,不用每走一步计算一次梯度,但总能下到山底,只不过过程很扭曲
  • 在这里插入图片描述
    评价
    优点
  • 虽然SGD像需要走很多步,但是对梯度的要求很低(计算梯度快)。引入噪声,大量的理论和实践工作证明,只要噪声不是很大,SGD会很好的收敛。
  • 应用大型数据,训练速度很快。例如每次从百万数据样本中,取几百个数据点,算一个SGD梯度,更新一下模型参数。相比于标准梯度下降法遍历全部样本,每输入一个样本更新一次参数,要快的多
    缺点
  • SGD在随机选择梯度的同时会引入噪声,使得权值更新的方向不一定正确
  • 未能克服局部最优解问题

动量优化法

动量优化方法是在梯度下降法的基础上进行的基础上进行的改变,具有加速梯度下降的作用。一般有标准动量优化方法Momentum、NAG(Nesterov accelerated gradient)动量优化方法。
NAG在Tensorflow中与Momentum合并在同一函数tf.train.MomentumOptimizer中,可以通过参数配置启用

1.Momentum

  • 使用动量(Momentum)的随机梯度下降法(SGD),主要思想是引入一个积攒历史梯度信息动量来加速SGD
  • 从训练集中取一个大小为 n n n的小批量 { X ( 1 ) , X ( 2 ) , . . . , X ( n ) } \{X^{(1)},X^{(2)},...,X^{(n)}\} {X(1),X(2),...,X(n)}样本,对应的真实值分别为 Y ( i ) Y^{(i)} Y(i),则Momentum表示为
    { v t = α v t − 1 + η t Δ J ( W t , X i s , Y ( i s ) ) W t + 1 = W t − v t \left\{\begin{matrix} & v_t = \alpha v_{t-1}+\eta_t\Delta J(W_t,X^{i_s},Y^{(i_s)}) & \\ & W_{t+1} = W_t - v_t & \end{matrix}\right. {vt=αvt1+ηtΔJ(Wt,Xis,Y(is))Wt+1=Wtvt
    其中, v t v_t vt表示t时刻积攒的加速度; α \alpha α表示动力的大小;一般取值为0.9(表示最大速度10倍于SGD)。 Δ J ( W t , X ( i s ) , Y ( i s ) ) \Delta J(W_t,X^{(i_s)},Y^{(i_s)}) ΔJ(Wt,X(is),Y(is))含义见SGD算法。 W t W_t Wt表示t时刻模型参数。
  • 动量主要解决SGD的两个问题:一是随机梯度的方法(引入的噪声);二是Hessian矩阵病态问题(可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题)。
  • 理解策略为:由于当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。这样可以加快小球向下滚动的速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值