机器学习中的高效学习策略与神经网络深度解析
1. 一次学习一个示例
在为线性模型寻找合适的系数时,时间和内存是关键因素。然而,当系统内存不足以存储庞大的数据集时,就需要采用其他方法,比如一次学习一个示例,而非将所有数据加载到内存中。
1.1 梯度下降法
梯度下降法每次迭代都会找到使成本函数最小化的正确方向。每一步之后,它会考虑模型的所有累积误差,并更新系数,以便在下次数据迭代时使误差更小。这种方法的效率源于考虑了样本中的所有示例,但缺点是必须将所有数据加载到内存中。由于某些数据集非常大,无法总是将所有数据存储在内存中。而且,使用简单学习器进行学习需要大量数据来构建有效的模型。虽然可以从硬盘获取和存储数据块,但由于需要进行矩阵乘法,会导致大量的数据在磁盘和内存之间交换,因此这种方法并不可行。
科学家们找到的有效解决方案是:算法不再是在查看完所有数据后进行学习(即一次迭代),而是通过顺序访问从存储中一次选取一个示例进行学习,然后再学习下一个示例。当算法学习完所有示例后,除非满足某些停止条件(例如完成预定义的迭代次数),否则会重新开始。
数据流是指一次从磁盘传输一个示例的数据,流式传输是将数据从存储传递到内存的操作。当算法从数据流中学习时,就会出现核外学习(在线学习)方式,这是一种可行的学习策略。常见的数据流来源包括网络流量、传感器、卫星和监控记录等。例如,传感器即时产生的数据流,或 Twitter 流生成的推文。如果数据矩阵太大,也可以将其视为数据流,从文本文件或数据库中逐行提取数据进行学习,这就是在线学习方式。
1.2 随机梯度下降(SGD)
随机梯度下降(SGD)是梯度下降算法的一种轻微变体,