016-机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考

7.3 再谈梯度下降法

前面,我们提到梯度下降法的目的是找到模型中那些更好的 的函数映射关系。房 价估算的例子中, 要让当前这个人去推荐下一个水平更高的房产专家。

通常的机器学习的书里面会画这样一张图, 如图5所示。 这是一张简单的损失曲 线图。 x x x横轴是模型中一个参数的系数 w i w_i wi的取值, y y y纵轴是模型由于这个参数 w i w_i wi的变化计算得到的损失值。我们假设最先随机选 w i = B w_{i}=B wi=B,计算得到了点B的损失值。那么如何让 w i w_i wi变化,让损失值loss减少?相信大家一眼就能看出来,让 w i w_i wi的值增大一点,往 C C C的方向去,就可以让损失值减少。

图5:

但在实际应用中确是有困难的。因为,实际应用中,我们不可能先去画一张损失曲线图,再让计算机去做图像识别,看看当前点在哪里,当前位置的曲线的样子是什么样的,再去找到点 C C C。幸好,数学家早在 19 世纪就研究过这个问题了。他们发明了导数和梯度的数学表达式及其计算方法。我们直接拿来用,就是先将模型函数对 w i w_i wi求个导数,得到一个新的函数 f ′ f^\prime f,再把 w i = B w_i=B wi=B代进去,就可以得到一个实数,记为 Δ w i \Delta w_i Δwi。然后再将 w i w_i wi减去 Δ w i \Delta w_i Δwi,即,
C = w i − Δ w i = B − Δ w i C = w_i -\Delta w_i =B-\Delta w_i C=wiΔwi=BΔwi
这个新的值就是 C 点横坐标值了。你说,神奇不神奇?我觉得挺神奇的。
然后就不停地反复这个过程,直到可以得到一个满意的结果就可以了。

这里有一个隐含的意思,有必要给大家解释清楚。 Δ w i \Delta w_i Δwi这个数的取值,包括两个方面:

1.) 正负号:取值大小变化的方向 (direction)。

2.) 绝对值:系数取值大小变化的幅度 (magnitude)。

通常正号时,因为被省略了,所以大家不太注意。 正号也是方向,别忘记了。 还 拿房价估算的例子,专家A 推荐 专家B 时, 我们想要专家 B水平高于专家 A,可不是 相反。

本来这就结束了,但是实际应用时又出了状况。 如图6(a)所示, 绝对值太大了, 造成更新参数时出现了振荡。 我们本来希望是B → C → D ,找到最小的损失值点。 可是由于这个函数图像比较陡峭, 可能会出现B → E → C → F → B 。 拿我们程序员的话 说,出现了死循环或死锁现象。 从信号处理,控制论的角度说,出现了振荡。

在这里插入图片描述

这时候, 聪明的读者可能会想到一个相反的实际问题。 如果绝对值太小了会出 现什么样的情况? 我们再看一个图, 如图 6(b)。 由于损失曲线〸分平坦, 收敛的速 度超级慢, 花了超长的时间还到不了 C 点。 合理的办法是, 损失曲线平坦时, 可以 让∆w i 绝对值大一些, 陡峭时,步子小一点。 这种情况的出现在房价估算的例子中, 也有所体现。 你想,大家的工作生活圈子其实都不大, 很可能会出现 B 推荐 E,E 推 荐 C, C 又推荐回 B 的情况的。 同时,大家的估算水平可能也总相差不大,卷子得分 拉不开距离。 到头来,我们只在一个局部的小圈子里磨叽, 找不到那个最好的专家。

大家只得引入了学习率(Learning Rate)概念来控制更新的幅度(绝对值), 以及 一系列的办法去处理振荡或是收敛速度慢的问题。 我们会在后面逐步给大家介绍。

在这一小节的最后,我们再介绍和梯度下降相关的两个洋气的名词。 一个是Minibatch stochastic gradient descent (mini-batch SGD)。 前面解释过,你可以理解为,找一 个人来, 先做 100 道题后, 每道题得分加起来, 取个平均分。 再让他推荐下一个。 另一个是Stochastic gradient descent (SGD), 这个更简单,找个人,只做一道,只一道题 就定这个专家的水平。 这里的单词 stochastic 的意思是每张卷子上的只有一道题, 这 道题是在题库(输入数据集合)里随机选择出来的。 1 这样做的目的是有原因的,因 为现代的模型〸分复杂, 求导后加和就更复杂,计算量大太。 只好为了节省计算资 源,不得已才用的。 不管怎么说,大数据时代的数据变多了, 我们要想办法加快训练 的速度。 所以,接下来,我们介绍训练的并行化。

017-机器学习背后的思维-针对入门小白的概念算法及工具的朴素思考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值