梯度下降法 Gradient Descent

简介: 梯度下降法 Gradient Descent

正文


梯度下降法求解最小值过程概述:


在一个可微的光滑曲面上随机选取一个点,然后通过不断的迭代计算,使这个点移动的每一步都向着梯度方向(即下降最快的方向),最终到达局部极小值点,之后通过多次随机取点进行同样的计算,即可找出最小值点。

11.png

那么我们为什么不直接求解最小值点,而是通过迭代的方法一步一步来求解呢?


实际上机器学习所要求的非线性方程一般很难求得数值解,而且在实际应用中也没有必要求得精确的数值解,往往只要求得满足一定精度要求的近似解即可。计算模型的过程是一个拟合的过程,通过不断迭代缩小误差来得到近似解,最终误差在一个可接受的范围内就算拟合完成。


举个例子,假设我们要寻找一个小于10的误差在2以内的数,那么通过迭代我们可以得到9或9.5甚至更接近(因为迭代的过程是一个不断减小误差的过程),但是直接求解我们很有可能只能找到8,这时候误差就很大了。

梯度下降法的数学表达:


假设f(x)Rn(n维特征空间)上具有一阶连续偏导数的函数,要求解的无约束最优化函数如下:


12.png


则有:

目标函数(损失函数+正则化项): f(x)

梯度函数: g(x)=∇f(x)

给定精度: ϵ

给定步长: η

下降距离: ηg

极小值点: x∗


计算步骤:


13.png


相关文章
|
6月前
|
算法
梯度下降算法(二)
梯度下降法中,学习率选择至关重要。0.3的学习率导致无法找到最小值且产生震荡,而0.01则使结果接近最优解(2.99998768)。当学习率进一步减小至0.001,点远离最低点。通过迭代次数增加至1000次,可更接近最低点(2.999999999256501)。梯度下降用于最小化损失,学习率控制参数更新步长,需平衡收敛速度和稳定性。迭代次数和初始点也影响模型性能,合适的初始化能加速收敛并避开局部极小值。
|
6月前
|
机器学习/深度学习 存储 算法
梯度下降算法(一)
梯度下降是一种迭代优化算法,用于找到多变量函数的最小值。它不直接求解方程,而是从随机初始点开始,沿着梯度(函数增大幅度最大方向)的反方向逐步调整参数,逐步逼近函数的最小值。在单变量函数中,梯度是导数,而在多变量函数中,梯度是一个包含所有变量偏导数的向量。通过计算梯度并乘以学习率,算法更新参数以接近最小值。代码示例展示了如何用Python实现梯度下降,通过不断迭代直到梯度足够小或达到预设的最大迭代次数。该过程可以类比为在雾中下山,通过感知坡度变化来调整前进方向。
|
7月前
|
算法 Python
梯度下降法
梯度下降法
81 0
|
机器学习/深度学习 并行计算 算法
梯度下降(Gradient Descent)
梯度下降(Gradient Descent)是一种常用的优化算法,用于最小化(或最大化)函数的目标值。它是一种迭代的优化方法,通过沿着目标函数的负梯度方向更新参数,逐步接近最优解。
149 1
|
机器学习/深度学习 算法 PyTorch
Gradient Descent Algorithm 梯度下降算法
Gradient Descent Algorithm 梯度下降算法
111 0
|
机器学习/深度学习 算法
线性回归(Linear regression)算法
属于有监督学习、判别模型、有预测函数、有优化目标,有优化求解算法
304 0
|
机器学习/深度学习 算法 数据可视化
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现-1
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现-1
|
机器学习/深度学习 算法
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现-2
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现-2
|
机器学习/深度学习 算法
机器学习算法之——梯度提升(Gradient Boosting)下
GDBT本身并不复杂,不过要吃透的话需要对集成学习的原理、策树原理和各种损失函树有一定的了解。由于GBDT的卓越性能,只要是研究机器学习都应该掌握这个算法,包括背后的原理和应用调参方法。目前GBDT的算法比较好的库是xgboost。当然scikit-learn也可以。
机器学习算法之——梯度提升(Gradient Boosting)下
|
机器学习/深度学习 算法 Python
机器学习算法之——梯度提升(Gradient Boosting)上
由于每个子模型要使用全部的数据集进行训练,因此 Ada Boosting 算法中没有 oob 数据集,在使用 Ada Boosting 算法前,需要划分数据集:train_test_split;
机器学习算法之——梯度提升(Gradient Boosting)上