共轭梯度法笔记

news/2025/3/4 20:15:44/

一、梯度下降法

在这里插入图片描述

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
  • 方法推导过程如下:
    在这里插入图片描述
  • 共轭梯度的步长是用最速梯度下降的方法算的,用推导如下:
    在这里插入图片描述
  • 而方向就是先定义一些线性无关量,然后在每步利用类似施密特正交化的思路,将每个线性无关量转换成共轭量。向量之间相互共轭也线性无关,每次完成一次迭代就失去了一个方向上的误差,之后的梯度方向肯定有自己独特的信息,所以也是线性无关的(这可可以这样想,一个二维的误差空间,线性无关梯度方向有两个,第一次迭代去除一个维度后,新的梯度向量肯定有自己另一个维度的信息)。
  • 之前说最理想的梯度方向是相互正交其实是不准确的,只要梯度向量之间相互线性无关,这就是很好的梯度向量了。正交的梯度向量是线性无关的,但是没法算法。所以利用另外一个让梯度向量相互线性无关的可能方案,也就是共轭向量。

http://www.ppmy.cn/news/1576632.html

相关文章

004build在设计页面上的使用

004_a_StatefulWidget和State的语法结构_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1RZ421p7BL?spm_id_from333.788.videopod.episodes&vd_source68aea1c1d33b45ca3285a52d4ef7365f&p152 StatelessWidget无状态小部件不能setState刷新build import packag…

CentOS 7 中安装 Docker和Docker Compose

本文介绍CentOS7系统安装Docker和Docker Compose的完整操作步骤 一、环境准备‌ 验证系统内核版本:uname -r(需≥3.10) 更新系统软件包:sudo yum update -y‌ 二、卸载旧版本 sudo yum remove docker \ docker-client \ docke…

赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索

hello~朋友们!好久不见! 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章: 周易六十四卦 掐指一算——小六壬 更多优质文章:个人主页 JAVA系列:JAVA 大佬们互三哦~互三必回!&#xf…

爬虫系列之发送请求与响应《一》

一、请求组成 1.1 请求方式:GET和POST请求 GET:从服务器获取,请求参数直接附在URL之后,便于查看和分享,常用于获取数据和查询操作 POST:用于向服务器提交数据,其参数不会显示在URL中,而是包含在…

迷你世界脚本玩家接口:Player

玩家接口:Player 彼得兔 更新时间: 2024-07-28 17:49:05 继承自 Actor 具体函数名及描述如下: 序号 函数名 函数描述 1 getAttr(...) 玩家属性获取 2 setAttr(...) 玩家属性设置 3 getHostUin(...) 获取房主uin 4 isMainPlayer(...) …

【AI深度学习基础】NumPy完全指南进阶篇:核心功能与工程实践(含完整代码)

NumPy系列文章 入门篇进阶篇终极篇 一、引言 在掌握NumPy基础操作后,开发者常面临真实工程场景中的三大挑战:如何优雅地处理高维数据交互?如何在大规模计算中实现内存与性能的平衡?怎样与深度学习框架实现高效协同?…

行为型模式 - 观察者模式 (Publish/Subscribe)

行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式(Publish-Subscribe Pattern)是一种消息传递模式,在该模式中,发送者(发布者)不会直接将消息发送给特定的接收者(订阅者&…

LeetCode 热题 100_最小栈(70_155_中等_C++)(栈)(辅助栈)(栈中的push和emplace对比)

LeetCode 热题 100_最小栈(70_155) 题目描述:输入输出样例:题解:解题思路:思路一(辅助栈): 代码实现代码实现(思路一(辅助栈)&#xf…