zoukankan      html  css  js  c++  java
  • 吴恩达老师机器学习课程学习--课时十七

    课时十七      大规模机器学习

    本节课时讲了一些在机器学习中遇到大规模的训练集时可用的方法。当然,在使用这些方法之间我们也要检查一下是否有必要用这么大的数据集,通过绘制学习曲线来判断不用大数据集是否可行。当确定需要大数据集时,我们可以参考以下方法。

    1、随机梯度下降法

    批量梯度下降算法中的代价函数形式为:

    批量梯度下降算法需要的的重复步骤为:

    所以,在每一次梯度下降时,我们都会用到所有的训练样本,在计算微分求导项时,我们也会对m个样本进行求和运算,由于数据集庞大,这样做计算量就会很大,算法执行也会很慢。为了适应大数据集,我们采用随机梯度下降法。

    在随机梯度下降法中,我们定义代价函数为一个单一训练实例的代价:

    1/2是为了求导之后方便数学计算。随机梯度下降算法的步骤:首先对训练集进行随机洗牌,然后重复:

    随机梯度下降算法在每一次计算之后便更新参数,而不需要首先将所有训练集求和,在批量梯度下降算法还没有完成一次迭代时,随机梯度下降算法便已经走出了很远。但是这样的算法存在的问题是,不是每一步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。

    2、小批量梯度下降

    小批量梯度下降是介于批量梯度下降算法和随机梯度下降算法之间的算法,每次计算常数b次训练实例,便更新一次参数,算法内容为:

    小批量梯度下降有时会比随机梯度下降更快,是因为,在很好的向量化的条件下,我们可以利用很多线性代数库,能够支持平行计算,这样速度会很快。

    3、随机梯度下降收敛

    在随机梯度下降中,我们在每次更新Θz之前都要计算一次代价,然后每x次迭代后,求出这x次对训练实例计算代价的平均值,然后绘制这些平均值与x次迭代的次数之间的函数图像。如下图:

    当我们绘制这样的图表时,可能会得到一个颠簸不平但是不会明显减少的函数图像(如上面左图中蓝线所示)。我们可以增加来使得函数更加平缓,也许便能看出下降的趋势了(如上面左图中红线所示);或者可能函数图表仍然是颠簸不平且不下降的(如洋红色线所示),那么我们的模型本身可能存在一些错误。

    如果我们得到的曲线如上面右图所示,不断地上升,那么我们可能会需要选择一个较小的学习率

    我们也可以令学习率随着迭代次数的增加而减小,例如令:

     

    随着我们不断地靠近全局最小值,通过减小学习率,我们迫使算法收敛而非在最小值附近徘徊。 但是通常我们不需要这样做便能有非常好的效果了,对进行调整所耗费的计算通常不值得。

    课程笔记部分来自:“机器学习初学者”网站提供的吴恩达老师的2014机器学习课程笔记http://www.ai-start.com/

  • 相关阅读:
    如何解除任务管理器被禁用
    一、JavaScript概述
    001_html基本结构
    postman常见问题记录
    fidder工具使用
    SonarQube工具使用问题汇总
    业余书籍读后感
    jmater常见问题处理
    测试知识记录(更新中)
    HTTP协议
  • 原文地址:https://www.cnblogs.com/zhangliqiangvictory/p/13412665.html
Copyright © 2011-2022 走看看