当前位置: 首页 > news >正文

共轭梯度法笔记

一、梯度下降法

在这里插入图片描述

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

相关文章:

  • java数据结构_Map和Set_HashMap 底层源码解读_9.5
  • 前端基础之浏览器本地存储
  • 备忘录模式(Memento Pattern)
  • 个推助力小米米家全场景智能生活体验再升级
  • 【Windows】远程计算机需要网络级别身份验证,而你的计算机不支持该验证
  • Linux系统管理与编程04:基础知识(下)
  • 用于管理 Elasticsearch Serverless 项目的 AI Agent
  • pringboot之restfull接口规范注解(二)
  • C++ 作业 DAY5
  • mybatisplus
  • 200W数据去重入库的几种方法及优缺点
  • RAGflow升级出错,把服务器灌满了
  • 1panel docker配置国内源
  • RAGflow采用docker-compose-continuous方式pull,把服务器充满了
  • 配置Spring Boot API接口超时时间(五种)
  • ArcGIS Pro 基于基站数据生成基站扇区地图
  • 在绘制原理图的时候,TYPE-C的CC引脚为什么要接下拉电阻?
  • ElasticSearch 在半导体工厂中的智能应用与 AI 联动
  • SELinux 概述
  • 力扣-字符串
  • 淄博高端网站建设/网站优化网站优化
  • 聊城企业做网站推广/常见的网站推广方法有哪些
  • html 网站根目录/网上怎么做推广
  • 网站做流量的论坛贴吧/搜索引擎排名机制
  • 网站使用arial字体下载/域名注册查询系统
  • 在哪些网站做兼职比较可靠/宁波seo在线优化