随机梯度下降算法(Stochastic gradient descent, SGD)源于1951年Robbins和Monro[6]提出的随机逼近, 最初应用于模式识别和神经网络. 这种方法在迭代过程中随机选择一个或几个样本的梯度来替代总体梯度, 从而大大降低了计算复杂度. 1958年Rosenblatt等研制出的感知机采用了随机梯度下降法的思想, 即每轮随机选取一个误分类样本, 求其对应损失函数的梯度, 再基于给定的步长更新参数. 1986年Rumelhart等分析了多层神经网络的误差反向传播算法, 该算法每次按顺序或随机选取一个样本来更新参数, 它实际上是小批量梯度下降法的一个特例. 近年来, 随着深度学习的迅速兴起, 随机梯度下降算法已成为求解大规模机器学习优化问题的一类主流且非常有效的方法. 目前, 随机梯度下降算法除了求解逻辑回归、岭回归、Lasso、支持向量机和神经网络等传统的监督机器学习任务外, 还成功地应用于深度神经网络、主成分分析、奇异值分解、典型相关分析、矩阵分解与补全、分组最小角回归、稀疏学习和编码、相位恢复 以及条件随机场等其他机器学习任务.
随着大数据的不断普及和对优化算法的深入研究, 衍生出随机梯度下降算法的许多不同版本. 这些改进算法在传统的随机梯度下降算法的基础上引入了许多新思想, 从多个方面不同程度地提升了算法性能. 搜索方向的选取和步长的确定是梯度下降算法研究的核心. 按照搜索方向和步长选取的方式不同, 将随机梯度下降算法的改进策略大致分为动量、方差缩减、增量梯度和自适应学习率等四种类型. 其中, 前三类方法主要是校正梯度或搜索方向, 适用于逻辑回归、岭回归等凸优化问题; 第四类方法针对参数变量的不同分量自适应地设置步长, 适用于深度神经网络等非凸优化问题.
在机器学习中的无约束优化算法,除了梯度下降以外
下一篇:『Java』类和对象