学习笔记-Large scale machine learning
来源:互联网 发布:熊猫智能采集软件 编辑:程序博客网 时间:2024/05/01 12:28
终于来到了倒数第二周,这章的主要内容是怎样应对超大样本量的机器学习项目,例如训练集有500万个样本。
之前我们曾提到,有时候样本量的多少决定了一个模型的好坏,当样本量达到一定数量级时,应用不同算法获得的结果差不多。有句名言“最后获胜的人往往是那些拥有最多数据量的人,而不是那些拥有最好算法的人”
当然不断增多训练样本量不总是有效,我们需要有评价标准告诉我们在何种情况下,增大样本量会带来益处。对于下面的左图情况,增加样本量还会带来好处;但是右图的情况告诉我们再增加样本量也不会有帮助了,你或者可以考虑增加特征变量了。
1. Stochastic gradient descent
Stochastic gradient descent是梯度下降的一种特殊形式。
以我们之前学习过的应用在线性回归中梯度下降算法为例,在每一轮更新参数时,计算每个参数的梯度过程中,都需要有一个求和步骤,如下图红框所示。对于超大级别的训练集,单这一次求和就要花费巨量的时间和资源;考虑到需要迭代很多步,这样会导致计算过程消耗巨大。
我们把上面这种每次迭代用到了所有训练集的梯度下降算法称为Batch gradient descent;与之相对的是Stochastic gradient descent方法,每次迭代过程只用一个训练样本,总共迭代m(总训练样本量)次。
每次应用Stochastic gradient descent方法时,首先需要随机打乱训练集样本的顺序,然后重复10次1到m的迭代过程。
需要说明的是,由于Stochastic gradient descent每次迭代只用一个样本,因此对整个训练集而言,并不总是在朝着梯度下降的方向走,整个梯度下降路线可以说是在逶迤前行,并且终点常只是落在局部最小值附近。
2. Mini-batch gradient descent
Stochastic gradient descent在每次迭代过程中只使用一个训练样本,与之相对的Mini-batch gradient descent在每次迭代过程中只使用一小批(如b个)训练样本,因此总共需要迭代m/b次。
如果在mini-batch gradient descent 的计算过程中,合理地使用矩阵运算,其运行总用时将大大小于Stochastic gradient descent。并且mini-batch 的梯度下降过程也将不会像Stochastic 那样过于波折。
3. Stochastic gradient descent convergence
在运行梯度下降算法的计算过程中,常需要确保损失函数是收敛的。
对于batch gradient descent算法来说,可以通过绘制损失值与迭代次数的图形,判断是否收敛;
而对于Stochastic gradient descent算法来说,可以以1000次为间隔,绘制最近1000个样本的平均损失值。
通过图形直观地判断训练过程中的损失函数是否收敛。
为了应对训练过程的后期损失函数无法快速收敛的情况,可以设置学习速率逐渐变小。这样就能够避免训练后期波动过大的情况。
4. Online learning
在线学习适合那些模型需要随时根据实际情况不断变化的情景。
例如:商品搜索
5. Map-reduce and data parallelism
在大型的机器学习项目中,还需要考虑怎样分派计算任务和并行计算。
例如需要分别计算400个样本的预测值与目标值的差异,则可以将每100个样本的计算任务分配一台电脑,共分配4台电脑。这样可以大大减少运行总耗时。
对于多核计算机,也可以将任务分配到不同核上,实现并行计算。
注:如无特殊说明,以上所有图片均截选自吴恩达在Coursera开设的机器学习课程的课件ppt.
- 学习笔记-Large scale machine learning
- Stanford 机器学习笔记 Week10 Large Scale Machine Learning
- 【学习笔记】【Coursera】【MachineLearning】Large scale machine learning
- Large Scale Machine Learning
- 15-Large Scale Machine Learning
- Andrew NG 机器学习 笔记-week10-大规模机器学习(Large Scale Machine Learning)
- Coursera机器学习-第十周-Large Scale Machine Learning
- Ng机器学习 Week10 Large Scale Machine Learning
- 机器学习(二十三)- Large Scale Machine Learning
- 大规模机器学习(Large Scale Machine Learning)
- Machine Learning - XVII. Large Scale Machine Learning大规模机器学习 (Week 10)
- [Shogun] A large scale machine learning toolbox
- Large scale machine learning in Python
- Stanford Machine Learning: (6).Large Scale Machine Learning
- Andrew Ng Machine Learning 专题【Large Scale Machine Learning】
- Machine Learning week 10 quiz: Large Scale Machine Learning
- Coursera Machine Learning 第十周 quiz Large Scale Machine Learning
- Coursera Machine Learning 第十周 quiz Large Scale Machine Learning
- SDL2入门教程(05_Optimized Surface Loading and Soft Stretching)
- (CodeForces
- MFC对话框控件的属性、方法、消息
- Spring MVC运行原理
- Java-Collection源码分析(十二)——SortedMap和NavigableMap
- 学习笔记-Large scale machine learning
- LINUX定时执行SHELL脚本实现DB2数据库操作,crontab无法正常识别执行
- 110. Balanced Binary Tree
- JZOJ5390. 【NOIP2017提高A组模拟9.26】逗气
- linux 下常用命令
- RBAC权限管理
- javascript数组查重
- 固定表格布局
- Ubuntu安装Hadoop