机器学习笔记(十)大规模机器学习

Lage scale machine learnning(大规模机器学习)

1、判断是否有必要扩大数据量?

使用学习曲线,观察随着 m 的增大,测试误差是否有显著下降,如高方差情况(过拟合).

2、Stochastic gradient descent(随机梯度下降):

(1)问题背景:

当数据过于庞大,一次性无法完全读取数据,在求和的时候无法完成所有数据的求和.

(2)对比 batch gradient descent(批量梯度下降):

① 算法区别:

其中:

外层循环一般1 - 10次.

② 拟合流程区别:

批量梯度下降:接近一条直线去靠近全局最小值;

随机梯度下降:迂回徘徊地靠近全局最小值.

(3)检查收敛性:

每1000次迭代计算一次平均代价,绘制出图像,图像可能会存在噪声,但是总体趋势下降即可判断是收敛.

下图红色线条的学习速率更小,震荡会更小:

下图红色线条的迭代次数更多,设置为5000次迭代计算一次平均代价,更平滑(前提是数据总量非常大):

倘若数据总量太少,设置的迭代次数间隔太大,那么噪声会很大,下降趋势不够明显,如下图:

下图表示算法发散,可以尝试更小的学习速率:

 

3、Mini-Batch gradient descent(小批量梯度下降):

批量梯度下降每次迭代使用 m 个样本,随机梯度下降每次迭代使用 1 个样本.

而小批量梯度下降每次迭代使用 b 个样本.

b 为“迷你批次”的参数,通常取值 2 - 100.

4、Online learning(在线学习):

举例说明:假设在货运系统中,客户出价 x 让货车从A运到B,货车可以选择接受(y = 1)和拒绝(y = 0). 依据 p( y = 1 | x; θ),来优化价格 x.

这里计算 y 需要提供 θ 和 x,同时 θ 的计算也需要 x 和 y. 常规的问题把训练集和测试集分开,在线学习转换为测试的样本也作为新样本加入训练集.

Repeat forever{

  Get (x, y) corresponding to user;

  Update θ using (x, y):

    θj := θj - α (hθ(x) - y) x; (j = 0, 1, ..., n)

}

在线学习的效果:对正在变化的用户进行调适.

5、Map reduce(映射约减):

(1)原理:

假设存在 m 个训练样本,将训练集等分成 c 份(这里假设是4个).将训练样本的子集送到 c 台不同计算机,每一台对 m/c 个数据进行求和运算,再送到中心计算服务器:

Combine: 求和部分转为四个 temp的累加.

(2)注意点:

① 若不考虑网络延迟和传输时间,算法可以得到四倍加速.

② 当主要运算量在于训练样本的求和时,可以考虑使用映射化简技术.

猜你喜欢

转载自www.cnblogs.com/orangecyh/p/11772130.html