中国高校SAS数据分析大赛2018宣讲会-华南赛区巡讲

达人专栏丨机器学习之理解梯度下降(上)

在跟东莞理工的小伙伴们上课的时候,一直强调,梯度下降是最重要的基础概念,几乎没有之一。


01

下山问题


当你站在一个山顶上,这时你应该怎么下到最低的山脚?

答案当然是看看山脚在哪里,然后直接往那个方向下山。
可是,如果雾很大,能见度很低,基本只能看清附近一两米的视野呢?

当然,这时最好的策略可能就是报警求救了。不过如果觉得自己还可以抢救一下的话,那你最好的策略可能就是:在可视的范围里,沿着最陡的地方下山。

如果完全是个瞎子(不要问我瞎子是怎么走到山顶上去的),那该怎么办?

作为一下聪明的瞎子,是不甘心等死的。他想到了一个策略:先随机向四周的某个方向探一脚,判断是上坡还是下坡,如果是下坡就沿着这个方向移动一步,如果是上坡就向相反方向移动一步。


瞎子的方法为什么能凑效?


这当然是基于一个连续可微的假设,属于数学老师说的“不妨设”的范畴。(请停止抬杠)



02

简化的下山问题


刚才我们说的下山问题是基于三维空间的,为了讨论方便,现在我们简化一点,我们考虑二维空间的下山问题,还是最简单那种,如下图:

7.jpg

假如这是一个二维世界的山,一个二维的瞎子正处于山腰红点的位置,要走到最低的山谷绿点的位置,该怎么走呢?

这个瞎子也能看见的问题,好像有点傻,或者就像刚才那个聪明的瞎子一样,随机往查探一个方向,如果是下坡则移动,否则往方向移动。问题的关键就在这里,在数学上,应该怎么表达这个策略?


数学上有一个“斜率”的概念,在红点处的斜率是一个大于零的值,这时移动的策略是往X轴的负方向移动。如果红点绿点的另一边,则斜率是小于0的值,这时移动的策略应该是往X轴的正方向。

也就是说,当斜率大于零的时候,沿着X轴的负方向移动;而当斜率小于零的时候,沿着X轴的正方向移动。我们把斜率冠以一个“梯度”的名字,再精炼一点表达这个策略就是:沿着梯度的反方向走。


在低等的二维世界的策略,放到我们高等的三维世界是否适用呢?答案是的。不过并不准备继续废话这个话题了,只要满足连续可微,显然都是满足的。



03

步应该走多远


我们已经知道要往梯度的方向走,可是一步应该走多远?

最简单的想法是,一步走固定的长度,例如如果现在在x=2的位置,此时计算梯度大于0,计算过程可以类比在山上探路的过程,于是我们往x轴的反方向走0.1。这是x=1.9,重复上面的步骤即可。如果实际最小值在x=0.15的地方,那按照我们0.1的步伐走的话,我们只能在0.1和0.2之间摆动了。

这里有两个主要问题:一是开始是明明还有比较远,却走得比较慢;而是在接近终点时,步伐又显得太大,而取不到更好的结果。

所以,我们下山的步伐应该满足这个特征,在离终点比较远时,步伐要大一点,而在接近终点时,步伐又应该尽量小一点。类似下图的效果:
8.jpg

还是回到梯度上,显然,在离终点较远时,梯度比较大(这里是绝对值的意思),而在接近最低点时,梯度比较小。于是,我们可以按照梯度大小来移动。

不过,直接按梯度大小来移动,会很不灵活,如果太大了怎么办?所以,我们可以考虑按照梯度的某个倍数来移动,例如0.1倍等。

而这个倍数就是一个经验值了,因时因地而异。不同场景下,这个经验值很可能是不一样的,我们还可以测试不同的倍数值,找到一个最优值。



03

下山问题的最终策略


综上所述,聪明人下山的最终策略是:沿着梯度的反方向移动,每次移动的距离是梯度的若干倍。我们把这个策略抽象成一个数学公式:

9.jpg

这就是我们从第i个位置移动到第i+1个位置时的策略,其中alpha是一个经验值(我们可以冠以一个“学习率”的名称),那个倒三角形是数学中常用的符号之一,称“Del算子”,梯度通常用它来表示(维基百科上有它的说明)。


ps:废话了半天下山问题,却依然没有讲到和机器学习的关系,且听下回分解。


商务合作
BD@ibbd.net
简历投递
fuwu@ibbd.net
关于迪奥
产品中心
联系我们
行业应用
公司简介
新闻动态
人才招聘
自然语言理解
场景文字识别
文档OCR识别
金融行业
政府&公共事业
零售行业
020-29179586
工作日:9:30-18:30
广州市天河区华观路田头岗二路一横街起点国际三层
能源行业
文本数据挖掘