[deeplearning-001] stotisticks gradient descent随机梯度下降算法的最简单例子解释

本文通过一个简单的例子介绍了梯度下降算法的基本原理和迭代过程,然后详细阐述了随机梯度下降(SGD)的差异,即每次迭代时随机选择部分变量进行优化。分析表明,SGD在处理大量样本时,不仅在前期迭代中表现优秀,而且在信息冗余和计算复杂度方面具有优势。
摘要由CSDN通过智能技术生成

1.gradient descent梯度下降优化

1.1假设要优化一个函数 f(x)=(x1)2 求它的最小值。这个函数在 x=1 时有最小值,这是解析解。如果用梯度下降法,是这样的:
f(x)=2(x1)
每一步的迭代公式是:
xi+1=xiηf(xi) (为什么是减号?因为是求最小值,如果是求最大值,就是加号)
如果 xi+1xi<0.1 则精度足够,终止计算。

1.2 初始值 x0=5 η=0.8 (初始值可以随便设,但 η 需要经验性地选择一下,步长太大可能会引起不收敛,步长太小会慢,更复杂一点可以搞个自适应的计算方式以调优)
1.3 第1步:
x1=x0ηf(x0)=50.82(51)=1.4

1.3 第2步
x2=x1ηf(x1)=1.40.82(1.41)=2.44

1.3第3步
x3=x2ηf(x2)=2.440.82(2.441)=0.138

1.4 第4步
x4=x3ηf(x3)=0.1380.82(0.1381)=1.517

1.5 第5步
x5=x4ηf(x4)=1.5170.82(1.5171)=0.69

1.6 第6步
x6=x5ηf(x5)=0.690.82(0.691)=1.186

1.7 第7步
x7=x6ηf(x6)=1.1860.82(1.1861)=0.89

1.8 第8步
x8=x7ηf(x7)=0.890.82(0.891)=1.066

1.9第9步
x9=x8ηf(x8)=1.0660.82(1.0661)=0.9604

1.10第10步
x10=x9ηf(x9)=0.96040.82(0.96041)=1.02

此时 x10x9=0.0596<0.1 ,精度足够,计算终止。此时,数值解1.02和解析解1非常接近了。

这就是梯度下降算法。

2.随机梯度下降算法
1.1假设要优化一个函数 f(x,y)=(x1)2+(y2)2 。这个函数在 x=1,y=2 时有最小值,这是解析解。如果用梯度下降法,是这样的:
f(x,y)x=2(x1)
f(x,y)y=2(y2)
每一步的迭代公式是:
xi+1=xiηf(x,y)x
yi+1=yiηf(x,y)x

如果 xi+1xi<0.1 yi+1yi<0.1 则精度足够,终止计算。随机梯度下降算法,跟梯度下降算法,唯一的差别,就是每次不是选择全部变量进行优化,而是随机选择少量变量进行优化。比如本例是两个变量,那么就每次随机选择一个变量优化。

3.SGD的若干理论分析
在知乎有一个文章谈的很好https://zhuanlan.zhihu.com/p/28060786 ,总结起来就是,从直觉、试验、理论三个方面,SGD性能都好:a) 相对于非随机算法,SGD 能更有效的利用信息,特别是信息比较冗余的时候; b)相对于非随机算法, SGD 在前期迭代效果卓越; c)如果样本数量大,那么 SGD的Computational Complexity 依然有优势。理论分析要多读,这个比较麻烦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值