【CV】吴恩达机器学习课程笔记第17章

本文探讨了在大规模数据集上使用随机梯度下降(SGD)、mini-batch梯度下降以及在线学习机制。通过实例解析,对比了不同算法在收敛速度和适应性上的特点,介绍了map-reduce和数据并行在加速计算中的应用。
摘要由CSDN通过智能技术生成

本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片
机器学习 | Coursera
吴恩达机器学习系列课程_bilibili

17 大规模机器学习

17-1 学习大数据集

在这里插入图片描述

  • 如果数据集中有1亿个样本,那么梯度下降算法的计算量会变得很大
  • 如果训练效果(误差)的图像是像左边的坐标系一样的话,那么1亿个样本的数据集训练的效果很可能会比1000个样本的数据集好
  • 而如果图像像右边的坐标系一样的话,1000个样本的数据集很有可能训练效果跟1亿个样本的数据集差不多

17-2 随机梯度下降

原来的梯度下降算法称为批量梯度下降算法(batch gradient descent),因为要对所有样本遍历
下面描述随机梯度下降算法(stochastic gradient descent)
以线性回归为例,代价函数为: J train ⁡ ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{\operatorname{train}}(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2
在这里插入图片描述
随机梯度下降的过程:
1.随机打乱所有数据(将所有样本重新随机排列)
2.重复上图中的循环(最外层的Reapt循环可能需要1到10次)

  • 随机梯度下降算法的每一步怎么走取决于遇到的那个数据集,所以随机梯度下降算法向中心靠拢的过程是迂回的,不一定每次都是向中心靠拢的
  • 而原来的梯度下降算法由于每一次都遍历了整个数据集,所以他每一次都是向中心靠拢的

每一次更新参数值都是根据一个样本来更新的,如果第一个样本和第二个样本很相近,那么第一个样本更新完的参数值到第二个样本的时候,第二个样本的cost函数(即更新参数那个公式里面减掉的那项)几乎接近于0了,那么就不会怎么更新参数值了
这个算法应该会先过拟合然后再逐渐的到好的拟合

17-3 mini-batch 梯度下降

在这里插入图片描述

  • batch梯度下降算法中每一次下降用到了全部的m个样本
  • 随机梯度下降算法中每一次下降用到了1个样本
  • mini-batch梯度下降算法中每一次下降用到b个样本
  • b称为mini-batch size,一般取值为10,一般取值范围为2到100

在这里插入图片描述
假设取值为b=10
算法如上图所示

17-4 随机梯度下降收敛

在这里插入图片描述
在随机梯度下降算法中,如何判断是否已经收敛?

  • 在每次要更新 θ \theta θ之前,计算这个样本的cost函数
  • 每经历了1000次循环迭代(遍历了1000个样本),就把这1000(也可以是前5000之类的)个样本的cost函数的平均值输出出来

在这里插入图片描述
上图是画出的图像

  • 如果是像左上角的图像,那么说明算法正在收敛,如果用一个大的学习率 α \alpha α,那么可能得到左上角蓝色的曲线,如果用小的,就可能是红色的曲线(收敛相对比较慢,但震荡的比较小)
  • 右上角蓝色曲线表示取1000次输出一次cost函数的均值的曲线,红色曲线表示取5000次(曲线会比较平滑,但反应会比1000次的慢)
  • 左下角蓝色曲线表示取1000次(看起来是震荡的没有收敛,但是如果换成取5000次可能就能看到红色的曲线:正在收敛,只是比较慢),但也有可能看到粉色曲线,表示函数没有在收敛
  • 右下角的曲线表示函数是发散的,可能需要缩小学习率 α \alpha α

在这里插入图片描述

一般学习算法中的学习率 α \alpha α是一个常数,所以一般代价函数的值会在最小值附近震荡,但是如果想要更加靠近最小值的话,可以定义学习率 α \alpha α α =  常数1   循环次数  +  常数2  \alpha=\frac{\text { 常数1 }}{\text { 循环次数 }+\text { 常数2 }} α= 循环次数 + 常数 常数,让 α \alpha α随着循环次数的增加而逐渐变小
由于这个方法需要再额外确定两个参数,所以这个方法用的很少,因为原来的结果已经足够满意了

17-5 在线学习机制

可以解决有连续的数据流,想要用算法从中学习的问题
在这里插入图片描述
以寄快递网站为例:用户在网站上用确定的目的地和始发地来查询寄件费用,有时用户会选择服务(得到一个正样本 y = 1 y=1 y=1),有时不会选择(得到一个负样本 y = 0 y=0 y=0),需要我们预测选择我们的服务的概率来给出一个合理的价格
在这里插入图片描述
每次多一个数据就更新一次参数值,跟之前的随机梯度算法很像
这样的优点是能不断适应和更新用户的选择变化来调整输出值,但只能适用于有很多用户数据流入的情况,如果用户数据很少,不能用这样的算法
在这里插入图片描述
上图解释了点击率预测问题(CTR)的实现

17-6 map-reduce和数据并行

在这里插入图片描述
假设用批量梯度下降算法
假设训练集中共有400个样本即m=400,那么梯度下降算法中就需要对400个数据进行求和
将训练集分为4份,用4台电脑分别求和第1-100、101-200、201-300、301-400的数据,求和完后再汇总到一台主机上对4个数据进行求和,再进行接下来的运算,这样运算效率就是原来的4倍
在这里插入图片描述
在这里插入图片描述

  • 只要运算中有求和操作就可以用map-reduce来做
  • map-reduce也可以应用于一台电脑上的多核cpu
  • 一般向量化后直接调用线性代数库来运算,有些线性代数库在计算中会自动用map-reduce分配多核分工完成计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fannnnf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值