大规模学习
现在机器学习的性能比过去的好,其中一个原因就是现在拥有大量的数据。
而且其中一种获得高性能机器学习系统的方法就是设计复杂的模型,然后使用大量数据进行训练。
2001年的一篇文章就讨论了训练数据和精确率的关系。
在使用大量数据进行学习前,应先检测现有模型是否足够复杂,从而使大规模学习能发挥其作用。
检测的方法是,选取一部分样本,画出学习曲线,如果学习曲线如右图所示,就要先修改模型,而不是直接进行大规模学习。
之前的线性回归中的梯度下降算法如下图所示,在拥有很大的训练数据时也是能运行良好的,但是每次求梯度都要使用全部的数据花费的时间、内存等都太大了。
而随机梯度下降则是每次只使用一个数据来进行梯度下降,然后再整个数据集上运行1到10次,这时整体损失抖动可能很厉害(如粉红色的路径),但是它最终都会收敛到最小