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这是函数在约束条件下的最小值。

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

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

相关文章

sg-exam:Star 2.2k,一套完善的在线教育平台,支持在线考试、在线学习,教育项目用它就没有错~~

​嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 sg-exam是一个基于Java语言的在线考试系统,它集成了试卷管理、试题管理、考试安排、在线作答、自动阅卷等功能。该项目旨在帮助教育机构…

ArkTS中string和String/number和Number类型大小写的区别

ArkTS和TypeScript类似,string 和 String,number 和 Number 之间有一些重要的区别: 基本类型与对象类型 基本类型 (string, number): string 和 number 是基本数据类型,用于表示原始值。例如:let str: str…

Ubuntu22.04切换gcc版本教程

在编译安装程序的时候,由于gcc版本过高,导致编译无法通过,需要降低gcc版本。 一、安装gcc版本 根据自己的需求安装gcc版本。 sudo apt update sudo apt install gcc-10 g++-10二、切换gcc版本 sudo update-alternatives --install /usr/bin/gcc gcc

c++领域展开第四幕——类和对象(上篇收尾 this指针、c++和c语言的初步对比)超详细!!!!

文章目录 前言一、this指针二、c和c语言的初步对比总结 前言 上篇我们初步学习了类的基本概念以及实例化 今天我们来学习类的构造以及析构还有类的默认成员函数,类和对象这一部分都会有点难 跟着我一起来吧 一、this指针 Date类中有 Init 与 Print 两个成员函数&…

python | linux | ModuleNotFoundError: No module named ‘WFlib‘ |找不到模块

问题&#xff1a; (base) beautyby521-7:~/Website-Fingerprinting-Library-master$ bash scripts/NetCLR.sh Traceback (most recent call last):File "/home/beauty/Website-Fingerprinting-Library-master/exp/pretrain.py", line 8, in <module>from WFli…

联发科MTK8788_MT8788安卓核心板安兔兔跑分_安卓主板方案商

MT8788安卓核心板具有集成的蓝牙、fm、WLAN和gps模块&#xff0c;是一个高度集成的基带平台&#xff0c;包括调制解调器和应用处理子系统&#xff0c;启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最高可达2.0GHz的ARM Cortex-A53和功能强大…

云计算HCIP-OpenStack02

书接上回&#xff1a; 云计算HCIP-OpenStack01-CSDN博客 7.OpenStack核心服务 7.1Horizon&#xff1a;界面管理服务 Horizon提供了OpenStack中基于web界面的管理控制页面&#xff0c;用户或者是管理员都需要通过该服务进行OpenStack的访问和控制 界面管理服务需要依赖于keyston…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器&#xff08;analyzer&#xff09;的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…

AI一键分析小红书对标账号‼️

宝子们&#xff0c;AI小助手近期发现了一款宝藏AI工具&#xff0c;拥有对标账号AI分析功能&#xff0c;只需10秒就能全面掌握对标账号的运营情况&#xff0c;并且可以根据分析结果提供创作方向和灵感&#xff0c;轻松助力1:1复刻起号&#xff01; 功能亮点&#xff1a; &…

【5G】5G的主要架构选项

最初&#xff0c;在3GPP讨论中考虑了所有可能的聚合和核心网络组合&#xff0c;共有八个架构选项。以下重点介绍option2、3、4和7。 1. 独立组网 (Standalone, SA) 架构选项 2 &#xff1a;Standalone architecture with 5G-core 特点&#xff1a; 5G核心网&#xff08;5GC, …

数据分析实战—鸢尾花数据分类

1.实战内容 (1) 加载鸢尾花数据集(iris.txt)并存到iris_df中,使用seaborn.lmplot寻找class&#xff08;种类&#xff09;项中的异常值&#xff0c;其他异常值也同时处理 。 import pandas as pd from sklearn.datasets import load_iris pd.set_option(display.max_columns, N…

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现 在之前的教程中完成了分类页面的左右两侧的列表结构&#xff0c;如下图所示。 接下来需要实现左侧分类导航项的点击操作&#xff0c;可以友好的提示用户选择了哪一个文字分类导航项。 一、左侧文字分类导航的处理 …

VSCode:Remote-SSH插件安装使用 -- 在VSCode中使用SSH

VSCode&#xff1a;Remote-SSH插件安装使用 1.安装Remote-SSH2.使用Remote-SSH 本文&#xff0c;将在Visual Studio Code中&#xff0c;安装Remote-SSH插件&#xff0c;实现SSH连接远程服务器。 1.安装Remote-SSH 打开VSCode&#xff0c;侧边栏中找到扩展模块(或CtrlShiftX快捷…

【机器人】Graspness 端到端 抓取点估计 | 论文解读

在复杂场景中实现抓取检测&#xff0c;Graspness是一种端到端的方法&#xff1b; 输入点云数据&#xff0c;输出抓取角度、抓取深度、夹具宽度等信息。 开源地址&#xff1a;GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness. 论文地…

OpenWebUI,RAG+外部知识库+AI写文的开源应用

引言 自从去年AI火起来之后&#xff0c;很多人便热衷于寻找适合自用的AI开源项目&#xff0c;把各家大模型API接入到自己的AI程序里&#xff0c;便可以通过AI辅助完成一系列日常任务&#xff0c;比如内容翻译/润色/总结/撰写、格式转换、数据分类、代码分析、角色扮演等等。 …

力扣-图论-15【算法学习day.65】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

单元测试知识总结

我们希望每段代码都是自测试的&#xff0c;每次改动之后&#xff0c;都能自动发现对现有功能的影响。 1 测试要求 在对软件单元进行动态测试之前&#xff0c;应对软件单元的源代码进行静态测试&#xff1b; 应建立测试软件单元的环境&#xff0c;如数据准备、桩模块、模拟器…

基于AI对话生成剧情AVG游戏

游戏开发这个领域&#xff0c;一直有较高的学习门槛。作为一个非专业的游戏爱好者&#xff0c;如果想要开发游戏&#xff0c;往往受制于游戏引擎的专业程度&#xff0c;难以完成复杂的游戏项目。 AI IDE的诞生&#xff0c;提供了另外的一种思路&#xff0c;即通过AI 生成项目及…

kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装

系列文章目录 1.kubeadm安装K8s高可用集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s高可用集群之集群初始化及master/node节点加入集群calico网络插件安装 kubeadm安装K8s高可用集群之集群初始化及master/node节点加入ca…

java后端环境配置

因为现在升学了&#xff0c;以前本来想毕业干java的&#xff0c;很多java的环境配置早就忘掉了&#xff08;比如mysql maven jdk idea&#xff09;&#xff0c;想写个博客记录下来&#xff0c;以后方便自己快速搭建环境 JAVA后端开发配置 环境配置jdkideamavenMySQLnavicate17…