DeepLearning:训练神经网络—梯度下降优化器(optimizer)

训练神经网络—梯度下降优化器(optimizer)

1、optimizer简介

定义

​ 优化器其实可以看做我们的下山策略,其作用是通过改善训练方式来最小化(或最大化)损失函数E(x)。

分类

优化算法分为两大类:一阶优化算法二阶优化算法,我主要介绍的是一阶优化算法。

一阶优化算法

​ 一阶优化算法用时使用各参数的梯度值来最大或最小化损失函数f(x),常用的一阶优化算法是梯度下降。

二阶优化算法

​ 使用了二阶导数(海森矩阵)来最小化或最大化损失函数,由于维数过高导致二阶导数计算成本很高,这种方法并不常用。

优化器伪代码

while True:
    #其中evaluate_gradient是反向传播求得的梯度,loss_fun是前向传播的损失函数
    #step_size是学习率
    #the evaluate_gradient is the gradient which produced in backward prop
    #the loss_fun means the loss function
    #step_size is the learning rate
    weights_grad = evaluate_gradient(loss_fun,data_weights)
    weights += - step_size * weights_grad

2、SGD(随机梯度下降)

背景

​ 原来,我们使用传统梯度下降的方式来进行参数优化,但是传统梯度下降具有自己的缺点:

​ ①计算整个数据集梯度,但只会进行一次更新,因此在处理大型数据集时速度很慢且难以控制,甚至导致内存溢出。

​ ②当我们希望在某一个方向优化的多一些时,很难做到,损失函数值会在梯度较大的方向上发生振荡,不能通过单纯减小学习率来解决,因为如果单纯减小学习率,则会让优化方向改变的更少。

​ ③陷入局部最优点,鞍点(在高维空间中更普遍)。

Q&A

鞍点与局部最优点区别?

image-20211115204335192

​ 从上图可以看出局部最优点陷入“盆地”,而鞍点梯度为0。

​ 损失函数:
L ( w ) = 1 N ∑ i = 1 N L i ( x i , y i , w ) L\left( w \right) =\frac{1}{N}\sum_{i=1}^N{\begin{array}{c} L_i\left( x_i,y_i,w \right)\\ \end{array}} \\ L(w)=N1i=1NLi(xi,yi,w)
​ 梯度:
∇ w L ( w ) = 1 N ∑ i = 1 N ∇ w L i ( x i , y i , w ) \nabla wL\left( w \right) =\frac{1}{N}\sum_{i=1}^N{\nabla wL_i\left( x_i,y_i,w \right)} wL

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值