机器学习笔记:SGD (stochastic gradient descent)的隐式正则化

1 随机梯度下降的梯度

对于满足分布D的数据集(x^{(1)},x^{(2)}),我们做以下标记:

mini-batch的梯度,也就是SGD带来的梯度,可以看成是期望的梯度加上一个误差项

 那么,这个误差项,对于机器学习任务来说,有没有增益呢?

结论是:对于优化问题来说,可以逃离鞍点、极大值点,有时也可以逃离一些不好的极小值点

SGD的隐式正则化:找寻宽的极小值点(flat optima)

2 逃离极大值和鞍点 

首先回顾一下这张图:

当一阶导数为0的时候,根据二阶导数(hessian矩阵)的正定和负定性,我们可能出现极小值、极大值和鞍点三种情况

 使用SGD后,当我们有一个微小的误差扰动后,我们就可以逃离鞍点和局部极大值了。

3 收敛到flat minimum

对于比较sharp的局部极小值,x一点点的不同就会导致f(x)很大的区别。所以落入sharp minimum就需要很精准的梯度下降。

而SGD是自带小误差的,所以不太会落入sharp minimum

 至于为什么不希望落入sharp minimum,我们可以通过下面这个例子说明

红色和蓝色代表了两个类别,我们希望找到它们的边界。

左图所有的红色点都是在红颜色的区域内,蓝色点都在蓝颜色的区域内。所以边界很平缓。通过SGD可以很合理地学习他的边界;

右图某一个红/蓝点周围全是另外一个颜色的区域,这样的边界是很sharp的。(这很可能是训练集的问题)。如果使用全数据进行训练,那么就会这几个特定的点被分类成一个类别,它们周围的区域则是另一个类别。

但是对于右图,换一个测试集,可能那些特殊的点就不存在了(因为不是每个数据集都会有这些error的)。所以全数据集训练的话,可能会导致训练集和测试集的效果不相当。

但是对于右图,如果我们使用SGD的话,这些单独的点(也就是sharp minimum点),会由于SGD的微小扰动而不会最终收敛到这些点。

4 跳出不好的局部极小值 

局部极小值在实际问题中是很常见的:

SGD带来的小量波动,可以让我们跳出上图红圈的那些不好的局部最小值

5 batch gradient descent, stochastic gradient descent 和 mini-batch gradient batch

batch gradient descentstochastic gradient descentmini-batch gradient batch
计算梯度需要的数据大小

全部数据集

单个数据

 

 

一个小batch数量的数据

 

优点保证收敛到凸函数的全局最小值,非凸函数的局部最小值。
  • 比batch gradient descent 快
  • 可以在线学习
  • 比batch gradient descent 快(比SGD慢一点)
  • 相比于stochastic gradient descent, 更新的方差小了
  • 可以在线学习
缺点
  • 梯度下降非常慢
  • 不适用于很大的数据集
  • 无法在线学习
  • 更新过程中会有很大的方差

 

  • mini-batch 大小是一个超参数,需要进行调参

注:有的时候不区分stochastic gradient descent和mini-batch gradient descent,我们会把mini-batch 也称作 SGD

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值