机器学习笔记:SGD (stochastic gradient descent)的隐式正则化
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记:SGD (stochastic gradient descent)的隐式正则化相关的知识,希望对你有一定的参考价值。
1 随机梯度下降的梯度
对于满足分布D的数据集,我们做以下标记:
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带来的小量波动,可以让我们跳出上图红圈的那些不好的局部最小值
以上是关于机器学习笔记:SGD (stochastic gradient descent)的隐式正则化的主要内容,如果未能解决你的问题,请参考以下文章
随机梯度下降法(Stochastic gradient descent, SGD)
Batch Gradient Descendent (BGD) & Stochastic Gradient Descendent (SGD)
Google深度学习笔记 Stochastic Optimization
论文阅读笔记《Stochastic Grounded Action Transformation for Robot Learning in Simulation》