线性代数|机器学习-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时,动量法给的值更好!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

助力数据记录:Connext的Historian功能启动指南

​ 在工业自动化领域&#xff0c;Connext以其全新的OPCUA数据采集解决方案为核心&#xff0c;不仅拥有超越传统的扩展功能&#xff0c;而且在多个行业中都得到了广泛的认证。Connext能够快速找出解决方案并迅速部署&#xff0c;整个过程不会影响到原有的生产。它的强大之处在于…

信创学习笔记(三),信创之操作系统OS思维导图

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 一. 回顾信创CPU芯片 1. x86应用生态最丰富, 海光(3,5,7)授权较新,无桌面授权,多用于服务器 兆芯(ZX, KX, KH)授权较早期. 2. ARMv8移动端应用生态丰富, 华为鲲鹏(9) ,制裁中&#xff0c;…

基于python的三次样条插值原理及代码

1 三次样条插值 1.1 三次样条插值的基本概念 三次样条插值是通过求解三弯矩方程组&#xff08;即三次样条方程组的特殊形式&#xff09;来得出曲线函数组的过程。在实际计算中&#xff0c;还需要引入边界条件来完成计算。样条插值的名称来源于早期工程师制图时使用的细长木条&…

探索Node.js中的node-xlsx:将Excel文件解析为JSON

在Node.js开发中&#xff0c;处理Excel文件是一个常见需求&#xff0c;特别是在需要导入大量数据或生成报表的场景中。node-xlsx 是一个强大的库&#xff0c;它提供了Excel文件的解析和生成功能。本文将深入探讨 node-xlsx 的使用&#xff0c;并通过一个案例演示如何将Excel文件…

算法——双指针(day2)

目录 202.快乐数 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 11.盛最多水的容器 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 202.快乐数 力扣链接&#xff1a;202.快乐数 题目解析&#xff1a; 本文中最重要的一句话就是重复平方和…

AI自动生成PPT哪个软件好?高效制作PPT优选这4个

7.15初伏的到来&#xff0c;也宣告三伏天的酷热正式拉开序幕~在这个传统的节气里&#xff0c;人们以各种方式避暑纳凉&#xff0c;享受夏日的悠闲时光。 而除了传统的避暑活动&#xff0c;我们还可以用一种新颖的方式记录和分享这份夏日的清凉——那就是通过PPT的方式将这一传…

班迪录屏Bandicam使用详解

Bandicam是一款功能强大的视频录制工具&#xff0c;录制出来的视频体积较小且内容清晰度较高&#xff0c;平时录屏、录游戏都非常合适。可以全屏幕录制&#xff0c;也可以自定义录制区域&#xff0c;还可以在录制时添加自定义的logo&#xff0c;并且有个绘制模式&#xff0c;适…

学习008-01-02 Define the Data Model and Set the Initial Data(定义数据模型并设置初始数据 )

Define the Data Model and Set the Initial Data&#xff08;定义数据模型并设置初始数据 &#xff09; This topic explains how to implement entity classes for your application. It also describes the basics of automatic user interface construction based on a da…

基于AT89C51单片机的多功能自行车测速计程器(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的多功能自行车测速计程器的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 选题背景 原理图 PCB图 仿真图 代码 系统论文 资源下载 选题背景 美丽的夜晚&…

JavaScript:移除元素

这是原题&#xff1a;给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操…

【PyTorch][chapter 26][李宏毅深度学习][attention-2]

前言&#xff1a; Multi-Head Attention 主要作用&#xff1a;将Q,K,V向量分成多个头&#xff0c;形成多个子语义空间&#xff0c;可以让模型去关注不同维度语义空间的信息 目录&#xff1a; attention 机制 Multi-Head Attention 一 attention 注意力 Self-Attention&#x…

什么是im即时通讯?WorkPlus im即时通讯私有化部署安全可控

IM即时通讯是Instant Messaging的缩写&#xff0c;指的是一种实时的、即时的电子信息交流方式&#xff0c;也被称为即时通讯。它通过互联网和移动通信网络&#xff0c;使用户能够及时交换文本消息、语音通话、视频通话、文件共享等信息。而WorkPlus im即时通讯私有化部署则提供…

防火墙--双机热备

目录 双击热备作用 防火墙和路由器备份不同之处 如何连线 双机 热备 冷备 VRRP VGMP&#xff08;华为私有协议&#xff09; 场景解释 VGMP作用过程 主备的形成场景 接口故障的切换场景 整机故障 原主设备故障恢复的场景 如果没有开启抢占 如果开启了抢占 负载分…

对红酒品质进行数据分析(python)

http://t.csdnimg.cn/UWg2S 数据来源于这篇博客&#xff0c;直接下载好csv文件。 这篇内容均在VScode的jupyter notebook上完成&#xff0c;操作可以看我的另一篇博客&#xff1a;http://t.csdnimg.cn/69sDJ 一、准备工作 1. 导入数据库 #功能是可以内嵌绘图&#xff0c;并…

纯硬件一键开关机电路的工作原理

这是一个一键开关机电路: 当按一下按键然后松开&#xff0c;MOS管导通&#xff0c;VOUT等于电源电压; 当再次按一下按键然后松开&#xff0c;MOS管关闭&#xff0c;VOUT等于0; 下面来分析一下这个电路的工作原理。上电后&#xff0c;输入电压通过R1和R2给电容充电&#xff0c;最…

继承和多态常见的面试问题

文章目录 概念问答 概念 下面哪种面向对象的方法可以让你变得富有( A) A: 继承 B: 封装 C: 多态 D: 抽象 (D )是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关&#xff0c; 而对方法的调用则可以关联于具体的对象。 A: 继承 B: 模板 C: 对象的…

如何让公众号文章排版变的高大上?

有的时候&#xff0c;你可能会疑惑&#xff0c;为什么你写的文章没人看&#xff1f;明明投入很多精力在标题和文章内容上&#xff0c;但收效甚微。 有一个关键性的因素可能被你忽略了&#xff0c;那就是排版&#xff0c;文章没有排版&#xff0c;无论你的内容再怎么精彩&#x…

力扣622.设计循环队列

力扣622.设计循环队列 通过数组索引构建一个虚拟的首尾相连的环当front rear时 队列为空当front rear 1时 队列为满 (最后一位不存) class MyCircularQueue {int front;int rear;int capacity;vector<int> elements;public:MyCircularQueue(int k) {//最后一位不存…

智能化革新:智能AI如何助力生产力发展的未来与应用

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 前言 在当今这个科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了推动生产力发展的重要力量。AI技…