线性代数|机器学习-P24加速梯度下降(动量法)

文章目录

  • 1. 概述
  • 2. 引入
  • 3. 动量法梯度下降

1. 概述

我们之前学的最速梯度下降[线搜索方法] 公式如下:
x k + 1 = x k − s k ∇ f ( x k ) \begin{equation} x_{k+1}=x_k-s_k\nabla f(x_k) \end{equation} xk+1=xkskf(xk)
但对于这种方法来说,步长 s k s_k sk 的选择是固定的,因为模型的参数太大,其损失函数具有不确定性,这样我们很难选择合适的步长 s k s_k sk

  • 当我们的步长 s k s_k sk太小,会导致需要很长的时间才能够找到极小值点或者最小值点
  • 当我们的步长 s k s_k sk太大,会导致我们迭代的点 P k + 1 P_{k+1} Pk+1在目标点 P ∗ P^* P附件来回跳动。无法收敛。

根据上面的问题,我们今天研究下加速梯度下降的两种方法:

  • Momentum 动量梯度下降法[这节主要内容]
  • Nesterov 法[Momentum的变种]
  • SGD[Stochastic gradient descent]随机梯度下降法
  • mini-batch SGD [小批量随机梯度下降]

2. 引入

假设我们有如下函数 f ( x ) f(x) f(x)
f ( x ) = 1 2 X T S X = 1 2 ( x 2 + b y 2 ) , X = [ x y ] S = [ 1 0 0 b ] \begin{equation} f(x)=\frac{1}{2}X^TSX=\frac{1}{2}(x^2+by^2),X=\begin{bmatrix}x\\\\y\end{bmatrix}S=\begin{bmatrix}1&0\\\\0&b\end{bmatrix} \end{equation} f(x)=21XTSX=21(x2+by2),X= xy S= 100b

  • 一次导数和二次导数如下:
    ∇ f ( x ) = ∂ 1 2 X T S X ∂ X = S X = [ x b y ] ; ∇ 2 f ( x ) = S = [ 1 0 0 b ] \begin{equation} \nabla f(x)=\frac{\partial \frac{1}{2}X^TSX}{\partial X}=SX=\begin{bmatrix}x\\\\by\end{bmatrix};\nabla^2 f(x)=S=\begin{bmatrix}1&0\\\\0&b\end{bmatrix} \end{equation} f(x)=X21XTSX=SX= xby 2f(x)=S= 100b
  • 通过上面的函数可以看出,我们每次求的值可以表示如下:
    f ( x ) = 1 2 ( x 2 + b y 2 ) = c \begin{equation} f(x)= \frac{1}{2}(x^2+by^2)=c \end{equation} f(x)=21(x2+by2)=c
  • 此函数为一个椭圆,也就是说,我们是在不断地寻找最小的椭圆,如图所述:

在这里插入图片描述

  • 假设我们定义初始点 p 0 = ( x 0 , y 0 ) = ( b , 1 ) p_0=(x_0,y_0)=(b,1) p0=(x0,y0)=(b,1)
  • 步长 s k = 1 x 0 + y 0 = 1 b + 1 s_k=\frac{1}{x_0+y_0}=\frac{1}{b+1} sk=x0+y01=b+11最后给出原因
    x k = b ( b − 1 b + 1 ) k , y k = ( 1 − b 1 + b ) k , f k = ( 1 − b 1 + b ) 2 k f 0 \begin{equation} x_k=b(\frac{b-1}{b+1})^k,y_k=(\frac{1-b}{1+b})^k,f_k=(\frac{1-b}{1+b})^{2k}f_0 \end{equation} xk=b(b+1b1)k,yk=(1+b1b)k,fk=(1+b1b)2kf0
  • 梯度下降图解
    第一步我们是垂直于当前点 x 1 x_1 x1的负数切线方向 ( − ∇ f ( x 1 ) ) (-\nabla f(x_1)) (f(x1))进行迭代,计算值后,到达第二个点 x 2 x_2 x2,我们再找到垂直于第二个点的负切线方向 ( − ∇ f ( x 2 ) ) (-\nabla f(x_2)) (f(x2)),这样不断地迭代,就形成了如下图所示的Z字型的锯齿状迭代方向。
    在这里插入图片描述
  • 动量变化:
    b 1 = ( 1 − b 1 + b ) 2 → b 2 = ( 1 − b 1 + b ) 2 \begin{equation} b_1= ( \frac{1-b}{1+b})^2\to b_2= ( \frac{1-\sqrt{b}}{1+\sqrt{b}})^2 \end{equation} b1=(1+b1b)2b2=(1+b 1b )2
  • 当b=1/100时,可得:
    b 1 = ( 99 101 ) 2 ; b 2 = ( 9 11 ) 2 ; → b 1 > b 2 \begin{equation} b_1=(\frac{99}{101})^2; b_2=(\frac{9}{11})^2;\to b_1>b_2 \end{equation} b1=(10199)2;b2=(119)2;b1>b2

3. 动量法梯度下降

  • 迭代方程: s k s_k sk:步长, z k z_k zk:速度, 0 < β < 1 0<\beta<1 0<β<1:惯量系数
    x k + 1 = x k − S z k ; z k = ∇ f k + β z k − 1 ; \begin{equation} \begin{align*} x_{k+1}=x_k - Sz_k;\\ z_k=\nabla f_k+\beta z_{k-1}; \end{align*} \end{equation} xk+1=xkSzkzk=fk+βzk1;

  • 我们之前算过 ∇ f k = S X \nabla f_k=SX fk=SX,将 z k z_k zk改为 z k + 1 z_{k+1} zk+1

  • 我们定义矩阵S的特征向量为q,特征值为 λ \lambda λ,整理可得:
    x k + 1 = x k − S z k ; z k + 1 − S x k + 1 = β z k ; \begin{equation} \begin{align*} x_{k+1}=x_k - Sz_k;\\ z_{k+1}-Sx_{k+1}=\beta z_{k}; \end{align*} \end{equation} xk+1=xkSzkzk+1Sxk+1=βzk;

  • 矩阵化上述公式可得:
    [ 1 0 − S 1 ] [ x k + 1 z k + 1 ] = [ 1 − S 0 β ] [ x k z k ] \begin{equation} \begin{bmatrix} 1&0\\\\ -S&1 \end{bmatrix} \begin{bmatrix} x_{k+1}\\\\ z_{k+1} \end{bmatrix}=\begin{bmatrix} 1&-S\\\\ 0&\beta \end{bmatrix} \begin{bmatrix} x_{k}\\\\ z_{k} \end{bmatrix}\end{equation} 1S01 xk+1zk+1 = 10Sβ xkzk

  • 我们可以定义如下特征值和特征向量如下:
    S q = λ q , x k = c k q , x k + 1 = c k + 1 q , z k = d k q , z k + 1 = d k + 1 q ; \begin{equation} Sq=\lambda q,x_k=c_kq,x_{k+1}=c_{k+1}q,z_k=d_kq,z_{k+1}=d_{k+1}q; \end{equation} Sq=λq,xk=ckq,xk+1=ck+1q,zk=dkq,zk+1=dk+1q;

  • 代入矩阵可得:
    [ 1 0 − S 1 ] [ c k + 1 q d k + 1 q ] = [ 1 − S 0 β ] [ c k q d k q ] \begin{equation} \begin{bmatrix} 1&0\\\\ -S&1 \end{bmatrix} \begin{bmatrix} c_{k+1}q\\\\ d_{k+1}q \end{bmatrix}=\begin{bmatrix} 1&-S\\\\ 0&\beta \end{bmatrix} \begin{bmatrix} c_kq\\\\ d_kq \end{bmatrix}\end{equation} 1S01 ck+1qdk+1q = 10Sβ ckqdkq

  • 整理可得:
    [ 1 0 − λ 1 ] [ c k + 1 d k + 1 ] = [ 1 − S 0 β ] [ c k q d k q ] \begin{equation} \begin{bmatrix} 1&0\\\\ -\lambda&1 \end{bmatrix} \begin{bmatrix} c_{k+1}\\\\ d_{k+1} \end{bmatrix}=\begin{bmatrix} 1&-S\\\\ 0&\beta \end{bmatrix} \begin{bmatrix} c_kq\\\\ d_kq \end{bmatrix}\end{equation} 1λ01 ck+1dk+1 = 10Sβ ckqdkq

  • 整理可得:
    [ c k + 1 d k + 1 ] = [ 1 0 λ 1 ] [ 1 − S 0 β ] [ c k q d k q ] \begin{equation} \begin{bmatrix} c_{k+1}\\\\ d_{k+1} \end{bmatrix}=\begin{bmatrix} 1&0\\\\ \lambda&1 \end{bmatrix}\begin{bmatrix} 1&-S\\\\ 0&\beta \end{bmatrix} \begin{bmatrix} c_kq\\\\ d_kq \end{bmatrix}\end{equation} ck+1dk+1 = 1λ01 10Sβ ckqdkq

  • 整理可得:
    [ c k + 1 d k + 1 ] = [ 1 − S λ − λ S + β ] [ c k d k ] \begin{equation} \begin{bmatrix} c_{k+1}\\\\ d_{k+1} \end{bmatrix}=\begin{bmatrix} 1&-S\\\\ \lambda&-\lambda S+\beta \end{bmatrix} \begin{bmatrix} c_k\\\\ d_k \end{bmatrix}\end{equation} ck+1dk+1 = 1λSλS+β ckdk

  • 将系数矩阵为R矩阵可得:
    [ c k + 1 d k + 1 ] = R [ c k d k ] \begin{equation} \begin{bmatrix} c_{k+1}\\\\ d_{k+1} \end{bmatrix}=R \begin{bmatrix} c_k\\\\ d_k \end{bmatrix}\end{equation} ck+1dk+1 =R ckdk R = [ 1 − S λ − λ S + β ] \begin{equation} R=\begin{bmatrix} 1&-S\\\\ \lambda&-\lambda S+\beta \end{bmatrix} \end{equation} R= 1λSλS+β

  • 综上所示,对于迭代方程来说,S, β \beta β的选择直接会影响到矩阵R的大小,我们希望的是选择合适的S, β \beta β使得矩阵R的最大的特征值尽可能达到最小,假设矩阵R的特征值为 e 1 , e 2 e_1,e_2 e1,e2,则可得如下:
    ( S , β ) = arg min ⁡ S , β { max ⁡ ( ∣ e 1 ( λ ) ∣ , ∣ e 2 ( λ ) ∣ ) } , s t : λ min ⁡ ( S ) ≤ λ ≤ λ max ⁡ ( S ) \begin{equation} (S,\beta)=\argmin\limits_{S,\beta}\{\max(|e_1(\lambda)|,|e_2(\lambda)|)\} ,st:\lambda_{\min}(S)\le\lambda\le\lambda_{\max}(S) \end{equation} (S,β)=S,βargmin{max(e1(λ),e2(λ))},st:λmin(S)λλmax(S)

  • 这里只给结论最好的 S , β S,\beta S,β,后续研究:
    s = ( 2 λ max ⁡ + λ min ⁡ ) 2 ; β = ( λ max ⁡ − λ min ⁡ λ max ⁡ + λ min ⁡ ) 2 ; \begin{equation} s=(\frac{2}{\sqrt{\lambda_{\max}}+\sqrt{\lambda_{\min}}})^2; \beta=(\frac{\sqrt{\lambda_{\max}}-\sqrt{\lambda_{\min}}}{\sqrt{\lambda_{\max}}+\sqrt{\lambda_{\min}}})^2; \end{equation} s=(λmax +λmin 2)2;β=(λmax +λmin λmax λmin )2;

  • 之前我们的函数 f ( x ) = 1 2 X T S X = 1 2 ( x 2 + b y 2 ) f(x)=\frac{1}{2}X^TSX=\frac{1}{2}(x^2+by^2) f(x)=21XTSX=21(x2+by2)中矩阵S, b < 1
    λ max ⁡ = 1 , λ min ⁡ = b \begin{equation} \lambda_{\max}=1, \lambda_{\min}=b \end{equation} λmax=1,λmin=b

  • 代入可得:
    s = ( 2 1 + b ) 2 ; β = ( 1 − b 1 + b ) 2 ; \begin{equation} s=(\frac{2}{1+b})^2; \beta=(\frac{1-\sqrt{b}}{1+\sqrt{b}})^2; \end{equation} s=(1+b2)2;β=(1+b 1b )2;

  • 我们来看之前的梯度下降Ordinary descent factor
    β 1 = ( 1 − b 1 + b ) 2 ; \begin{equation} \beta_1=(\frac{1-b}{1+b})^2; \end{equation} β1=(1+b1b)2;

  • 动量法梯度下降 Accelerated descent factor
    β 2 = ( 1 − b 1 + b ) 2 ; \begin{equation} \beta_2=(\frac{1-\sqrt{b}}{1+\sqrt{b}})^2; \end{equation} β2=(1+b 1b )2;

  • 也就是当同等b时,动量法给的值更好!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机数据恢复篇:如何从 Android 设备内恢复数据

如何从 Android 内部存储恢复数据&#xff1f; 要从 Android 内部存储恢复已删除的文件&#xff0c;您需要一个 Android 内部存储恢复应用或程序。请继续阅读以获取可靠的 Android 数据恢复软件&#xff0c;并让它帮助您从 Android 手机的内部存储恢复数据。 是否有可能恢复 An…

【vue3-命名规范以及注意事项】

使用多字组件名 使用详细的道具定义props 在提交的代码中&#xff0c;prop定义应该总是尽可能详细&#xff0c;至少指定类型。 在声明期间&#xff0c;道具名应该始终使用camelCase。当在in-DOM模板中使用时&#xff0c;props应该是串式的。单文件组件模板和JSX可以使用keba…

sklearn之神经网络学习算法

文章目录 什么是神经网络人工神经网络的结构输入层输出层隐含层神经元的链接 近几年深度学习还是比较火的&#xff0c;尤其是在大语言模型之后&#xff0c;在本质上深度学习网络就是层数比较多的神经网络。sklearn并不支持深度学习&#xff0c;但是支持多层感知机&#xff08;浅…

AI 歌词创作:突破想象,惊艳听觉

在音乐的世界里&#xff0c;歌词是触动心灵的钥匙&#xff0c;是引发共鸣的桥梁。而如今&#xff0c;AI 歌词创作正以其惊人的力量&#xff0c;突破我们的想象&#xff0c;为我们带来前所未有的听觉盛宴。 “妙笔生词智能写歌词软件&#xff08;veve522&#xff09;”便是这场…

【机器学习-00】机器学习是什么?

在科技飞速发展的今天&#xff0c;机器学习已成为一个热门话题&#xff0c;广泛应用于各个行业和领域。那么&#xff0c;机器学习到底是什么&#xff1f;它又是如何工作的&#xff1f;本文将深入探讨机器学习的定义、原理及其在各领域的应用&#xff0c;带领读者走进这个神秘而…

QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型

QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型 原创 QuantML QuantML 2024年07月12日 19:23 上海 Content 论文提出了一种新的时间序列嵌入方法&#xff0c;主要观点是独立地嵌入时间序列块&#xff08;patches&#xff09;&#xff0c;而不是捕捉这些块之间的…

MySQl高级篇-主从复制

主从复制 复制的基本原理 slave会从master读取binlog来进行数据同步 MySQL复制过程分成三步&#xff1a; master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件&#xff0c;binary log events;slave将master的binary log events拷贝到它的中继日志(r…

SpringBoot+Vue实现简单的文件上传(txt篇)

SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 页面 3 效果&#xff1a;只能上传txt文件且大小限制为2M&#xff0c;选择文件后自动上传。 4 前端代码 <template><div class"container"><el-…

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

SQL 字段类型-上

总 数据类型关键字描述整数迷你整型tinyint使用1个字节存储整数短整型smallint使用2个字节存储整数中整型mediumint使用3个字节存储整数标准整型int使用4个字节存储整数小数大整型bigint使用8个字节存储单进度float (.. , ..)使用4个字节 ...表示宽度 后面的... 表示小数位双精…

链接追踪系列-08.mac m1安装logstash-番外

下载地址&#xff1a;https://elasticsearch.cn/download/ 配置es相关&#xff1a; #安装plugin&#xff1a; jelexbogon bin % ./logstash-plugin install logstash-codec-json_lines启动&#xff1a;指定配置文件运行 jelexbogon bin % nohup ./logstash -f ../config…

docker安装mysql, 虚拟机连接mysql

docker已安装&#xff1a;安装教程docker和docker的安装-CSDN博客docker是容器技术&#xff08;软件&#xff09;&#xff0c;提供标准的应用镜像&#xff08;包含应用&#xff0c;和应用的依赖&#xff09;可以轻松在docker里安装应用&#xff0c;每个应用独立容器。https://b…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

Spring AOP 实现 Excel 导出统一处理

你好&#xff0c;我是柳岸花开。在实际开发中&#xff0c;经常会遇到需要导出 Excel 数据的需求。为了避免代码重复&#xff0c;我们可以使用 Spring AOP&#xff08;面向切面编程&#xff09;来实现 Excel 导出的统一处理。本文将介绍如何使用 Spring AOP 在项目中统一处理 Ex…

三参数陷波器

传统陷波器特性 传统陷波器的传递函数为&#xff1a; 传统陷波器的 Bode 图如图所示&#xff0c;根据图中曲线表明&#xff0c;当ξ 0.1、ξ 1、 ξ 10 时&#xff0c;随着ξ 值的增加&#xff0c;陷波宽度增大&#xff0c;陷波幅值也增大&#xff0c;此时&#xff0c;陷波…

线程安全(五)volatile 修饰共享变量(JIT即时编译器、指令重排序)

目录 一、volatile 简介1.1 定义1.2 volatile 的两个特性二、特性1:保证线程间的可见性示例1:普通场景1)代码示例:2)执行结果:3)总结:示例2:被 JIT 即时编译器优化1)代码示例:2)执行结果:3)原因分析:4)什么是 JIT 即时编译器?4)解决方案一:5)解决方案二:三…

三相PWM整流器PI双闭环控制Simulink

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Rb&#xff09;软件。建议采用matlab2017 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.拓扑结构&#xff1a; 3.模型算法架构&#xff1a; 4.仿真算法&#xff1a; &am…

Camunda如何通过外部任务与其他系统自动交互

文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表&#xff1a; Camunda组件与服务与…

OpenStack Yoga版安装笔记(六)glance练习

1、glance架构 Glance api处理来自用户端&#xff08;OpenStackClient等&#xff09;的请求&#xff0c;如果是读写镜像元数据&#xff0c;则对glance db进行读写操作&#xff0c;因为镜像元数据都保存在glance db里面&#xff1b;如果是存取镜像本身&#xff0c;则对后端存储…

Ubuntu系统上安装Apache和WordPress

** 第一步跟新系统包 ** 首先跟新系统包 sudo apt update sudo apt upgrade第二步下载安装apache sudo apt install apache2 ##查看apache的状态是否启动成功 sudo systemctl status apache2 ##查看服务器的ip地址 sudo ip a通过ip地址进行访问apache页面 第三步下载安装…