大规模机器学习 Large scale machine learning

  • 学习大数据集 learning with large datasets
  • 随机梯度下降 Stochastic Gradient Descent
  • Mini-Batch 梯度下降 Mini-Batch gradient descent
  • 随机梯度下降收敛 stochastic gradient descent convergence
  • 在线学习 online learning
  • 减少映射与数据并行 Map-reduce and data parallelism

引入:大规模机器学习,即学习大规模数据的机器学习。某种意义上,现代算法拟合效果更好是因为数据量大,这就是为什么需要研究大规模机器学习。

学习大数据集 learning with large datasets

根据先前所学知识可知,提高学习算法效率的一个高效方法为:低偏差的学习算法与大数据相结合。因此解决问题的办法并不是算法的好坏,而是数据量的多少。

大数据学习也存在一些计算问题。巨大的数据规模将增加计算量,从而极大地提高计算成本。
所以,为什么不降低数据量呢?对于高偏差问题,降低数据量可能同样能达到相似的结果(右)。高方差问题则不能。

总之,在大规模的机器学习中,我们往往使用合理的计算方法或高效的计算方法,来处理庞大的数据集。如:随机梯度下降( Stochastic Gradient Descent)、减少映射(Map Reduce)。

随机梯度下降 Stochastic Gradient Descent

引入:大部分算法的计算思路是:提出代价函数,然后结合梯度下降等方法优化代价函数,从而得到模型的未知参数。这种方法对大规模数据就不适用了,因为计算量太大。针对这一问题,下面介绍普通梯度下降的改进——随机梯度下降 ( Stochastic Gradient Descent),它可以用于大部分机器学习算法中。

首先回顾使用梯度下降训练代价函数。

使用梯度下降算法,θ\thetaθ的变化路径如图右侧。每一步都需要计算θj\theta_jθj​,因此但数据量特大时计算量会相应增加。于是这种梯度学习又称批量梯度下降(Batch Gradient Descent),“批量”可以理解为需要考虑一批训练样本。

下面介绍一种随机梯度下降。与批量梯度下降不同的是,它不需要每次迭代时考虑全部的训练样本,而是每次迭代时只考虑一个训练样本
随机梯度下降定义代价函数(costcostcost函数)为单个训练样本的平方误差的一半,也就是衡量假设函数在单个训练样本(x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i))上的表现。此时,总体代价函数Jtrain(θ)J_{train}(\theta)Jtrain​(θ)等于假设函数在每一个训练样本(x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i))上代价函数的平均值。
在迭代更新θ\thetaθ中,随机梯度下降首先随机打乱数据集。然后顺序遍历训练样本,使用单个训练样本的代价函数偏导(梯度项)代替总体偏导平均值,从而帮助θ\thetaθ更新。
其中,最开始的随机打乱训练样本顺序,有助于加速代价函数的收敛。更重要的是,每次迭代中,随机梯度下降的梯度项只考虑计算单个训练样本,并在这个过程中朝着全局最小值方向进行修改θ\thetaθ。

综上,得到随机梯度下降的训练步骤。总体来说,随机梯度下降的thetathetatheta大多数时候会朝着全局最小值的方向变化。当然有时候,也会一直在全局最小值附近变化。
一般来说,第二步中的外层循环只需要重复1−10x1-10x1−10x次,当然这个取决于训练样本量的大小。

Mini-Batch 梯度下降 Mini-Batch gradient descent

引入:在上一部分中,我们讨论了随机梯度下降的原理、以及运行速度相对于批量梯度下降更快的原因。本部分,讨论另外一种梯度下降——Mini-Batch 梯度下降 (Mini-Batch gradient descent),它有时甚至比随机梯度下降更快。

与批量梯度下降、随机梯度下降不同,Mini-Batch 梯度下降每次迭代使用bbb个训练样本。其中,bbb是一个称为Mini-Batch大小的参数,取值一般在2-100之间(可以10)。

总之,Mini-Batch梯度下降的训练步骤如图。这也解释了为什么它比批量梯度下降更快。
那么与随机梯度下降相比又如何呢?为什么使用bbb个训练样本呢?实际上,只有获得优秀的向量化方式时,Mini-Batch梯度下降才会优于随机梯度下降。也就是通过使用合适的向量化方式计算余下的样本,有时能够使用一个好的数据代数库实现bbb个训练样本的并行梯度计算。
Mini-Batch梯度下降的缺点在于需要花时间确定参数bbb的值。

随机梯度下降收敛 stochastic gradient descent convergence

引入: 之前学习过随机梯度下降算法,那么如何判断调试过程是否结束并且已经收敛到合适的位置了呢?此外,如何调整随机梯度下降中学习速率α\alphaα的值呢?

回顾批量梯度下降,它通过绘制代价函数随迭代次数变化的曲线判断算法是否在收敛。每次计算代价函数,需要遍历整个训练集。
对于随机梯度下降,它每次通过考虑一个训练样本,来改假设函数。因此对应的,它在每次迭代前,需要首先计算cost(θ,(x(i),y(i))cost(\theta, (x^{(i)}, y^{(i)})cost(θ,(x(i),y(i))。并且,每进行1000次迭代,需要将这前1000个cost(θ,(x(i),y(i))cost(\theta, (x^{(i)}, y^{(i)})cost(θ,(x(i),y(i))的平均值画出来,从而得到代价函数随迭代次数变化的曲线。通过观察该曲线,可以判断随机梯度下降是否在收敛。

下图展示随机梯度下降的costcostcost函数变化曲线,每个数据点代表前1000个样本的平均值。

  • 可以发现,曲线中包含非常多的噪声。此外,学习速率较小,可能使得costcostcost函数变化曲线更加平稳(图左上的红线)。
  • 增加1000到5000,可以发现曲线变得更加平滑(图右上红线)。
  • 可能曲线形状如图左下蓝线。但增加求平均值的样本数到5000,可能发现曲线在下降。因为此时曲线中噪声过多,掩盖住了函数的实际变化趋势。也有可能求平均值的样本数到5000时,还是发现曲线非常平滑,这说明算法确实没有在收敛。这时需要调整学习速率或调整特征或其他。
  • 可能曲线形状如图右下蓝线,代价函数呈现上升趋势。这说明需要减小学习速率α\alphaα。
    总之,如果曲线噪声过大、上下波动过大,可以增加求均值的样本数量;如果代价函数在增加,可以减小学习速率α\alphaα。

最后,关于学习速率α\alphaα还有一点需要注意。
一般来说,学习速率α\alphaα在调试过程中是不变的。但是为了使得代价函数更好地逼近全局最小值,在调试中可以缓慢减小学习速率α\alphaα的值。但这会给算法增加工作量,并且不变的α\alphaα值已经能得到一个逼近全局最小值的结果了,因此实际中很少使用这种办法。

在线学习 online learning

引入:本部分将讨论一种新的大规模机器学习机制——在线学习机制( online learning setting)。在线学习可以满足连续一波数据或连续数据流的建模需求。

下面用航运服务的例子进行说明。
假如我们需要优化给运输包裹的售价。也就是已知用户特征、运输包裹的往返地、售价,我们希望学习特定价格下用户接受服务的概率,从而优化售价。
假设我们使用逻辑回归算法,此时算法的运算步骤如下图。此时,算法一次训练一个样本,然后丢弃它。有趣的是,该算法可以适应变化的用户偏好。但数据量足够大时,系统展示出来的策略将会符合最新用户表现出来的特征。
注意,该算法适用于大型网站(数据量充足),小型网站(数据量较少)则不适用。

下面展示一个很适合使用在线学习的例子——产品搜索。这类问题被称作:点击率预测学习问题(predicted click-through rate,predicted CTR)。此类问题的解决策略为:每次给用户展示最有可能被点击的10个产品,从而得到10组样本。然后使用在线学习更新参数,之后丢弃这十组数据。进行下轮循环。

减少映射与数据并行 Map-reduce and data parallelism

引入:批量梯度下降、随机梯度下降、Mini-batch 梯度下降、在线学习都是只能在单机上使用的算法。实际中由于数据规模过大,存在多机合作进行机器学习的需求。Map-reduce能解决这一问题。

假设我们使用批量梯度下降优化逻辑回归的代价函数,为了书写方便设置mmm为400。因此有了第一行的θ\thetaθ更新公式。但是数据量m过大,影响总体运算速度,因此使用Map-Reduce 的思想进行处理。
下面讲述Map-Reduce 的思想。把数据集分为四份训练样本,然后分别发送给四台机器进行计算。此时,每台机器计算量为原本的1/4,因此运算速度提高到原来的四倍。得到计算结果temptemptemp后,将temptemptemp发送给中心服务器进行汇总整合,从而更新参数θ\thetaθ。这种做法最终能得到与批量梯度下降相同的结果,只不过它是通过四台机器协同工作实现的运算。

综上,得到Map-Reduce 思想的示意图如图。
由于网络延迟,这种思想的实际运算速率比原本的四倍少点点。但这已经很不错了。

使用Map-Reduce实现机器学习运算时,需要思考 学习算法是否可以表示成训练集的求和。实际上,很多算法能达到这一要求。

上文讨论了Map-Reduce 算法在多台电脑上并行运算。实际上,在单台机器上进行Map-Reduce 计算也是可行的,只要电脑拥有多个CPU、CPU拥有多个核心。后者的优势在于:不用担心网络延迟的问题。
部分线性代数库能自动利用多核实现并行运算,此时就不需要另外使用Map-Reduce算法。

参考链接
网易版吴恩达机器学习课程
吴恩达机器学习 网易云课堂

吴恩达机器学习[18]-大规模机器学习相关推荐

  1. 机器学习-吴恩达-笔记-13-大规模机器学习

    目录 大型数据集的学习 批量梯度下降 随机梯度下降 小批量梯度下降 随机梯度下降收敛 在线学习 映射化简和数据并行 [此为本人学习吴恩达的机器学习课程的笔记记录,有错误请指出!] 大型数据集的学习 如 ...

  2. 机器学习学习吴恩达逻辑回归_机器学习基础:逻辑回归

    机器学习学习吴恩达逻辑回归 In the previous stories, I had given an explanation of the program for implementation ...

  3. 机器学习-吴恩达-笔记-6-应用机器学习的建议

    目录 评估一个假设(假设函数) 模型选择和交叉验证集 诊断偏差和方差 正则化和偏差/方差 学习曲线 决定下一步做什么 [此为本人学习吴恩达的机器学习课程的笔记记录,有错误请指出!] 当我们运用训练好了 ...

  4. 推荐一个比吴恩达还优质的机器学习课程

    我们都知道AI的核心驱动力是机器学习,所以只要掌握了常见的机器学习算法以及工具,完全可以做出非常酷的AI产品.最近几年AI的发展突飞猛进,产生了大量成熟的工具,这也使得学习AI的门槛也变得越来越低.现 ...

  5. 吴恩达DeepLearningCourse3-结构化机器学习项目

    文章目录 第一周:机器学习策略1 正交化 单一数字评估指标 满足和优化指标 训练/开发/测试集 机器学习和人的表现 第二周:机器学习策略2 进行误差分析 修正标注错误的数据 使用来自不同分布的数据进行 ...

  6. (吴恩达)6.应用机器学习的建议、机器学习系统的设计

    文章目录 十.应用机器学习的建议(Advice for Applying Machine Learning) 10.1 决定下一步做什么 10.2 评估假设 10.3 模型选择和训练.验证.测试集 1 ...

  7. 完课率最高 | 带学吴恩达《机器学习》课程和作业,带打Kaggle全球顶级大赛!...

    机器学习算法入门哪家好?吴恩达! 你说我为什么知道?这个要从前两个月说起. 我参加了一场500人的话题讨论会,主题是「推荐适合入门机器学习的公开课」. 结果活动一开始,就被一群学算法的工程师和研究生刷 ...

  8. 【AI】吴恩达斯坦福机器学习中文笔记汇总

    1.吴恩达机器学习和深度学习课程的字幕翻译以及笔记整理参见: 以黄海广博士为首的一群机器学习爱好者发起的公益性质项目(http://www.ai-start.com). 2.黄海广博士公益项目介绍 h ...

  9. 吴恩达《机器学习训练秘籍》:7 条关于项目实践的实用建议

    翻译 | shawn 出品 | 人工智能头条(公众号ID:AI_Thinker) <机器学习训练秘籍>(Machine Learning Yearning)是吴恩达的新作,主要讲的是如何应 ...

最新文章

  1. Castle ActiveRecord学习(四)延迟加载、分页查询、where条件
  2. python sqlalchemy操作SQLite
  3. python 线程中出现执行错乱_多处理会导致Python崩溃,并在调用fork()时在另一个线程中出现错误...
  4. react-native-Cocoapods-Swift-Project
  5. 精通 ASP.NET MVC 4 学习笔记(一)
  6. 被窃听、被定位:“裸奔时代”还有隐私吗?
  7. mysql索引如何分裂节点_从MySQL Bug#67718浅谈B+树索引的分裂优化(转)
  8. 透明大页相关内核参数_Alibaba Cloud Linux 2系统中与透明大页THP相关的性能调优方法...
  9. centos安装python3.7和yum报错解决方法
  10. 计算机主机的cpu,台式机cpu能换吗?台式电脑换cpu的详细步骤
  11. 完美世界3D格斗手游[格斗宝贝]今日公测
  12. 新浪20年:独行侠的影响力之路
  13. 安利一下好用免费的思维导图绘制软件(实在篇)
  14. python绘制的Svg图打开一片空白
  15. 这七种职业男人让多少日本女性着迷
  16. java:下拉列表框组件
  17. Oracle 触发器(tigger)4
  18. Java二叉树(递归实现)
  19. TCP连接,三次握手问题
  20. Trias发起的世界区块链黑客松,牛津启动会首秀成功!

热门文章

  1. HDU 1263-水果
  2. MFC界面库BCGControlBar v33.0 - 全新升级Ribbon Bar、工具栏等
  3. mysql修改为远程连接_Mysql设置远程连接
  4. k30pro杀进程严重怎么解决_剧本杀桌游店在创业中,有哪些问题和困难?怎么有效解决问题?...
  5. c语言如何判断字符不是空格,C语言中如何判断一个字符是空格,下一个字符不是空格...
  6. 发布职位:图森未来TuSimple# 4月份纳斯达克上市base 北上技术路线:激光雷达+毫米波雷达+摄像头 + 高级规划决策 + 高精地图前端后端软件大数据感知定位算法
  7. 51nod 1624
  8. WPBeginner赠品获奖者+我们建立了2所学校
  9. “云上电视台”解决方案在成都发布
  10. 无人机巡检场景小目标检测与量化加速部署方案详解