【吴恩达】机器学习第18章大规模机器学习

对于大规模数据的机器学习,有两种处理办法:一是随机梯度下降,二是减少映射(MapReduce)。

1.随机梯度下降

1.1随机梯度下降针对每个样本,更新一次参数\theta。基本步骤是先随机打乱样本数据,然后再从头开始,一个样本一个样本训练参数。

1.2批量梯度下降:是对所有样本进行一次遍历,然后再更新一次参数\theta。每次更新参数,都需要读入所有的数据,开销比较大。

1.3Mini-batch梯度下降:选取b个样本,进行运算,更新一次参数\theta。每b个数据更新一次,不用遍历所有数据。并且可以的话,可以通过向量化来实现并行运算,加快速度。效果不错。但是需要确定参数b,会有时间开销。b一般在2~100之间。

2.随机梯度下降的收敛问题:

一般情况下,我们会绘制训练集上的代价函数J_{train},看他是不是一直下降的。在随机下降的方法里,我们会对每个\left ( x^{(i)},y^{(i)} \right )进行计算cost函数,然后每1000g个cost函数我们进行一个平均值计算,然后绘制一个cost平均值-迭代次数的曲线,如果是下降的,则是好的。如果是反复抖动或者上升的,我们需要调整我们的学习速率\alpha(变小)或者修改特征。

一般情况下,\alpha为常数。但是我们也可以定义一个\alpha=常数1/(常数2+迭代次数).如此一来,随着迭代次数的增加,\alpha会逐渐缩小。但是确定常数1、2需要耗费时间。

3.MapReduce

MapReduce的思想就是通过并行的办法提高效率。比如,把一个训练集分成可以并行运算的几部分,分别运算之后再整合。只要运算可以写成一系列求和的形式,就可以使用MapReduce提升效率。

3.在线学习

在线学习不存储数据集,使用过一个数据样本之后就会直接丢掉,因为他有连续的数据流。

猜你喜欢

转载自blog.csdn.net/BRAVE_NO1/article/details/82941628