Andrew Ng带我漫步机器学习 - 第十周 处理大数据
大数据梯度下降
机器学习近阶段的进步很大一部分来自数据集和算力的爆炸性增长,比如神经网络算法
面对大数据时,仍然使用常规的梯度下价格算法会带来巨大的计算量
根据学习曲线,减少数据集时可行的。随着训练样本增多,误差值越来越平稳,不需要重复计算
随机梯度下降
随机梯度下降算法
随机梯度下降是最常用的处理大数据的梯度下降算法
随机梯度下降公式的代价函数和梯度下降公式都没有样本总量m
- 随机洗乱数据
- 重复随机梯度下降算法,每次只使用一个数据对进行修正
- 随机梯度下降算法极大缓解了算法压力
- 随机梯度下降趋于收敛的路径时随机方向的,但是总体仍然倾向于收敛点(需要足够多的样本)
算法评估
- 批量梯度下降使用学习曲线
- 随机梯度下降在每次更新之前计算代价函数,然后绘制前1000个样本获得的代价函数曲线
- 左上为正常情况,减小学习率可能获得更准确的曲线(红线部分)
- 右上为增加绘制的样本数量的情况,收敛趋势更加明显了
- 左下收敛趋势不明显,一可能为梯度下降失败,二可能为随机梯度下降的波动完全掩盖了下降趋势(红线部分)
- 右下情况说明随机梯度下降算法失败了
随机梯度下降优化
为了更好地使随机梯度下降算法收敛到收敛点附近,我们可以随着随机梯度下降的进行逐渐减少学习率:
不用也问题不大,因为又多了两个常量要处理
小批量梯度下降
- 批量梯度下降使用所有样本进行参数更新
- 随机梯度下降使用单个样本进行参数更新
- 小批量梯度下降更新使用的样本量处于两者之间,一般为2-100
小批量梯度下降引入了新的参数b,为每一次运行梯度下降用到的样本量
在线学习
在线学习主要应用于网站,主要是数据的来源和处理方式不同。在线学习需要注意的地方是每次采用一个样本(用户)来优化算法,优化结束后弃置这个样本
分布式计算机系统和数据平行
将训练集拆分为多个部分,分散到不同的机器进行计算,最后汇总到主机进行求和优化
这个图大概的意思就是使用分布式计算机系统都是在累加的i出上的,求偏导项往往也是累加的,有利于在主机上运算
使用多核计算机可以起到类似于分布式计算机系统的任务,使用不同的计算核心完成分布式任务