一:为何不能用之前的梯度下降(批量梯度下降)算法对大数据训练
对机器系统做分析的时,如果由 学习曲线得到高方差的曲线模型,就可能需要增加原始数据量来提高系统性能。
以线性回归为例,在使用线性回归训练时,需要对图中红框内容进行迭代,求得最佳 Theta 值。红框中所求的时成本函数的梯度,需要对整个数据集求和。数据集如果达到百万级别,Theta 每迭代一次,就需要对百万数据求和一次,整个训练所消耗的时间将会非常多。
方法一:随机梯度下降
算法:
1 对训练样本随机排序
2.Repeat 次数,1-10次,根据数据规模而定,数据规模特别大。例如 3 亿个样本,一次就行了
for 循环内容:
对每个样本执行一次 Theta 的迭代
算法优势:不需要重复对整个数据集迭代 Theta 值,减少了大量训练时间
缺点:Theta 值随每个样本而改变,迭代方向不定,且最后只能在最优 Theta 值附近取值,大部分情况下不能取到最优 值。但也很接近了。
随机梯度下降算法的 学习率 α 可以改成随迭代次数降低的形式,这样就可以取得与最优 Theta 值更接近的 Theta 值
其中 const1 const2 是一个常数,需要自己调试。
二、最小批量梯度下降算法
我自认为是对随机梯度下降算法做出的优化。
不是只对一个样本就进行一次迭代,而是使 b 个样本求和后,对 b 个样本进行一次迭代
优点:
随机梯度下降算法每次迭代方向随机,迭代方向甚至可能与最优 Theta 值方向相反,但整体与最优 Theta 值方向相同
最小批量梯度下降算法确定了每次迭代方向与最优 Theta 值方向相同。
三种梯度下降算法对比:
三 随机梯度的下降收敛
算法:
收敛图:训练误差(Jtrain)随迭代次数变化的函数
图(2,1),取点迭代次数过高
图(2,2),学习率过高
四 实际样例:在线学习
算法:
得到一个用户数据
运行随机梯度下降算法,得到迭代后 Theta值
计算预测(点击率,价格)h
优点:预测随用户改变
缺点:需要不断的流入数据才能迭代
减少数据与数据并行
多机:
一机多核:
算法:
要求:
感觉这样做笔记有些不太好,可能只写标题,使用链接访问那种方式会比较好。条理更清楚,也方便浏览。