梯度下降算法

一.梯度下降算法的推导

在深度网络的训练过程中,为了使损失尽可能的小,经常使用梯度下降算法训练网络,为什么沿着负梯度的方向更新权值就能使损失值越来越小,下面给出梯度下降算法的简要推导。

已知函数f(x),当前x取值 x0 x 0 ,令 x1=x0+λn⃗  x 1 = x 0 + λ n → ,则:
f(x1)=f(x0+λn⃗ ) f ( x 1 ) = f ( x 0 + λ n → )
            =f(x0)+f(x0)λn⃗ +O(λn⃗ )2 = f ( x 0 ) + f ′ ( x 0 ) ⋅ λ n → + O ( λ n → ) 2
            f(x0)+f(x0)λn⃗  ≈ f ( x 0 ) + f ′ ( x 0 ) ⋅ λ n →
            =f(x0)+λ|f(x0)||n⃗ |cos<f(x0),n⃗ > = f ( x 0 ) + λ | f ′ ( x 0 ) | ⋅ | n → | ⋅ cos < f ′ ( x 0 ) , n → >
cos<f(x0),n⃗ >=1 cos < f ′ ( x 0 ) , n → >= − 1 ,即 n⃗  n → f(x0) f ′ ( x 0 ) 180 180 。 ,即 n⃗  n → 取负梯度方向时, f(x1) f ( x 1 ) 取最小值
min(f(x1))=f(x0)λ|f(x0)||n⃗ | m i n ( f ( x 1 ) ) = f ( x 0 ) − λ | f ′ ( x 0 ) | ⋅ | n → |

只有当函数为凸函数时梯度下降算法才能保证达到全局最小值,在凹函数中沿着梯度方向可以到达局部最小值,是否能到达全局最小值和初始点 x0 x 0 的取值有关

二.梯度下降算法的分类

梯度下降算法:在全部数据上最小化损失,损失函数的取值是所有训练数据上的损失,每轮迭代计算所有的损失函数非常耗时。
随机梯度下降算法:每一轮迭代中随机选择某一条训练数据上的损失来优化参数,但在某一条数据上损失更小并不代表在全部数据上损失更小,使用随机梯度下降可能无法达到局部最优。
batch梯度下降算法:上面两种方法的折中。每次在一个batch上优化神经网络的参数并不会比单个数据慢太多,也可以大大减少收敛所需的迭代次数,同时使收敛到的结果更加接近梯度下降算法的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值