目录
一 背景
首先,如果在算法的训练样本量m不足的时候得到的模型具有高方差(High Variance),那么此时我们需要更多的训练样本。但是如果算法具有高偏差,提高样本数量并不会显著改善模型的性能。
现在的海量数据集很容易就可以达到m=100,000,000这样的数量级。用梯度下降算法优化参数的化每一步都需要汇总上亿个训练样本来完成一次迭代。那么我们能不能通过一些方法来分流如此大量的计算呢?
二 随机梯度下降法
1.打乱样本的顺序
2.逐个样本加入并调整参数值
3.重复第二步1-10次即可得到最优解(具体次数与样本有关)
算法特点:不需要一次性读完所有的东西再一次性完成一轮参数学习,而是逐个样本的动态学习。因此,随机梯度下降算法的收敛是在逐步向最优解徘徊
三 Mini-batch 梯度下降算法
批量梯度下降算法:一轮迭代需要所有的m个样本
随机梯度下降算法:一轮迭代只需要一个样本
Mini-batch梯度下降算法:一轮迭代会使用b个样本(b<m) b通常的取值区间为[2,100]。相当于结合了前两种方法
四 随机梯度下降算法收敛
如何确保收敛已经完成? 怎么确定算法的学习率?
下图比较了批量梯度下降算法和随机梯度下降算法的区别
1.对于批量梯度下降算法,需要每次计算出Jtrain,确保它是递减的
2.对于随机梯度下降算法,可以在每一轮迭代的时候计算并存储该信息,1000次(假设)迭代之后计算前1000次cost的平均值并画出来。可以作为算法是否收敛的一个可视化表征。
使用一个小一点的学习率,有可能会得到一个更接近最优解的方案。因为,随机梯度下降算法会在全局最优解附近振荡徘徊,如果使用更小的学习率的话,能够使用振荡步幅更小,进而更接近最优解。
如果增加用于描绘算法性能的样本平均数量,那么得到的曲线会更加平滑。
如果用于描绘算法性能的样本平均数量太小,会导致曲线的波动较大,更难看出变化趋势。
下面给出另一种a的设置方法,但是这样需要增加两个参数const1 、const2,所以并不推荐使用
五 结束
后面还由一个在线学习,原理跟上面差不多。
最后给了一个具体的图片OCR的示例,主要是介绍如何做一个机器学习的系统(pipline)。里面介绍了计算机视觉中的滑动窗口的概念(很简单,就是用从小到大尺寸的窗口滑过图片,窗口覆盖的区域截取出来丢给机器学习算法,窗口滑动步长通常是(1,4,8)等)
然后就结束了,结束了,束了,了。
感谢Adrew无私奉献的课程。