Coursera机器学习(Andrew Ng)笔记:大规模机器学习
来源:互联网 发布:mac开机进入客人用户 编辑:程序博客网 时间:2024/05/22 11:52
大规模机器学习 Large Scale ML
机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改
当我们的算法在m较小的情况下表现为高方差时,通过增大数据集可以改善性能。该方法在高偏差时显然是行不通的。目前来看,我们得到的数据集很容易达到上亿级别,每次梯度计算都对上亿个数据集进行计算显然是不现实的。因此,我们需要使用下面章节的算法来提高算法的性能。
随机梯度下降 Stochastic Gradient Descent
随机梯度下降与批(batch)梯度下降相比,算法的执行更有效率,更适用于大批量数据。随机梯度下降的思想是,在每一步的迭代中,不考虑全部的样本,只考虑一个训练样本。随机梯度下降的第一步是随机打乱已有的样本数据,算法过程是对m个训练样本进行遍历,按照公式进行更新。如下:
在进行随机梯度下降的过程中,参数总体上是朝着全局最小值的方向被更新的,看起来它是以某个比较随机迂回的路径在朝全局最小值逼近。实际上,随机梯度下降是在靠近某个全局最小值的附近徘徊,而不是像批量梯度下降那样直接逼近全局最小值并停留在那点。如下图,其中,紫红色的线可以理解为随机梯度下降的过程:
另外需要注意的是,在遍历m个样本的外层还有一个循环Repeat项,该层循环执行的次数取决于样本数量的大小,通常1次就够了,最多10次。
小批量梯度下降
小批量梯度下降介于随机梯度下降和批量梯度下降之间,它每次迭代使用b个样本,b的标准取值在2-100之间,典型值为10。算法示例如下(假设b=10,m=1000):
收敛判断
在批量梯度下降算法中,我们在每次迭代前计算
在左上角的图形中,红色线使用了更小的学习速率,虽然考试下降的慢,但最终更趋近于最小值;在右上角的图中,红色线使用了5000个样本点的平均,线变得更加平滑,但显得过于滞后;在左下角的图中,算法看起来并没有下降,说明学习过程出了问题,需要调整参数或特征;右下角的图形,代价结果开始发散,说明要使用更小的学习速率。
如果想让随机梯度算法更接近于全局最小值,可以使用渐变的学习速率,随迭代次数而减小。如让
在线学习Online Learning
随着用户访问网站数量的激增,我们可以接连不断的收集用户数据,构造特征x与结果y。在线学习是指,我们运行一个无穷循环,使用每次收集到的(x,y)来更新我们的参数
映射约减和数据并行 Map Reduce & Data Parallelism
在计算代价函数时,我们可以把样本平均分成z份,分别交给z台计算机进行计算,最后再将z个结果合并起来,从而实现数据并行。这种情况下,每台机器的计算内容变成
维度约减是说将所有这些分批后得到的数据再组合进行计算:
如果学习算法可以表达成这种某些函数的和的形式,就可以进行维度约减,之前学习的线性回归和逻辑回归都很容易进行并行化。
对于神经网络来说,可以在很多机器上分别计算前向和后向传播,最后再在主机上进行合并。
Summary Tips
要想获得一个高效的机器学习系统,其中一个可靠的方法是选择一个低偏差的学习算法,然后使用一个巨大的训练集来训练它
- Coursera机器学习(Andrew Ng)笔记:大规模机器学习
- Coursera机器学习(Andrew Ng)笔记1
- Coursera机器学习(Andrew Ng)笔记:神经网络
- Andrew Ng机器学习笔记week10 大规模机器学习
- Coursera上的Andrew Ng《机器学习》学习笔记Week1
- Coursera上的Andrew Ng《机器学习》学习笔记Week2
- Coursera机器学习(Andrew Ng)笔记:支持向量机
- andrew ng机器学习笔记
- Andrew NG 机器学习 笔记-week10-大规模机器学习(Large Scale Machine Learning)
- 机器学习 Andrew NG
- Andrew Ng 机器学习
- COURSERA 机器学习课笔记(by Prof. Andrew Ng)学习笔记(一)
- 机器学习:推荐系统(Andrew Ng Coursera课程)
- Coursera上Andrew Ng机器学习课程总结(一)
- Coursera上Andrew Ng机器学习课程总结(二)
- Andrew Ng coursera上的《机器学习》ex1
- Andrew Ng coursera上的《机器学习》ex2
- Andrew Ng coursera上的《机器学习》ex3
- 异步下载图片,动态设置cell高度
- PHP--笔试题
- 10.Facade-外观模式
- Jenkins进阶系列之——14配置Jenkins用户和权限
- 11.Composite-组合模式
- Coursera机器学习(Andrew Ng)笔记:大规模机器学习
- 12.Bridge-桥接模式
- HEX----组合数+逆元+思维 山东省第八届省赛D题
- 开发人员的必备技能
- 13.Flyweight-享元模式
- JAVA JNI调用C++算法步骤
- Linux下Zookeeper的(单机)安装与简单测试
- 14.Strategy-策略模式
- Java异常类的继承关系图