梯度下降法、牛顿法、拟牛顿法

梯度下降法

梯度下降法的优化思想是用当前负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为“最速下降法”。最速下降法越接近目标值,步长越小,前进越慢。

批量梯度下降法

得到的是全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果训练集的数据很大,那么可想而知这种方法的迭代速度会相当的慢。于是出现了随机梯度下降法

随机梯度下降

通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条样本

最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体方向是向全局最优解的,最终结果往往是在全局最优解附近,适用于大规模训练样本情况

牛顿法

首先,我们对函数在xk点处进行二阶泰勒展开


这样我们就得到了一个不断更新 x 迭代求得最优解的方法。这个也很好理解,假设我们上面的第一张图的曲线表示的是函数 f(x) 一阶导数的曲线,那么其二阶导数就是一阶导数对应函数在某点的斜率,也就是那条切线的斜率,那么该公式就和上面求根的公式本质是一样的。 

拟牛顿法

因为我们要选择一个矩阵来代替海森矩阵的逆,那么我们首先要研究一下海森矩阵需要具有什么样的特征才能保证牛顿法成功的应用。通过上面的描述我们知道

f(xk+1)=f(xk)+Hk(xk+1xk)
H1K(f(xk+1)f(xk))=xk+1xk

上式我们称之为拟牛顿条件。 
因此,对于我们所选择的替代矩阵 Gk ,需要满足两个条件:

  1. 拟牛顿条件,即Gk(f(xk+1)f(xk))=xk+1xk
  2. 要保证Gk为正定矩阵,这是因为只有正定才能保证牛顿法的搜索方向是向下搜索的

假设yk=f(xk+1)f(xk)δk=xk+1xk,因为每次迭代我们都需要更新替代矩阵Gk,下面介绍一种常用的迭代算法DFP(Davidon-Fletcher-Powell)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
梯度下降是一种优化算法,用于找到一个函数的最小值。它通过迭代地更新参数的方式来逐步接近最小值。在每次迭代中,梯度下降算法计算函数在当前参数值处的梯度,并将参数值朝着梯度的反方向进行更新,从而使函数值逐渐减小。 缩放梯度下降是梯度下降算法的一种变体,它在更新参数时引入了一个学习率因子。学习率因子可以控制每次更新的步长,从而加快或减慢算法的收敛速度。通过调整学习率因子,可以使算法更快地收敛到最小值,但也可能导致算法无法收敛或收敛到局部最小值。 牛顿法是一种基于二阶导数的优化算法,它通过使用函数的一阶和二阶导数来逼近函数的局部极小值。牛顿法的更新公式为:x_new = x_old - f'(x_old) / f''(x_old),其中f'(x_old)和f''(x_old)分别表示函数在x_old处的一阶和二阶导数。牛顿法通常能够更快地收敛到最小值,但它的计算复杂度较高。 拟牛顿法是对牛顿法的一种改进,它通过近似计算二阶导数来减少计算复杂度。拟牛顿法使用一个称为Hessian矩阵的矩阵来近似二阶导数。常用的拟牛顿法包括DFP算法和BFGS算法。这些算法通过迭代地更新Hessian矩阵来逼近函数的最小值。 以下是一个使用梯度下降算法求解函数最小值的示例代码: ```python def gradient_descent(f, df, x0, learning_rate, num_iterations): x = x0 for i in range(num_iterations): gradient = df(x) x -= learning_rate * gradient return x # 定义函数及其导数 def f(x): return x**2 + 2*x + 1 def df(x): return 2*x + 2 # 设置初始参数和学习率 x0 = 0 learning_rate = 0.1 num_iterations = 100 # 调用梯度下降算法 result = gradient_descent(f, df, x0, learning_rate, num_iterations) print("最小值点:", result) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值