深度学习基础6(微分,偏导,梯度,链式法则)

article/2025/9/20 3:19:37

微积分

如下图所示,内接多边形的等长边越多,就越接近圆。 这个过程也被称为逼近法(method of exhaustion)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMshcFTY-1648199976900)(C:\Users\Lenovo\Documents\Tencent Files\850604703\FileRecv\MobileFile\Image%HTGE}R0]R(J[NDZ3KM(A.png)]

事实上,逼近法就是**积分(integral calculus)**的起源

微积分的另一支,**微分(differential calculus)**被发明出来。

在微分学最重要的应用是优化问题,即考虑如何把事情做到最好,这种问题在深度学习中是无处不在的。

在深度学习中,我们“训练”模型,不断更新它们,使它们在看到越来越多的数据时变得越来越好。

通常情况下,变得更好意味着最小化一个损失函数(loss function)

真正关心的是生成一个模型,它能够在从未见过的数据上表现良好。

但“训练”模型只能将模型与我们实际能看到的数据相拟合, 因此,我们可以将拟合模型的任务分解为两个关键问题

  • 优化(optimization):用模型拟合观测数据的过程;
  • 泛化(generalization):生成出有效性超出用于训练的数据集本身的模型。

导数和微分

这是几乎所有深度学习优化算法的关键步骤。

在深度学习中,通常选择对于模型参数可微的损失函数

简而言之,对于每个参数, 如果把这个参数增加或减少一个无穷小的量,我们可以知道损失会以多快的速度增加或减少,

假设我们有一个函数𝑓:Rn→R,其输入和输出都是标量。 (如果𝑓的导数存在,这个极限被定义为)

UN8TED5I`3X8)FAMJOIO

如果𝑓′(𝑎)存在,则称𝑓在𝑎处是可微(differentiable)的。

如果𝑓在一个区间内的每个数上都是可微的,则此函数在此区间中是可微的。

可以将图中的导数𝑓′(𝑥)解释为𝑓(𝑥)相对于𝑥的瞬时(instantaneous)变化率。 所谓的瞬时变化率是基于𝑥中的变化ℎ,且ℎ接近0。

为了更好地解释导数,举个例子

定义𝑢=𝑓(𝑥)=3𝑥2−4𝑥如下:

%matplotlib inline
import numpy as np
import d2l
from IPython import display
from d2l import torch as d2ldef f(x):return 3 * x ** 2 - 4 * x

通过令𝑥=1并让ℎ接近0

**![U@%SLGY2Q9C~7K}W`ZL478.png) 的数值结果接近2**)。 稍后会看到,当𝑥=1时,导数𝑢′是2。

def numerical_lim(f, x, h):return (f(x + h) - f(x)) / hh = 0.1
for i in range(5):print(f'h={h:.5f}, numerical limit={numerical_lim(f, 1, h):.5f}')h *= 0.1

h=0.10000, numerical limit=2.30000

h=0.01000, numerical limit=2.03000

h=0.00100, numerical limit=2.00300

h=0.00010, numerical limit=2.00030

h=0.00001, numerical limit=2.00003

为了对导数的这种解释进行可视化,我们使用matplotlib(这是一个Python中的绘图库)

要配置matplotlib生成图形的属性,需要定义几个函数

在下面输出svg图表以获得清晰的图像。

注释#@save是一个特殊的标记,会将对应的函数、类或语句保存在d2l包中。 因此,以后无须重新定义就可以直接调用它们(例如,d2l.use_svg_display()

def use_svg_display():  #@save"""使用svg格式在Jupyter中显示绘图"""display.set_matplotlib_formats('svg')

我们定义set_figsize函数来设置图表大小。

注意,这里直接使用d2l.plt,因为导入语句 from matplotlib import pyplot as plt已标记为保存到d2l包中。

def set_figsize(figsize=(3.5, 2.5)):  #@save"""设置matplotlib的图表大小"""use_svg_display()d2l.plt.rcParams['figure.figsize'] = figsize

下面的set_axes函数用于设置由matplotlib生成图表的轴的属性。

#@save
def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):"""设置matplotlib的轴"""axes.set_xlabel(xlabel)axes.set_ylabel(ylabel)axes.set_xscale(xscale)axes.set_yscale(yscale)axes.set_xlim(xlim)axes.set_ylim(ylim)if legend:axes.legend(legend)axes.grid()

通过这三个用于图形配置的函数,定义了plot函数来简洁地绘制多条曲线,方便以后使用

#@save
def plot(X, Y=None, xlabel=None, ylabel=None, legend=None, xlim=None,ylim=None, xscale='linear', yscale='linear',fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):"""绘制数据点"""if legend is None:legend = []set_figsize(figsize)axes = axes if axes else d2l.plt.gca()# 如果X有一个轴,输出Truedef has_one_axis(X):return (hasattr(X, "ndim") and X.ndim == 1 or isinstance(X, list)and not hasattr(X[0], "__len__"))if has_one_axis(X):X = [X]if Y is None:X, Y = [[]] * len(X), Xelif has_one_axis(Y):Y = [Y]if len(X) != len(Y):X = X * len(Y)axes.cla()for x, y, fmt in zip(X, Y, fmts):if len(x):axes.plot(x, y, fmt)else:axes.plot(y, fmt)set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)

现在可以绘制函数𝑢=𝑓(𝑥)及其在𝑥=1处的切线𝑦=2𝑥−3, 其中系数2是切线的斜率。

x = np.arange(0, 3, 0.1)
plot(x, [f(x), 2 * x - 3], 'x', 'f(x)', legend=['f(x)', 'Tangent line (x=1)'])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dg1Tnhfi-1648199976902)(C:\Users\Lenovo\Documents\Tencent Files\850604703\FileRecv\MobileFile\Image\WT_1DYWC]O_JFXOALE54JJL.png)]

偏导数

目前只讨论了仅含一个变量的函数的微分。

在深度学习中,函数通常依赖于许多变量。 因此,需要将微分的思想推广到多元函数(multivariate function)上。

设𝑦=𝑓(𝑥1,𝑥2,…,𝑥𝑛)是一个具有𝑛个变量的函数。 𝑦关于第𝑖个参数𝑥𝑖的偏导数(partial derivative)为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ib83T7Si-1648199976903)(C:\Users\Lenovo\Documents\Tencent Files\850604703\FileRecv\MobileFile\Image%D_6SNFSL)][H4P7WCRS4O%F.png)

梯度

  • 梯度指向的是值变化最大的方向

可以连结一个多元函数对其所有变量的偏导数,以得到该函数的梯度(gradient)向量

具体而言,设函数𝑓:Rn→R的输入是 一个𝑛维向量𝐱=[𝑥1,𝑥2,…,𝑥𝑛]⊤,并且输出是一个标量。

函数𝑓(𝐱)相对于𝐱的梯度是一个包含𝑛个偏导数的向量:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDdw1mOV-1648199976903)(C:\Users\Lenovo\Documents\Tencent Files\850604703\FileRecv\MobileFile\Image\BC%Y@91IA{1Q6GMA0E6MSXV.png)]

其中∇𝐱𝑓(𝐱)通常在没有歧义时被∇𝑓(𝐱)取代。

假设𝐱为𝑛维向量,在微分多元函数时经常使用以下规则:

  • 对于所有𝐀∈Rm×n,都有∇𝐱𝐀𝐱=𝐀⊤
  • 对于所有𝐀∈Rn×m,都有∇𝐱𝐱⊤𝐀=𝐀
  • 对于所有𝐀∈Rn×n,都有∇𝐱𝐱⊤𝐀𝐱=(𝐀+𝐀⊤)𝐱
  • ∇𝐱‖𝐱‖2=∇𝐱𝐱⊤𝐱=2𝐱

同样,对于任何矩阵𝐗,都有∇𝐗‖𝐗‖2𝐹=2𝐗

进一步了解梯度
梯度下降法详情

链式法则

然而,上面方法可能很难找到梯度。 这是因为在深度学习中,多元函数通常是**复合(composite)**的, 所以我们可能没法应用上述任何规则来微分这些函数。

但是链式法能够微分复合函数。

先考虑单变量函数。假设函数𝑦=𝑓(𝑢)和𝑢=𝑔(𝑥)都是可微的,根据链式法则:

JFJVOVHP%%IKWX~{EPJG`MA

函数具有任意数量的变量的情况时。 假设可微分函数𝑦有变量𝑢1,𝑢2,…,𝑢𝑚

其中每个可微分函数𝑢𝑖都有变量𝑥1,𝑥2,…,𝑥𝑛注意,𝑦是𝑥1,𝑥2,…,𝑥𝑛的函数。 对于任意𝑖=1,2,…,𝑛链式法则给出:

24F9Y9AMEP1L`7PRGB7QA5

总结

  • 微分和积分是微积分的两个分支,前者可以应用于深度学习中的优化问题。
  • 导数可以被解释为函数相对于其变量的瞬时变化率
  • 梯度是一个向量,其分量是多变量函数相对于其所有变量的偏导数。
  • 链式法则使我们能够微分复合函数。

http://chatgpt.dhexx.cn/article/yaVuEDut.shtml

相关文章

浅谈神经网络之链式法则与反向传播算法

反向传播是训练神经网络最重要的算法,可以这么说,没有反向传播算法就没有深度学习的今天。但是反向传播算法涉及一大堆数据公式概念。所以我们了解导数计算过程以及要介绍的新的复合函数多层求导计算过程。 链式法则 简单的说链式法则就是原本y对x求偏…

链式法则-梯度更新公式推导(手写笔记)

虽然以前学过导数、偏导、梯度之类的相关知识,但时间久远导致总感觉晕晕乎乎的,于是自己推导一下具有一个隐藏层的神经网络的梯度反向传播公式,希望对大家有帮助。 笔记中指出了为什么会存在梯度消失以及梯度爆炸现象。 梯度消失 主要是由…

微积分拾遗——链式法则

链式法则(chain rule)微积分中求导法则,用于求复合函数的导数; 链式法则应用广泛,比如神经网络中的反向传播算法就是已链式法则为基础演变的;接下来先说说链式法则的概念然后通过链式法则的两种形式学习链式…

概率论 中的 链式法则

2个事件同时发生的概率: P(a, b) P(a | b) * P(b) 其中:P(a, b)表示 a和b事件同时发生的概率, P(a | b)是一个条件概率,表示在b事件发生的条件下,a发生的概率 3个事件的概率链式调用: P(a, b, c) P(a …

链式法则---微积分链式法则和概率链式法则

本篇介绍了微积分链式法则和概率链式法则。 一、概率链式法则 这里首先给出概率链式法则的公式:N个事件的概率链式法则如下, P(X1, X2, ... Xn) P(X1 | X2, X3 ... Xn) * P(X2 | X3, X4 ... Xn) ... P(Xn-1 | Xn) * P(Xn)。 概率链式法则的作用特别…

链式法则(chain rule)

链式法则 链式法则:两个函数组合起来的复合函数,导数等于里面函数代入外函数值的导乘以里面函数之导数; Quotient Rule Chain rule 代码实现

华硕路由器无线打印服务器怎么开启,华硕ASUS路由器无线中继模式设置教程

宽带路由器在一个紧凑的箱子中集成了路由器、防火墙、带宽控制和管理等功能,具备快速转发能力,灵活的网络管理和丰富的网络状态等特点。最近有用户想知道华硕(ASUS)路由器无线中继模式怎么设置,小编整理了详细教程,跟着步骤大家一定都能成功 具体介绍 一、确定主路由器参数…

华硕路由器配置虚拟服务器,华硕ASUS路由器无线中继模式设置步骤图解

原标题:"华硕ASUS路由器无线中继模式设置教程"相关路由器设置经验分享。 - 来源:191路由网 宽带路由器在一个紧凑的箱子中集成了路由器、防火墙、带宽控制和管理等功能,具备快速转发能力,灵活的网络管理和丰富的网络状态等特点。最近有用户想知道华硕(ASUS)路由器…

tplink迷你路由器中继模式_TP-Link无线路由器中继模式设置教程

在生活中,小伙伴们多多少少都会遇到在上洗手间、阳台上、或者信号比较差的地方,用手机上网,发现网络很差,通讯信号弱,WIFI信号强度几近于无,上网等加载条等半天,那种心如刀割的心情,确实让人恼火!今天呢,A君在这给大家科普一下中继模式(Repeater),教大家怎么让WIFI信…

华硕路由搭建php网站,华硕路由器操作模式

*无线路由器 在无线路由器模式中,RT-AC88U 透过 PPPoE、DHCP、PPTP、L2TP 或静态 IP 连接至网络,并且将无线网络分享至 LAN 客户端或设备。 在此模式中,NAT、防火墙与 DHCP 服务器默认为开启。支持 UPnP 与动态 DNS 适用于 SOHO 与家庭使用者…

android 路由模式设置,安卓手机设置路由器的方法教程步骤图

现在很多人使用的智能手机都是安卓系统的,很多时候我们在使用安卓手机连接路由器之后直接就可以对路由器进行设置,不需要通过电脑了,下面是学习啦小编整理的安卓手机设置路由器的方法,供您参考。 安卓手机设置路由器的方法 首先&a…

路由器的桥接方式

如果你家恰好比较大,又恰好有多台路由器,那么该如何将它们桥接起来,实现全屋的WIFI全覆盖呢?下面我们以两台路由器为例,简单介绍一下常用的几种桥接方式。 一、无线桥接 所谓无线桥接,即是把两台不同物理位…

asus路由器无线桥接模式设置

在客厅加了一个华硕路由器增强一下无线信号,记录一下。 固件版本:3.0.0.4.380 型号:RT-AC1200G 参考网址:https://www.asus.com.cn/support/FAQ/1036082 按照教程设置完成后发现依旧不能上网,又重新设置了一遍&…

路由模式和桥接模式的区别

目录 路由器和交换机的区别一、指代不同二、功能不同三、特点不同四、总结 路由模式桥接模式运营商为啥现在都是路由模式光猫去拨号?一、作用二、原因 最佳组网方案---改光猫为桥接方法一、二层模式二、优点三、缺点 VLAN模式一、transparent二、tag/untag 路由器和…

路由器的模式之间有什么区别

现在的路由器根据网络用户群的不同需求,提供了很多种连接模式,只有选对了合适的模式,才能充分发挥路由器的功能。但与此同时,这种多模式的选择,往往也让新手用户无所适从,在众多专业名词中,不知…

华硕(ASUS)路由器AP模式设置教程

华硕(ASUS)路由器AP模式设置教程 总结就是 1.AP路由设置LANIP跟一级路由同一个网段,例如,一级的是192.168.1.1,AP:192.168.1.X。 2.把一级路由的网关和DNS填上AP那里 问:华硕路由器AP模式怎么设置? 原来网…

小米路由器设置无线中继模式

小米路由器 设置无线中继模式 一、什么是无线中继?二、路由器无线中继模式配置步骤1.准备工作2.操作步骤3.无线中继模式重回路由模式 三、无线中继缺点 一、什么是无线中继? 无线中继模式,即是无线AP在网络连接中起到中继的作用&#xff0c…

路由器的设置(路由模式)

1、准备 路由器,网络 2、查看路由器说明 路由器上的铭牌一般会包含路由器的访问地址,默认用户名和密码。 如果是一台全新的路由器,通电后,通过笔记本或者手机找到默认分享的未加密wifi,通过浏览器输入访问地址就可…

无线路由器的五种工作模式

无线路由器的五种工作模式 Router,即无线路由模式,这也是我们最常用的一种工作方式,一般家里宽带连接,将宽带猫连接在无线路由的WAN口上,然后做拨号帐号设置,就用这个模式即可。 AP,即无线交换机…

路由器的几种工作模式

路由器现在已经很普及,我们的手机电脑每天都在通过路由器上网,我们可以稍微了解了解路由器!比如路由器的几种工作模式:AP模式(接入点模式)、Router模式(路由模式)、Repeater模式&…