事实上,机器学习中的很多问题本质上都是求解优化相关的问题,模型训练的目的就是要找到最合适的参数尽可能的最小化损失函数值。求解最优化问题,有很多成熟的方法可以参考,梯度下降算是最经典的方法。通过利用梯度信息,以此不断迭代来逐步调整参数寻找最优解。
01梯度下降算法的原理
对于一个多元函数,梯度可以定义为对其每个自变量的偏导数构成的向量。为了保证更新参数后使得损失函数值减小,只需要自变量偏导数的反方向移动一定的步长即可,这里的步长是一个超参数,用于调整每次更新的程度,这就是学习率learning rate。
机器学习中优化的目标是最小化损失函数,通过梯度下降的方法进行求解的过程分为几步:
通过随机初始化需要求解的参数赋初值,以此作为优化的起始点;
使用模型对所有样本进行预测,计算总体的损失值;
利用损失值对模型参数进行求导,得到相应的梯度;
最后基于梯度调整参数,得到迭代之后的参数;
重复上述过程,直到达到停止条件;
02梯度下降的分类
上面介绍的梯度下降算法,面对全量的训练数据时,如果每次都基于全量的样本计算梯度值,然后更新以此参数,这种方法称为批梯度下降 Batch Gradient Descent。这种方法虽然更新更准确,但是面对大规模数据,模型计算时间成本很高,且随着模型的参数增加,梯度计算会更复杂。
有没有不对全量样本进行梯度计算,而使用单一样本来近似估计梯度呢?这样可以极大地减少计算量,提高模型训练的效率,实验也证明,这种方法能够保证一定的收敛性,这种方法称为随机梯度下降 Stochastic Gradient Descent(SGD)。每次只选择一个样本来计算损失和梯度总归是有一定的偏差,存在一定的不确定性。
因此,改进的方法是每次使用多个样本来估计梯度,一方面可以减小不确定性,同时也能满足计算量的要求,这种方法称为小批量梯度随机下降 mini-Batch Stochastic Gradient Descent。
码字不易,欢迎关注AINotesClub。
领取专属 10元无门槛券
私享最新 技术干货