共轭梯度法笔记

发布于:2025-03-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、梯度下降法

在这里插入图片描述

x k + 1 = x k − α ∇ f ( x k ) x_{k+1} = x_k - \alpha \nabla f(x_k) xk+1=xkαf(xk)

  • 这是普通的梯度下降公式,有两个量是关键,步长 α \alpha α和方向 ∇ f ( x k ) \nabla f(x_k) f(xk)。这里的方向直接选择了梯度方向,也是使用最多,但是并不一定要是这个方向。

二、最速梯度下降

在这里插入图片描述

x k + 1 = x k − α ∇ f ( x k ) x_{k+1} = x_k - \alpha \nabla f(x_k) xk+1=xkαf(xk)
∂ f ( x k + 1 ) ∂ α k = 0 , α k = r k T r k r k T A r k \frac{\partial f(x_{k+1})}{\partial \alpha_k} = 0, \alpha_k = \frac{\mathbf{r}_k^T \mathbf{r}_k}{\mathbf{r}_k^T A \mathbf{r}_k} αkf(xk+1)=0αk=rkTArkrkTrk

  • 最速梯度下降与梯度下降的区别在于采用了一个公式计算步长 α \alpha α,计算思路就是在当前梯度方向上尽量降低评价函数
  • 推导过程可以参考https://www.bilibili.com/video/BV1kM4y177s1/?spm_id_from=333.337.search-card.all.click&vd_source=a686d8f8b0e9b94066f2d4ba714466e7
  • 这样没次更新后在之前的梯度方向上已经没有可以让f健翔的方向了,所以下一个梯度一定会与之前梯度正交

三、共轭梯度下降

整体讲解视频:
https://www.bilibili.com/video/BV1kM4y177s1/?spm_id_from=333.337.search-card.all.click&vd_source=a686d8f8b0e9b94066f2d4ba714466e7
为什么若干共轭梯度在一起可以高效到达期望点:https://blog.csdn.net/bitcarmanlee/article/details/121522734
讲解文字版:
https://blog.csdn.net/weixin_43940314/article/details/121125847

  • 最速梯度下降改变了步长,还可以改变方向,理想状态下是梯度之间可以相互垂直,这样不会出现最速梯度下降那样互相抵消的问题,推导如下:
    在这里插入图片描述
  • 在正交的前提下可以直接计算步长,但是这样存在的问题是并不知道 e i e_i ei,如果知道误差,直接算结果就行了,所以并没有一种叫做正交梯度下降的方法。因此选择了另一种选择方向的思路,采用共轭梯度的方向,也就是梯度方向之间相互共轭。
  • 共轭向量定义如下:
    在这里插入图片描述
  • 共轭向量有一个性质是线性无关
  • 这里我有一个疑惑是相互共轭的向量能像正交向量那样高效的达到期望点吗?也就是共轭向量可以简洁的表示期望点吗?其实是可以的,推导https://blog.csdn.net/bitcarmanlee/article/details/121522734
  • 方法推导过程如下:
    在这里插入图片描述
  • 共轭梯度的步长是用最速梯度下降的方法算的,用推导如下:
    在这里插入图片描述
  • 而方向就是先定义一些线性无关量,然后在每步利用类似施密特正交化的思路,将每个线性无关量转换成共轭量。向量之间相互共轭也线性无关,每次完成一次迭代就失去了一个方向上的误差,之后的梯度方向肯定有自己独特的信息,所以也是线性无关的(这可可以这样想,一个二维的误差空间,线性无关梯度方向有两个,第一次迭代去除一个维度后,新的梯度向量肯定有自己另一个维度的信息)。
  • 之前说最理想的梯度方向是相互正交其实是不准确的,只要梯度向量之间相互线性无关,这就是很好的梯度向量了。正交的梯度向量是线性无关的,但是没法算法。所以利用另外一个让梯度向量相互线性无关的可能方案,也就是共轭向量。

网站公告

今日签到

点亮在社区的每一天
去签到