梯度下降(Gradient Descent)是深度学习中一种至关重要的优化算法,其核心目的是寻找最佳模型参数或权重,从而最小化损失函数。该算法通过迭代的方式,不断调整参数值,沿着损失函数负梯度方向(即函数值下降最快的方向)进行搜索,直至收敛至一个局部最小值。这一过程中,每次迭代都会根据当前参数位置的梯度信息,以及预设的学习率,来更新参数值,从而逐步逼近最优解。
一、梯度下降
梯度下降(Gradient Descent)是什么?梯度下降是一种用于寻找函数局部最小值的优化算法。
它通过迭代的方式,不断调整模型参数,以最小化一个预先定义的损失函数(或称为代价函数)。
梯度下降的工作原理是什么?基于函数梯度(或导数)的迭代优化算法,旨在找到函数的局部最小值。
梯度下降利用函数关于其参数的梯度(即一阶导数)来指导参数的更新方向。梯度是一个向量,指向函数值增长最快的方向。为了找到函数的最小值,我们应该沿着梯度的反方向(即函数值下降最快的方向)更新参数。
梯度:梯度是一个向量,其方向指向函数值增长最快的方向。
偏导数:对于多元函数,梯度是一个包含所有参数偏导数的向量。
梯度的反方向:在梯度下降中,我们关注的是梯度的反方向,因为这是函数值下降最快的方向。
二、BGD & SGD & MBGD
由于使用了整个数据集,BGD的梯度估计更加准确,因此通常能够更稳定地收敛到(局部)最小值。
在凸优化问题中,BGD能够保证收敛到全局最小值(如果学习率设置得当)。
(2)BGD缺点:计算量大,需要处理整个数据集,对于大数据集来说可能非常耗时。
计算量大,特别是在处理大规模数据集时,每次迭代都需要遍历整个数据集,导致训练过程非常缓慢。
需要将整个数据集加载到内存中,这在数据集非常大时可能不可行。
计算量小,每次迭代只需要处理一个样本,因此训练速度非常快。 适用于在线学习或数据流场景,可以实时更新模型。
(2)SGD缺点:梯度估计的噪声较大,可能导致收敛过程不稳定,可能陷入局部最小值或鞍点。
由于梯度估计基于单个样本,因此梯度估计的噪声较大,导致更新方向波动大,可能使收敛过程不稳定。
可能需要更多的迭代次数才能达到收敛。
在某些情况下,SGD可能无法收敛到全局最小值,而是停留在局部最小值或鞍点。
相对于BGD,MBGD减少了每次迭代的计算量,提高了训练速度。
相对于SGD,MBGD的梯度估计更加稳定,减少了更新方向的波动,有助于更稳定地收敛。
可以通过调整batch size来平衡计算量和梯度估计的稳定性。
(2)MBGD缺点:梯度估计的噪声较大,可能导致收敛过程不稳定,可能陷入局部最小值或鞍点。
需要选择一个合适的batch size,这可能需要一些实验和调参。
仍然需要一定的内存来存储batch中的样本。
限时五折优惠,快快抢购吧!