一、随机梯度下降法
批量梯度下降法每次迭代求和要遍历完全部样本。每次都要同时考虑所有的训练样本,对于海量数据集,处理起来就很困难。
针对单个样本重新定义cost函数:
随机梯度下降法:
- 随机打乱所有数据集(重新随机排列)(标准预处理过程);
- 对所有样本进行遍历,每遍历一个样本就进行梯度下降。
总的来看,参数是朝着全局最小化的方向移动的,整个过程还是以随机迂回的路径朝着全局最小值前进,相比于普通梯度下降,随机梯度下降的收敛形式是不同的,它所做的是连续不断在某个区域中朝着全局最小值方向徘徊。
二、Mini-Batch梯度下降法
- 普通梯度下降:每次迭代都要用到所有的m个样本;
- 随机梯度下降:每次迭代只需用到一个样本;
- Mini-Batch梯度下降:它是介于上述两者之间,每次迭代会使用b个样本(b是称为Mini-Batch大小的参数,通常b的范围2-100)。
判断随机梯度下降是否收敛
为了检查随机梯度下降是否收敛,要做的是每1000次迭代,就画出前一步中所计算出的代价函数(更新θ前),把这前1000个样本的代价函数的平均值画出来,通过观察所画的图,就能检查出随机梯度下降法是否在收敛。
学习速率α
通常不变,但也有随着时间变化逐渐减小,如
三、在线学习机制
适用于多样本、连续数据流。
样本一般只使用一次,可适应用户变化的偏好。
案例二:点击率预测学习问题(CTR)
四、减少映射和数据并行
根据MapReduce的思想,把训练集分割成不同的子集,分配给不同机器进行并行处理: