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

Day12 梯度下降法的含义与公式

Day12 梯度下降法的含义与公式

应用数学最重要的任务之一就是寻找函数取最小值的点。

梯度下降法(Gradient Descent)是一种广泛应用于机器学习和深度学习中的优化算法,主要用于求解最小化目标函数的问题。

一、梯度下降法的理解

多变量函数的最小值条件

  • 回顾Day9 神经网络的偏导数基础中关于“多变量函数的最小值条件”:对于多变量函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \ldots, x_n) f(x1,x2,,xn)取得最小值的必要条件是该函数在该点的所有偏导数都为零,求解公式如下:

    ∂ f ∂ x 1 ( x 1 ∗ , x 2 ∗ , … , x n ∗ ) = 0 \frac{\partial f}{\partial x_1}(x_1^*, x_2^*, \ldots, x_n^*) = 0 x1f(x1,x2,,xn)=0
    ∂ f ∂ x 2 ( x 1 ∗ , x 2 ∗ , … , x n ∗ ) = 0 \frac{\partial f}{\partial x_2}(x_1^*, x_2^*, \ldots, x_n^*) = 0 x2f(x1,x2,,xn)=0
    ⋮ \vdots
    ∂ f ∂ x n ( x 1 ∗ , x 2 ∗ , … , x n ∗ ) = 0 \frac{\partial f}{\partial x_n}(x_1^*, x_2^*, \ldots, x_n^*) = 0 xnf(x1,x2,,xn)=0

  • 然而,在实际问题中,上式通常不容易求解,那么该如何解决呢?

    • 梯度下降法是一种具有代表性的替代方法。
    • 该方法不直接求解方程,而是通过慢慢地移动图像上的点进行摸索,从而找出函数的最小值。

    本Day后,会发现这里的“慢慢”并不单纯地指移动速度慢,而是指每一次尝试移动的距离可能很短,移动的频次可能很密集,所以导致通过利用梯度下降法追求最小值的过程速度可能会很慢。

梯度下降法?“坡度”下降法!

  • 假如 f ( x , y ) f(x,y) f(x,y)生成的图像是一个凹凸不平的斜坡,在斜坡上放一个篮球,然后轻轻地松开手,球会沿着最陡的坡面开始滚动(参考图中红色箭头反向),待球稍微前进一点后,把球止住,然后从止住的位置再次松手,球会从这个点再次沿着最陡的坡面开始滚动。

在这里插入图片描述

  • 把上面这个过程抽象如下:

在这里插入图片描述

补充理解:

  • Gradient Descent 作为专业名词 翻译为 “梯度下降法” 并不见得容易让人理解,因为”梯度“是一个纯数学概念,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大。
  • 其实Gradient这个单词常见释意是坡度,坡度这个概念更贴近生活,缺少了专业数学定义反而容易让人理解,结合上面两张图像说明,可以不专业称之为“坡度下降法”:就是沿着最陡坡面下降的方法。
  • 坡度就是坡的陡峭程度,就是梯度,具体指的就是该点的导数。
  • 实在对梯度不"感冒"的话,不妨在大脑里将梯度理解为“最陡的坡度方向”。

用”成龙跳空调“解释梯度下降法

场景设定

在电影《宝贝计划》中,成龙有一个经典的片段,他被人追杀到大厦楼顶,需要从高楼外跳踩空调机,一层一层地跳下来。
在这里插入图片描述

想象一下,成龙站在一栋大楼的顶层,他的目标是跳到地面上(即找到函数的最小值点,这里地面代表最低点或最优解)。但是,他不能直接跳下去,因为那样太危险了(直接跳到最低点通常不现实,也可能错过最优解)。大楼的每一层都代表函数值的一个点,楼层越高,函数值越大;楼层越低,函数值越小,直到地面代表最小值。

梯度下降过程
  1. 初始位置:成龙一开始站在楼顶,这就像梯度下降法中的初始参数值。这些参数值是随机初始化的,或者是根据某种策略设置的。

  2. 观察梯度:在每一次跳跃前,成龙需要确定下一步往哪个方向跳才能更接近地面。这相当于计算损失函数关于当前参数的梯度。

  3. 迈出一步:根据观察到的梯度,成龙决定向哪个方向跳(即沿着梯度下降的方向)。他不会一次性跳到地面,而是选择跳到下一层或几层下的某个位置,这个位置使得他的高度(即函数值)有所下降。

  4. 重复过程:每跳到一层新的楼层,成龙都会重复上述过程:观察新的梯度,决定下一步的跳跃方向,然后再次跳跃。这个过程会一直持续,直到他跳到地面(或接近地面的某个位置,这取决于算法的停止条件,比如梯度接近于零或达到了预设的迭代次数)。

  5. 到达地面:最终,通过一步步的小心跳跃,成龙成功到达了地面(或接近最优解的位置)。这个过程就是梯度下降法寻找函数最小值的直观体现。

关键点对应
  • 成龙:代表算法中的“搜索者”或“优化器”。
  • 大楼的楼层:代表函数值的不同点。
  • 梯度:指示函数值下降最快的方向。
  • 跳跃:代表算法在每一步中沿着梯度方向进行的更新。
  • 到达地面:代表找到函数的局部最小值。

通过这个类比,我们可以更直观地理解梯度下降法的工作原理和过程。它就像成龙在复杂地形中不断寻找最佳路径以安全到达地面一样,梯度下降法也在不断地调整参数以最小化损失函数。

在数值分析领域,梯度下降法也称为最速下降法。这个名称表示沿着图像上的最短路径下降。


二、梯度下降法的公式表示

多变量函数的近似公式

  • 回顾Day11 梯度下降法的基础:多变量函数的近似公式中“多变量函数的近似公式”:

若有: f ( x + △ x , y + △ y ) ≐ f ( x , y ) + ∂ f ( x , y ) ∂ x △ x + ∂ f ( x , y ) ∂ y △ y 若有:f(x+\triangle x, y+\triangle y)\doteq f(x, y)+\frac{{\partial}f(x, y)}{\partial x}\triangle x+\frac{{\partial}f(x, y)}{\partial y}\triangle y 若有:f(x+x,y+y)f(x,y)+xf(x,y)x+yf(x,y)y

定义: z = f ( x , y ) , △ z = f ( x + △ x , y + △ y ) − f ( x , y ) 定义:z= f(x,y),\triangle z=f(x+\triangle x, y+\triangle y)-f(x, y) 定义:z=f(x,y)z=f(x+x,y+y)f(x,y)

可得: △ z = ∂ z ∂ x △ x + ∂ z ∂ y △ y 可得:\triangle z=\frac{{\partial}z}{\partial x}\triangle x+\frac{{\partial}z}{\partial y}\triangle y 可得:z=xzx+yzy

近似公式的向量表示

  • 回顾Day11 梯度下降法的基础:多变量函数的近似公式中“近似公式的向量表示”:

若有: z = f ( x , y ) , △ z = ∂ z ∂ x △ x + ∂ z ∂ y △ y 若有:z =f(x,y),\triangle z=\frac{{\partial}z}{\partial x}\triangle x+\frac{{\partial}z}{\partial y}\triangle y 若有:z=f(x,y),z=xzx+yzy

定义:向量 ∇ z = ( ∂ z ∂ x , ∂ z ∂ y ) , 向量 △ x = ( △ x , △ y ) 定义:向量\nabla z=(\frac{{\partial}z}{\partial x},\frac{{\partial}z}{\partial y}),向量\bigtriangleup x=(\bigtriangleup x,\bigtriangleup y) 定义:向量z=(xz,yz),向量x=(x,y)

则:近似公式可以表示为两个向量的内积 ( ∇ z ⃗ ⋅ △ x ⃗ ) 的形式,即: △ z = ∇ z ⃗ ⋅ △ x ⃗ 则:近似公式可以表示为两个向量的内积(\vec{\nabla z}\cdot \vec{\bigtriangleup x})的形式,即:\triangle z = \vec{\nabla z}\cdot \vec{\bigtriangleup x} 则:近似公式可以表示为两个向量的内积(z x )的形式,即:z=z x

向量的内积

  • 回顾Day6 神经网络的向量基础中"向量的内积":

    在这里插入图片描述

梯度下降法的基本式

  • 根据对近似公式和向量内积的回顾,可以得出:

    • ∇ z ⃗ \vec{\nabla z} z △ x ⃗ \vec{\bigtriangleup x} x 这两个向量反向正好相反时, △ z \triangle z z取得最小值,此时函数 z z z减小得最快
  • 综上所述,从点 ( x , y ) (x, y) (x,y) 向点 ( x + ∆ x , y + ∆ y ) (x + ∆x, y +∆y) (x+x,y+y) 移动时,当满足以下关系式时,函数 z = f ( x , y ) z = f (x, y) z=f(x,y) 减小得最快,这个关系式就是二变量函数的梯度下降法的基本式:
    ( Δ x , Δ y ) = − η ( ∂ f ( x , y ) ∂ x , ∂ f ( x , y ) ∂ y ) (\Delta x, \Delta y) = -{\eta} \left( \frac{\partial f(x, y)}{\partial x}, \frac{\partial f(x, y)}{\partial y} \right) (Δx,Δy)=η(xf(x,y),yf(x,y))

    △ x ⃗ = − η ∇ z ⃗ \vec{\bigtriangleup x} = -{\eta}\vec{\nabla z} x =ηz

    其中, η \eta η(读作 i t a ita ita)是一个正的微小常数,用于表示变化的程度。

    在实际使用计算机进行计算时,如何恰当地确定这个 η 是一个大问题。
    η 可以看作人移动时的“步长”,根据 η 的值,可以确定下一步移动到哪个点。如果步长较大,那么可能会到达最小值点,也可能会直接跨过了最小值点(左图)。而如果步长较小,则可能会滞留在极小值点(右图)。

    在这里插入图片描述

    在神经网络的世界中,η 称为学习率。遗憾的是,它的确定方法没有明确的标准,只能通过反复试验来寻找恰当的值。

  • 上面式子中的向量 ( ∂ f ( x , y ) ∂ x , ∂ f ( x , y ) ∂ y ) (\frac{\partial f(x, y)}{\partial x}, \frac{\partial f(x, y)}{\partial y}) (xf(x,y),yf(x,y)) ∇ z \nabla z z表示的就是函数 f ( x , y ) f(x, y) f(x,y) 在点 ( x , y ) (x, y) (x,y) 处的梯度(gradient),可以开始解决问题了:

    ①给定函数 f ( x , y ) f(x, y) f(x,y)以及起始点 ( x , y ) (x, y) (x,y)计算出梯度

    ②根据梯度下降法,计算出向量 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy) ( x + Δ x , y + Δ y ) (x+\Delta x, y+\Delta y) (x+Δx,y+Δy)

    ③根据梯度的定义,从点 ( x , y ) (x,y) (x,y)向点 ( x + Δ x , y + Δ y ) (x+\Delta x, y+\Delta y) (x+Δx,y+Δy)移动,代表沿着函数减小得最快的方向移动。

    ④反复重复①②③,不出意外的话就能找到该函数的最小值点。

针对以上步骤,下一Day会利用最简单的工具(Excel)来体验梯度下降法的迭代过程


梯度下降法的推广

  • 二变量函数的梯度下降法的基本式可以很容易地推广到三个变量以上的情形。
  • 当函数 f f f n n n 个自变量 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x1,x2,,xn 构成时,梯度下降法的基本式可以像下面这样进行推广:
    • η \eta η 为正的微小常数,变量 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x1,x2,,xn 改变为 x 1 + △ x 1 , x 2 + △ x 2 , ⋯ , x n + △ x n x_1 + \triangle x_1, x_2 + \triangle x_2, \cdots, x_n + \triangle x_n x1+x1,x2+x2,,xn+xn,当满足以下关系式时,函数 f f f 减小得最快。

( △ x 1 , △ x 2 , ⋯ , △ x n ) = − η ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯ , ∂ f ∂ x n ) (\triangle x_1, \triangle x_2, \cdots, \triangle x_n) = -\eta \left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \cdots, \frac{\partial f}{\partial x_n}\right) (x1,x2,,xn)=η(x1f,x2f,,xnf)

这里,向量 ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯ , ∂ f ∂ x n ) (\frac{\partial f}{\partial x_{1}}, \frac{\partial f}{\partial x_{2}}, \cdots, \frac{\partial f}{\partial x_{n}}) (x1f,x2f,,xnf)称为函数 f f f 在点 ( x 1 , x 2 , ⋯ , x n ) (x_1, x_2, \cdots, x_n) (x1,x2,,xn) 处的梯度。

与二变量函数的情况一样,如果从点 ( x 1 , x 2 , ⋯ , x n ) (x_{1}, x_{2}, \cdots, x_{n}) (x1,x2,,xn)向点 ( x 1 + △ x 1 , x 2 + △ x 2 , ⋯ , x n + △ x n ) (x_{1}+\triangle x_{1}, x_{2}+\triangle x_{2}, \cdots, x_{n}+\triangle x_{n}) (x1+x1,x2+x2,,xn+xn)移动就能够沿着函数减小得最快的方向移动。因此,反复如此移动,就能够在 n 维空间中找到最小值点。这就是 n 变量情况下的梯度下降法。


三、回顾梯度下降法的要点

  1. 初始化参数:选择适当的初始值作为优化的起点。
  2. 计算梯度:根据目标函数计算当前点的梯度。
  3. 更新参数:按照梯度的反方向和步长更新参数。
  4. 判断停止条件:根据预设的停止条件(如迭代次数、目标函数值的变化量等)判断是否停止迭代。

http://www.mrgr.cn/news/80980.html

相关文章:

  • 在UE5中调用ImGui图形界面库
  • 基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
  • 矩阵:Input-Output Interpretation of Matrices (中英双语)
  • 【C++ 真题】P1996 约瑟夫问题
  • 玩转OCR | 探索腾讯云智能结构化识别新境界
  • GDPU软件工程习题(挖空版)
  • php各个版本的特性以及绕过方式
  • 基础电路的学习
  • 在VBA中结合正则表达式和查找功能给文档添加交叉连接
  • 分析excel硕士序列数据提示词——包含对特征的筛选
  • k8s迁移——岁月云实战笔记
  • JWT令牌与微服务
  • Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • GTID详解
  • (耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)
  • 本地计算机上的MySQL服务启动后停止(connection refused: connect)解决一系列数据库连接不上的问题
  • 在UE5中调用ImGui图形界面库
  • [创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性
  • Linux——卷
  • 【day09】面向对象编程进阶
  • 汽车IVI中控开发入门及进阶(43):NanoVG
  • Leetcode-208. 实现Trie(前缀树)
  • SQL进阶技巧:如何计算算法题分发糖果问题?
  • Java开发经验——数据库开发经验
  • 深度学习笔记——VQ-VAE和VQ-VAE-2
  • 基于mmdetection进行语义分割(不修改源码)