coursera 机器学习---大规模机器学习

  • Gradient descent with large data sets  (大数据集的梯度下降)

   视频地址

    现在的机器学习和以前比要方便很多 现在拥有了大数据拥有了可以用来 进行学习的数据  机器学习领域有一个说法是 通常不是最好的算法胜出 而是谁有最多的数据

   那么当我们用了大量的数据又该如何使用呢

  在我们计算一个损失函数的时候 通常会使用梯度下降算法 来求出theta 的最小值 代价最小 当有大量的数据的时候发现梯度下降每次迭代都要计算 训练集的误差的平方和 一般训练集都非常大 此时计算量将大大增加 

我们上来不是无脑增加训练数量 此时我们先看下当前使用1000个训练集是否合适在进行下面的计算 此时我们画出学习曲线  看看训练集和交叉测试集在数据集增加情况下变化如何

显然左边的图随着数据集增加会有好的效果 而右边的当数据集增大之后没有明显的效果 这时我们就不需要增大训练集了看看是不是要增加特征 再继续进行训练

  • 随机梯度下降 

(以单变量线性回归为例)当我们的假设函数和代价函数 入上图所示时 我们使用梯度下降

不断更新theta 好处就是可以不断更新theta 不用跑整个数据集然后调整

最后会如此图一样找到 代价最小值 但数据集增大此处计算量会变得很大 

下面引入随机梯度下降

我们定义参数θ 关于训练样本(x(i),y(i))的代价 如上图此时代价函数表现为 每一个样本的代价的总和的平均值

此时他的梯度下降为 想将m个训练样本打乱

然后对单个样本进行梯度下降(可以进行较少次的迭代这样可以使他一点点走向最低点) 进行m次  此时不断的对下一个训练样本 进行拟合得更好

随机梯度下降不断朝着最小值附近移动但是最后会在最小值附近徘徊 (为什么不是一次就到了最低点 是因为数据量少可能达不到最优解?)对于这个疑问--

“在随机梯度下降中 我们有一个外层循环 它决定了内层循环的执行次数 所以 内层循环应该执行多少次呢 这取决于训练样本的大小 通常一次就够了 最多到10次 是比较典型的 所以我们可以循环执行内层1到10次 因此 如果我们有非常大量的数据 普查的人口数据 有13亿人口 所以每次你只需要考虑一个训练样本 这里的i就是从1到3亿了 所以可能你每次只需要考虑一个训练样本 你就能训练出非常好的假设 这时 由于m非常大 那么内循环只用做一次就够了 但通常来说 循环1到10次都是非常合理的 但这还是取决于你训练样本的大小 如果你跟批量梯度下降比较一下的话 批量梯度下降在一步梯度下降的过程中 就需要考虑全部的训练样本 所以批量梯度下降就是这样微小的一次次移动 这也是为什么随机梯度下降法要快得多 这就是随机梯度下降了 如果你应用它 应该就能在很多学习算法中应用大量数据了 并且会得到更好的算法表现”

  • 小批量梯度下降

随机梯度下降是一个个来 二小批量梯度下降则是b个b个来 b一般在2-100之间

那么公式为:

和批量梯度下降比 我们只看前b个就可以开始修改theta了 而且这么做好处是方便是矢量化

  • 随机梯度下降收敛

接下来说如何让其正常收敛和调整学习速率α的值

如何为收敛就是让代价函数在每一次迭代中都变小 小着小着就收敛了

我们此时画出随机梯度/小批量梯度算法每一步 的值 因为不是批量梯度下降 这时就可以画出cost(损失函数)的值

结合下面图像说明下不同的情况改如何调整

 

左上角的图片红色的是 学习速率α 比较小的 和蓝的比较 最后损失函数值更小 而且抖动也更小 

右上角的图片蓝色的是在1000个数据为一组会出现较大波动 改成5000 波动减下但要5000个才打一个点

左下角的就算增加增加一次迭代样本数 同样下降的不明显 此时就要更改特征值了或是看看是不是算法问题

当出现左下角情况的时候会发现并没有收敛 这是要调整

学习速率的选择

可以动态的更改α的值 让他越来越小 可以让他为一个常数除以迭代次数 加上某个常数

  • 在线学习

当我们有稳定的 数据流入时我们可以告别使用一堆已有数据来当做训练集 我们可以在线学习的方式

1.假如我们有一个运快递的网站 用户来会提供一些特征 x 这些特征是快递出发地 和到达地 和给客户的价格  而y则是用户是否选择购买 1 购买了 0表示拒绝购买 此时情况就是每次 进来一个样本 我们学习一次调整一下 theta 此时用到的是就是类似随机梯度下降 只不过样本我们是 一次性的 而且这种方式在经济发生变动时 也会随之进行更改我们theta 

2.当你有一个购物网站这个网站有搜索功能时候 我么做的是估算一个概率 来看这个用户会点击这个手机的概率 当你有一对手机用户使用一个搜索条件 如x x x 我们会根据xxx返回 10个用户最有可能点击的搜索结果   用户点击了   那么这被 点击的记做1 没点的记做0  我们就能一下子拿到10个 x,y 了 这样我们就是就是类似小批量随机梯度下降了只不过样本我们是 一次性的 改更新我们的theta 

  •  映射约减 (map reduce) 方法 

映射化简是将m个测试数据分成 若干份计算出temp  然后再合到一起求出相应的最后的theta 只要算法可以表示为求和的方式就可以用这种方法 先分开然后结果合在一起 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值