随机梯度下降法matlab程序,批量梯度下降和随机梯度下降

1.概念

(1)批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。

(2)随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。

2.数学表达

以下以圆拟合为例,已知m个数据拟合点,需要找到最优的拟合圆,即最佳的圆心(xc,yc),最佳拟合半径R。

圆拟合损失函数可以表示为:

25148f6971a8

圆拟合损失函数

就是要找到最佳拟合圆,使得损失函数最小化:

25148f6971a8

损失函数最小化

2.1. 批量梯度下降的求解思路

(1)将L对xc,yc,R求偏导,得到各自的梯度

25148f6971a8

参数梯度

(2)由于是要最小化风险函数,所以按每个参数的梯度负方向,来更新每个参数,假设学习率为lr

25148f6971a8

参数更新

(3)从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度!!所以,这就引入了另外一种方法,随机梯度下降。

2.2. 随机梯度下降的求解思路

随机梯度下降是求每个样本的损失函数,对参数求偏导得到对应梯度,来更新参数。

25148f6971a8

第 i个样本的损失函数

25148f6971a8

第 i个样本的参数梯度

25148f6971a8

参数更新随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

3.matlab代码

25148f6971a8

批量梯度下降

25148f6971a8

随机梯度下降

25148f6971a8

拟合结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值