热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

机器学习课程笔记(第十周)大规模机器学习

课程链接https:www.coursera.orglearnmachine-learning参考文章https:www.cnblogs.commaxiaodoubaop10222

课程链接 https://www.coursera.org/learn/machine-learning
参考文章 https://www.cnblogs.com/maxiaodoubao/p/10222170.html


大规模机器学习 Large Scale Machine Learning

用来处理大数据的算法

大数据集的学习 Learning With Large Datasets
如果有一个低方差的模型, 通常通过增加数据集的规模,可以获得更好的结果
但是如果数据集特别大,则首先应该检查这么大规模是否真的必要,也许只用 1000个训练集也能获得较好的效果,可以绘制学习曲线来帮助判断。

如果必须使用一个大规模的训练集,则可以尝试使用随机梯度下降法(SGD)来代替批量梯度下降法。

随机梯度下降法 Stochastic Gradient Descent

1.将m个训练样本随机重新排列。(数据预处理)
2.对m个训练样本进行遍历,关于某个单一的训练样本(x(i),y(i))来对参数按公式进行更新

随机梯度下降的做法实际上就是扫描所有的训练样本,首先是第一组训练样本(x(1),y(1)) ,然后只对这第一个训练样本 对它的代价函数计算一小步的梯度下降。换句话说 我们要关注第一个样本,然后把参数θ稍微修改一点,使其对第一个训练样本的拟合变得好一点。完成这个内层循环以后,再转向第二个训练样本, 还是一样在参数空间中进步一小步 ,即稍微把参数修改一点,让它对第二个样本的拟合更好一点。做完第二个再转向第三个训练样本,同样还是修改参数 让它更好的拟合第三个训练样本 ,以此类推 直到完成所有的训练集。然后外部这个重复循环会多次遍历整个训练集。
从这个角度分析随机梯度下降算法我们能更好地理解为什么一开始要随机打乱数据,这保证了我们在扫描训练集时对训练集样本的访问是随机的顺序 。这一步能让你的随机梯度下降稍微快一些收敛。

跟批量梯度下降不同,随机梯度下降不需要等到对所有m个训练样本求和来得到梯度项,而是只需要对单个训练样本求出这个梯度项。我们已经在这个过程中开始优化参数了,就不用等到把所有那3亿的美国人口普查的数据拿来遍历一遍,不需要等到对所有这些数据进行扫描,然后才一点点地修改参数 直到达到全局最小值。对随机梯度下降来说 我们只需要一次关注一个训练样本。

小批量梯度下降 Mini-Batch Gradient Descent

在批量梯度下降中, 我们会在每一代中使用所有的 m 个数据。 而在随机梯度下降中, 我们会在每一代中使用一个单一的数据。 小批量梯度下降则是介于两者之间。 具体地说, 用这个算法我们将在每次迭代中使用 b 个数据, 其中 b 是一个称为 "迷你批次" 的参数。 


 

小批量梯度下降的一个缺点是, 现在有了这个额外的参数 b, 可能需要调整小批量批次的大小,因此可能需要时间。 但如果你较好地进行矢量化, 这有时可以比随机梯度下降运行更快。

随机梯度下降的收敛性 Stochastic Gradient Descent Convergence

目的:确保调试过程已经完成 并且能正常收敛。同样重要的是 你怎样调整随机梯度下降中学习速率α的值。

对于批量梯度下降的算法 我们确定梯度下降已经收敛的一个标准方法是画出最优化的代价函数,要保证这个代价函数在每一次迭代中都是下降的。
对于随机梯度下降算法,为了检查算法是否收敛 ,我们沿用之前定义的cost函数 ,在随机梯度下降法学习时,在我们对某一个样本进行训练前,在随机梯度下降中,我们要关注样本(x(i),y(i)) ,然后关于这个样本更新一小步,再转向下一个样本(x(i+1),y(i+1)) 
换一种说法,当随机梯度下降法对训练集进行扫描时 在我们使用某个样本(x(i),y(i))来更新θ前 计算出这个假设对这个训练样本的表现。我要在更新θ前来完成这一步,原因是如果我们用这个样本更新θ以后再让它在这个训练样本上预测,其表现就比实际上要更好了。
最后,为了检查随机梯度下降的收敛性,每1000次迭代运算中,我们对最后1000个样本的cost值求平均然后画出来。通过观察这些画出来的图,我们就能检查出随机梯度下降是否在收敛。


图1:红色线的学习率比蓝色线要小,因此收敛的慢,最后收敛的更好一些。
图2:红线通过对5000次迭代求平均,而不是1000个,得到更加平滑的曲线。
图3:蓝线颠簸不平而且没有明显减少。可以增大α来使得函数更加平缓,也许能使其像红线一样下降;或者可能仍像粉线一样颠簸不平且不下降,说明模型本身可能存在一些错误。
图4:如果曲线正在上升,说明算法发散。应该把学习速率α的值减小。

如果曲线看起来噪声较大,或者老是上下振动 ,那就试试增大你要平均的样本数量,这样应该就能得到比较好的变化趋势。如果你发现代价值在上升,那么就换一个小一点的α值。

在线学习 Online Learning

针对数据流,而非针对离线静态数据集进行学习。
在线学习的算法与随机梯度下降算法类似,只对单一的实例进行学习,而非对一个提前定义的训练集进行循环。


一旦对一个数据的学习完成,便可以丢弃它,不需要再存储。这样的好处在于可以针对用户当前行为,不断更新模型以适应该用户。慢慢地调试学习到的假设,将其调节更新到最新的用户行为。

映射化简和数据并行 Map Reduce and Data Parallelism


只要你的机器学习算法可以表示为训练样本的一个求和,只要算法的主要计算部分可以表示为训练样本的求和,那么你可以考虑使用映射化简技术来将你的算法扩展到非常大规模的数据上。


推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
author-avatar
mjadhu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有