Day9 神经网络的偏导数基础

多变量函数与神经网络

在神经网络中,我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如,一个简单的神经元输出可以表示为:

z = f ( w 1 x 1 + w 2 x 2 + … + w n x n + b ) z = f(w_1x_1 + w_2x_2 + \ldots + w_nx_n + b) z=f(w1x1+w2x2++wnxn+b)

其中, x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,,xn 是输入, w 1 , w 2 , … , w n w_1, w_2, \ldots, w_n w1,w2,,wn 是权重, b b b 是偏置, f f f 是激活函数, z z z 是输出。这是一个典型的多变量函数,其自变量包括输入 x i x_i xi、权重 w i w_i wi和偏置 b b b


偏导数的概念与计算

偏导数是多元函数相对于其某一个自变量的导数,求导时保持其他自变量不变。对于函数 z = f ( x , y ) z = f(x, y) z=f(x,y),其关于 x x x的偏导数定义为:

∂ z ∂ x = lim ⁡ Δ x → 0 f ( x + Δ x , y ) − f ( x , y ) Δ x \frac{\partial z}{\partial x} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x, y) - f(x, y)}{\Delta x} xz=Δx0limΔxf(x+Δx,y)f(x,y)

类似地,关于 y y y的偏导数定义为:

∂ z ∂ y = lim ⁡ Δ y → 0 f ( x , y + Δ y ) − f ( x , y ) Δ y \frac{\partial z}{\partial y} = \lim_{\Delta y \to 0} \frac{f(x, y + \Delta y) - f(x, y)}{\Delta y} yz=Δy0limΔyf(x,y+Δy)f(x,y)

偏导数反映了函数在某一特定方向上的变化率。在神经网络中,我们特别关心损失函数 L L L关于权重 w i w_i wi和偏置 b b b的偏导数,因为它们指导了参数的更新。

偏导数的计算示例

考虑函数 f ( x , y ) = x 2 + x y + y 2 f(x, y) = x^2 + xy + y^2 f(x,y)=x2+xy+y2,我们可以分别计算其关于 x x x y y y的偏导数:

∂ f ∂ x = 2 x + y \frac{\partial f}{\partial x} = 2x + y xf=2x+y
∂ f ∂ y = x + 2 y \frac{\partial f}{\partial y} = x + 2y yf=x+2y

这两个偏导数描述了函数在 x x x y y y方向上的变化率。


多变量函数的最小值条件

对于多变量函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \ldots, x_n) f(x1,x2,,xn),取得最小值的必要条件是该函数在该点的所有偏导数都为零。即,如果存在一个点 ( x 1 ∗ , x 2 ∗ , … , x n ∗ ) (x_1^*, x_2^*, \ldots, x_n^*) (x1,x2,,xn)使得函数 f f f取得最小值,那么必须满足以下条件:

∂ 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

这些条件表明,在函数的最小值点处,函数沿任何方向的变化率都是零。换句话说,从该点出发,无论我们朝哪个方向移动,函数值都不会下降。

必要条件与充分条件

需要注意的是,上述条件只是取得最小值的必要条件,而不是充分条件。也就是说,满足这些条件的点可能是最小值点,但也可能是最大值点或鞍点。为了确定一个点是否是最小值点,我们需要进一步分析函数的二阶导数或Hessian矩阵。

  • 二阶导数测试:对于二维函数,我们可以通过计算二阶偏导数并检查它们的符号来判断一个临界点(即所有一阶偏导数为零的点)是局部最大值、局部最小值还是鞍点。对于更高维度的函数,我们需要计算Hessian矩阵并分析其特征值。
  • Hessian矩阵:Hessian矩阵是一个由函数二阶偏导数组成的方阵。如果Hessian矩阵在临界点处是正定的(即所有特征值都大于零),则该点是局部最小值点;如果是负定的(即所有特征值都小于零),则该点是局部最大值点;如果是不定的(即既有正特征值又有负特征值),则该点是鞍点。

鞍点是一个数学概念,它指的是在函数图像上,一个点在某一方向上是局部最大值,而在另一方向上却是局部最小值,形状类似马鞍,因此得名。在数学中,如果一个函数在某点的梯度为零,且在该点附近函数的Hessian矩阵(描述函数局部曲率的矩阵)具有正的和负的特征值,则该点就是鞍点。

在神经网络中,鞍点的作用和存在是一个重要的挑战。神经网络训练的目标通常是找到损失函数的全局最小值,但鞍点却可能阻碍这一目标的实现。由于鞍点处的梯度为零,优化算法(如梯度下降法)在到达鞍点时可能会停滞不前,导致训练过程缓慢或无法收敛到全局最优解。此外,高维参数空间中的鞍点比局部最小值更为常见,这进一步增加了神经网络训练的难度。

因此,研究如何有效地识别和逃离鞍点,对于提高神经网络训练效率和性能具有重要意义。一些优化算法和技巧,如动量法、Adam优化器等,已经被提出用于应对鞍点问题,并帮助神经网络在训练过程中更好地找到全局最优解。

找了最具代表性的"鞍点"发源图,大家可以直观的体验一下“鞍点(Saddle Point)”

在这里插入图片描述

​ 上图这个图像是 z = x 2 − y 2 z = x^2 − y^2 z=x2y2,图中的小红点就是一个鞍点 (A saddle point (in red) on the graph of z = x 2 − y 2 z = x^2 − y^2 z=x2y2)

给大家看一下真实的马鞍对比:

在这里插入图片描述

实际应用中的挑战

在实际应用中,找到多变量函数的最小值点可能面临一些挑战:

  • 局部最小值:对于非凸函数,可能存在多个局部最小值点。梯度下降法可能会陷入其中某个局部最小值点而无法找到全局最小值点。
  • 鞍点:在高维空间中,鞍点比局部最小值点更常见。梯度下降法在鞍点附近可能会变得非常缓慢甚至停滞不前。
  • 计算复杂性:对于大规模神经网络和复杂损失函数,计算梯度和Hessian矩阵可能非常耗时和占用大量计算资源。

为了解决这些问题,研究人员提出了许多优化算法和技巧,如随机梯度下降法、动量法、Adam优化器等。这些算法通过不同的方式来加速收敛、逃离局部最小值点和鞍点以及降低计算复杂度。

直观理解最小值

考虑函数 f ( x , y ) = x 2 + y 2 f(x, y) = x^2 + y^2 f(x,y)=x2+y2的图像:

在这里插入图片描述

在这个图像中,我们可以看到函数 f ( x , y ) = x 2 + y 2 f(x, y) = x^2 + y^2 f(x,y)=x2+y2形成了一个开口向上的抛物面。抛物面的顶点位于原点 ( 0 , 0 ) (0,0) (0,0),这正是函数取得最小值的点。通过计算偏导数并设为零(即 ∂ f ∂ x = 2 x = 0 \frac{\partial f}{\partial x} = 2x = 0 xf=2x=0 ∂ f ∂ y = 2 y = 0 \frac{\partial f}{\partial y} = 2y = 0 yf=2y=0),我们就可以找到这个点。


扩展内容:拉格朗日乘数法

拉格朗日乘数法是一种用于解决约束优化问题的方法。它通过引入拉格朗日乘数将有约束的优化问题转化为无约束的优化问题,从而简化求解过程。以下是拉格朗日乘数法的基本步骤以及在实际求最小值问题中的应用:

示例:最小化函数 f ( x , y ) = x 2 + y 2 f(x, y) = x^2 + y^2 f(x,y)=x2+y2,在约束条件 g ( x , y ) = x + y − 1 = 0 g(x, y) = x + y - 1 = 0 g(x,y)=x+y1=0 下。
  1. 构造拉格朗日函数
    L ( x , y , λ ) = f ( x , y ) + λ g ( x , y ) L(x, y, \lambda) = f(x, y) + \lambda g(x, y) L(x,y,λ)=f(x,y)+λg(x,y) ,其中, λ \lambda λ就是拉格朗日数

  2. 求偏导数并设为零
    ∂ L ∂ x = ∂ f ∂ x + λ ∂ g ∂ x = 0 \frac{\partial L}{\partial x} = \frac{\partial f}{\partial x} + \lambda \frac{\partial g}{\partial x} = 0 xL=xf+λxg=0

    ∂ L ∂ y = ∂ f ∂ y + λ ∂ g ∂ y = 0 \frac{\partial L}{\partial y} = \frac{\partial f}{\partial y} + \lambda \frac{\partial g}{\partial y} = 0 yL=yf+λyg=0

    ∂ L ∂ λ = g ( x , y ) = 0 \frac{\partial L}{\partial \lambda} = g(x, y) = 0 λL=g(x,y)=0

  3. 解方程组

    从第一个和第二个偏导数方程中,我们有:

    • − 2 x = − 2 y ⇒ x = y -2x = -2y \quad \Rightarrow \quad x = y 2x=2yx=y
      将这个结果代入约束条件方程: x + x − 1 = 0 ⇒ 2 x = 1 ⇒ x = 1 2 x + x - 1 = 0 \quad \Rightarrow \quad 2x = 1 \quad \Rightarrow \quad x = \frac{1}{2} x+x1=02x=1x=21
      • 因此, y = 1 2 y = \frac{1}{2} y=21 也成立。
  • 所以,最优解是 x = 1 2 x = \frac{1}{2} x=21, y = 1 2 y = \frac{1}{2} y=21
  1. 验证结果
  • 检查是否满足约束条件:
    g ( 1 2 , 1 2 ) = 1 2 + 1 2 − 1 = 0 g(\frac{1}{2}, \frac{1}{2}) = \frac{1}{2} + \frac{1}{2} - 1 = 0 g(21,21)=21+211=0

    • 满足约束条件。将 x = 1 2 x = \frac{1}{2} x=21, y = 1 2 y = \frac{1}{2} y=21 代入原函数 f ( x , y ) f(x, y) f(x,y)

f ( 1 2 ) = 1 2 + 1 2 − 1 = 0 f(\frac{1}{2}) = \frac{1}{2} + \frac{1}{2} - 1 = 0 f(21)=21+211=0

  • 满足约束条件。将 x = 1 2 x = \frac{1}{2} x=21, y = 1 2 y = \frac{1}{2} y=21 代入原函数 f ( x , y ) f(x, y) f(x,y)

  • f ( 1 2 , 1 2 ) = ( 1 2 ) 2 + ( 1 2 ) 2 = 1 4 + 1 4 = 1 2 f(\frac{1}{2}, \frac{1}{2}) = (\frac{1}{2})^2 + (\frac{1}{2})^2 = \frac{1}{4} + \frac{1}{4} = \frac{1}{2} f(21,21)=(21)2+(21)2=41+41=21这是函数在约束条件下的最小值。

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

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

相关文章

map和set题目练习

一、习题一:随机链表的复制 1.1题目详情 1.2思路 在没有学习map和set之前,解决这道题最大的问题就在于无法建立原链表与拷贝链表的映射关系,只能通过在原链表每个节点后面新建一个新的链表来进行节点间的对应,而学习了map之后&a…

C语言入门(一):A + B _ 基础输入输出

前言 本专栏记录C语言入门100例,这是第(一)例。 目录 一、【例题1】 1、题目描述 2、代码详解 二、【例题2】 1、题目描述 2、代码详解 三、【例题3】 1、题目描述 2、代码详解 四、【例题4】 1、题目描述 2、代码详解 一、【例…

渗透测试学习笔记(五)网络

一.IP地址 1. IP地址详解 ip地址是唯一标识,一段网络编码局域网(内网):交换机-网线-pcx.x.x.x 32位置2进制(0-255) IP地址五大类 IP类型IP范围A类0.0.0.0 到 127.255.255.255B类128.0.0.0 到191.255.25…

《自制编译器》--青木峰郎 -读书笔记 编译hello

在该书刚开始编译hello.cb时就遇到了问题。 本人用的是wsl,环境如下, 由于是64位,因此根据书中的提示,从git上下载了64位的cb编译器 cbc-64bit 问题一: 通过如下命令编译时,总是报错。 cbc -Wa,"--32" -Wl,"-…

jedis使用及注意事项

Jedis Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下:…

浏览器执行机制

主线程 任务1,任务2 微队列微队列任务1, 微队列任务2延时队列延时队列任务1, 延时队列任务2交互队列.... 事件循环的工作原理 主线程执行同步任务: 主线程首先执行所有同步任务(即栈中的任务)。这些任务会…

Java 基础知识——part 4

8.成员方法:Java中必须通过方法才能对类和对象的属性操作;成员方法只在类的内部声明并加以实现。一般声明成员变量后再声明方法。 9.方法定义 方法的返回值是向外界输出的信息,方法类型和返回值类型同;返回值通过return返回&…

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件:C/S系统、Winform桌面应用软件。 运行平台:Windows .NETCore,.NET8 开发工具:Visual Studio 2022,C#语言 数据库:Microsoft SQLServer 2012,Oracle 21c,MySQL8&#xf…

监控易 IDC 数据中心一体化智能运维平台:新质生产力的典范

一、引言 在当今数字化飞速发展的时代,IDC 数据中心作为信息产业的核心基础设施,其稳定、高效运行对于企业和社会的重要性不言而喻。随着数据量的爆炸式增长和业务复杂度的提升,传统的运维模式已难以满足需求,数据中心面临着诸多挑…

busybox学习——简单介绍

文章目录 简介官网源码目录结构构建 简介 BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任…

CTFHUB 信息泄露 备份文件下载-网站源码

根据提示应是猜测网站源码的备份文件,可以采用bp拼接文件名和后缀 开启bp抓包后设置第一个攻击点导入文件名 第二个攻击点导入后缀 开始暴力破解,有成功响应的 拼接到网站后缀后可以直接下载 解压缩后记事本的名字就是flag 总结: …

Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)

效果预览 第一步: 告诉chatgpt: 将latex格式中的英文翻译为中文(符号和公式不要动),给出latex格式第二步: Latex 转换为 Word(使用GrindEQ ) 视频 https://www.bilibili.com/video/BV1f242…

X射线衍射全岩分析在岩石学研究中的重要性

X射线衍射全岩分析在岩石学研究中的重要性 X射线衍射(XRD)全岩分析在岩石学研究中扮演着至关重要的角色,它是一种非破坏性的分析技术,能够提供岩石和矿物的精细结构信息。通过解析材料内部原子排列的特征,XRD不仅揭示了…

【Bolt.new + PromptCoder】三分钟还原油管主页

【Bolt.new PromptCoder】三分钟还原油管主页 PromptCoder官网:PromptCoder Bolt官网:https://bolt.new/ Bolt 是什么? Bolt.new 是一个提供创建全栈网络应用服务的平台。它允许用户通过提示(Prompt)、运行&#x…

定时/延时任务-万字解析Spring定时任务原理

文章目录 1. 概要2. EnableScheduling 注解3. Scheduled 注解4. postProcessAfterInitialization 解析4.1 createRunnable 5. 任务 Task 和子类6. ScheduledTaskRegistrar6.1 添加任务的逻辑6.2 调度器初始化6.3 调用时机 7. taskScheduler 类型7.1 ConcurrentTaskScheduler7.2…

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…

ResNet网络:深度学习中的革命性架构

目录 ​编辑 引言 ResNet网络的特点 1. 残差块(Residual Block) 2. 恒等映射(Identity Mapping) 3. 深层网络训练 4. Batch Normalization 5. 全局平均池化 6. 灵活的结构 ResNet的应用案例 ResNet的研究进展 实战案例…

Node.js day-01

01.Node.js 讲解 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端…

又要考试了

一、实现无名管道练习&#xff1a;父进程写入管道&#xff0c;子进程读取管道数据。 #include<myhead.h> int main(int argc, const char *argv[]) {int fd[2];char buff[1024]"王吕阳&#xff0c;崔庆权别卷了";char s[1024];if(pipe(fd)-1){perror("pi…

LoadBalancer负载均衡和Nginx负载均衡区别理解

LoadBalancer和Nginx都是用来做负载均衡用的&#xff0c;那二者有什么区别呢&#xff1f; Nginx服务器端的负载均衡&#xff1a; 所有请求都先发到nginx&#xff0c;然后再有nginx转发从而实现负载均衡。LoadBalancer是本地的负载均衡&#xff1a; 它是本地先在调用微服务接口…