优化网络的原理与方法(1)--梯度下降

一般神经网络的训练过程可分为两个阶段:

一、通过前向传播算法计算得到预测值,将预测值和真实值作对比,得出两者之间的差距(损失函数)。

二、通过反向传播算法计算损失函数对每一个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数。

 

应用了反向传播算法的前馈神经网络依旧是前馈的,反向传播不是区分前馈与反馈的标准。

前馈神经网络:每一层包含若干个神经元,同一层的神经元之间没有互相连接,层间信息的传送只沿一个方向进行。

反馈神经网络:每个神经元同时将自身的输出信号作为输入信号反馈给其他神经元。

处理结构:

 

1.基于梯度的优化

通过反向传播算法计算损失函数对每一个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数,最终使损失函数可以接受。

1.梯度

在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。

梯度是一个向量,是一个n元函数f关于n个变量的偏导数,比如三元函数f的梯度为(fx,fy,fz),二元函数f的梯度为(fx,fy),一元函数f的梯度为fx。然后要明白梯度的方向是函数f增长最快的方向,梯度的反方向是f降低最快的方向。

 

 
  


2.梯度下降算法

 

梯度下降法的基本思想可以类比为一个下山的过程。首先,我们有一个可微分的函数。这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快,因为梯度的方向就是函数之变化最快的方向,所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是测量方向的手段。

 

3.梯度下降算法的数学解释

根据导数的含义,如果输入发生微小的变化σ,那么输出也会发生相应的变化:

    导数告诉我们如何更改ω来略微地改善J(w):

即将w往导数的反方向移动,J(w)会相应的减小。

对于只含有一组数据的训练样本,更新weights的规则为:

 

 

学习率σ:每次参数更新的幅度。

学习率太小,收敛速度会很慢

学习率太大,损失函数可能不会每次迭代都下降,甚至不收敛。

 

4.梯度下降存在的问题

1、参数调整缓慢

1)梯度下降算法走到接近极小值的时候,由于谷底很平,梯度很小,参数调整会变得缓慢。

2)在平坦区或者鞍点附近,也会有这个问题。如果损失函数存在大面积平坦区,很难逃出去。

2、可能收敛于局部极小值(图5-4)

  如果损失函数非常复杂,存在多个局部极小点,或者许多鞍点,优化会变得困难。因此通常寻找使 非常小的点,将这一点作为一个近似最小点。对于一个深度学习任务,即使找到的解不是真正最小的,但只要它显著低于损失函数的绝大部分值,我们通常就接收这样的解。(怎么知道它显著低于损失函数的绝大部分值呢?)

(一)以多组不同参数值初始化神经网络,取其中误差最小的作为结果。

(二)可视化(matplotlib)

(三)使用“模拟退火”技术

  模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于跳出局部最小值。在每次迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。

(四)使用随机梯度下降

  每次随机选取一个样本进行梯度下降,在梯度下降时加入了随机因素。即便陷入了局部最小点,它计算出的梯度可能仍不为零,这样就有机会跳出局部最小继续搜索。

5.随机梯度下降(Stochastic gradient descent)

只通过一个随机选取的样本来获取“梯度”,以此对w 进行更新。

批量梯度下降算法每次都会使用全部训练样本,因此这些计算是冗余的,因为每次都使用完全相同的样本集。而随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的。

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

不过从另一个方面来看,随机梯度下降所带来的波动有个好处就是,对于类似盆地区域(即很多局部极小值点)那么这个波动的特点可能会使得优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样便可能对于非凸函数,最终收敛于一个较好的局部极值点,甚至全局极值点。

由于波动,因此会使得迭代次数(学习次数)增多,即收敛速度变慢。不过最终其会和批量梯度下降算法一样,具有相同的收敛性。

 

小批量梯度下降(Mini-batch gradient descent)

Mini-batch 梯度下降综合了 batch 梯度下降与 stochastic 梯度下降,在每次更新速度与更新次数中间取得一个平衡,其每次更新从训练集中随机选择 m,m<n 个样本进行学习。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值