吴恩达机器学习——大规模机器学习


随机梯度下降


  • 批量梯度下降中,可以发现每次下降时都要加载所有的数据,当样本数目较多时,计算速度会变得很慢。于是在这里提出一个面向大规模数据的随机梯度下降算法。
  1. 首先,随机打乱数据集。
  2. 然后使用新的梯度下降算法。

在这里我们可以看到:

  • 在每次内部循环中,每个样本只加载一次。对于一般的数据集内部循环将重复1-10次,而对于m极大(如3亿)的数据集,一般重复一次就可以达到比较满意的效果。
  • 整个过程是不断向最优解靠近的过程,但并不是直接找到最优解,最后的结果也是最优解的一个近似值。

随机梯度下降收敛


对于随机梯度下降收敛,我们应该如何检查是否收敛到了满意的值呢?

我们每次在修改参数之前,都计算cost的值,每隔1000个计算平均值描点画图。

由于计算的“迂回”性,我们画出的曲线也经常是曲折的。

第一幅图说明,如果我们适当减小学习率,曲线的颠簸程度可能会减小,最终得到的近似值也可能使得cost较小。但总的来说区别不大。

第二幅图说明,我们适当增大计算均值画图的间距,曲线可能会更平坦。

第三幅图说明,我们可能得到是一堆杂乱的曲线,看不出趋势,可以适当增大计算均值画图的间距,如果是仍未下降,算法并未正确学习。

第四幅图说明,如果我们得到的曲线呈现上升趋势,说明我们的学习率过高。

这里我们介绍一种使得学习率随时间变化,越来越小的算法。

但这个算法的缺点是,我们还要确认这两个常数。

分母中的另一个参数是循环次数。


mini-batch梯度下降


下面我们介绍一种介于以上两种梯度下降方案中间的方案,那就是每次修改参数都是使用b个样本计算,这样的好处是提高了并行计算率,得到的结果也可能并不是那么颠簸。


在线学习


与采用固定的数据集相反,如果网站用户的口味可能不断变化,或者网站的客户流量较大,可以产生较多的数据集,我们通常会采用在线学习的方案。也即,我们根据每一个新登录网站的用户的行为来调整参数。

猜你喜欢

转载自blog.csdn.net/weixin_39714797/article/details/87730998