Day8 神经网络中的导数基础

Day8 神经网络中的导数基础

导数的定义

导数(Derivative)是微积分中的一个核心概念,用于描述函数在某一点的变化率。简单来说,导数就是函数值随自变量微小变化而产生的变化量,即斜率或变化率。假设有一个函数 f(x)f(x)f(x),其中 xxx 是自变量,y=f(x)y = f(x)y=f(x) 是因变量。函数 f(x)f(x)f(x) 在某一点 x0x_0x0 处的导数表示为 f′(x0)f'(x_0)f(x0),也可以写作 dydx\frac{dy}{dx}dxdydfdx\frac{df}{dx}dxdf。导数的定义是:

f′(x0)=lim⁡h→0f(x0+h)−f(x0)h f'(x_0) = \lim_{{h \to 0}} \frac{f(x_0 + h) - f(x_0)}{h} f(x0)=h0limhf(x0+h)f(x0)

其中,hhh 表示自变量 xxx 的一个微小变化量,也经常用Δx\Delta xΔx标识。

注:希腊字母 ∆ 读作 delta,对应拉丁字母 D。此外,带有 '(prime)符号的函数或变量表示导函数。

在这里插入图片描述


神经网络中用到的导数公式

在神经网络中,导数主要用于计算损失函数对各个参数的梯度,从而进行反向传播和参数更新。以下是一些常用的导数公式:

  • 常数函数的导数c′=0c' = 0c=0ccc 为常数)
  • 幂函数的导数(xa)′=axa−1(x^a)' = ax^{a-1}(xa)=axa1aaa 为常数且 a≠0a \neq 0a=0), a=1时有(x)′=1a=1时有(x)'=1a=1时有(x)=1
  • 指数函数的导数(ex)′=ex(e^x)' = e^x(ex)=ex , (e−x)′=−e−x(e^{-x})' = -e^{-x}(ex)=ex
  • 对数函数的导数(ln⁡x)′=1x(\ln x)' = \frac{1}{x}(lnx)=x1x>0x > 0x>0
  • 三角函数的导数(sin⁡x)′=cos⁡x(\sin x)' = \cos x(sinx)=cosx(cos⁡x)′=−sin⁡x(\cos x)' = -\sin x(cosx)=sinx

这些公式在神经网络中计算各层参数的梯度时非常有用。


导数符号

在神经网络中,我们经常使用以下符号来表示导数:

  • dLdx\frac{dL}{dx}dxdL:表示损失函数 LLL 对变量 xxx 的导数(在单变量情况下)。
    • c′=0c' = 0c=0ccc 为常数),也可以记为dcdx=0\frac{dc}{dx}=0dxdc=0
    • (x)′=1(x)'=1(x)=1 ,也可以记为dxdx=1\frac{dx}{dx}=1dxdx=1
  • ∂L∂w\frac{\partial L}{\partial w}wL:表示损失函数 LLL 对权重 www 的偏导数。(后续Day深入解释)
  • ∇L\nabla LL:表示损失函数 LLL 关于所有参数的梯度向量。(后续Day深入解释)

导数的性质

导数具有一些重要的性质,这些性质在神经网络的梯度计算中非常有用:

  • 线性性质:如果 f′(x)f'(x)f(x)g′(x)g'(x)g(x) 都存在,那么 (af(x)+bg(x))′=af′(x)+bg′(x)(af(x) + bg(x))' = af'(x) + bg'(x)(af(x)+bg(x))=af(x)+bg(x)
  • 链式法则:如果 u=g(x)u = g(x)u=g(x)g′(x)g'(x)g(x) 存在,那么 (f(u))′=f′(u)g′(x)(f(u))' = f'(u)g'(x)(f(u))=f(u)g(x)。这个法则在多层神经网络中计算梯度时至关重要。

证明(e−x)′=−e−x(e^{-x})' = -e^{-x}(ex)=ex

利用后Day的链式法则(复合函数的求导公式),我们可以简单地推导出标题中的公式,如下所示。

y=eu,u=−x,y′=dydx=dydududx=eu⋅(−1)=−e−x y = e^{u}, \quad u = -x, \quad y' = \frac{dy}{dx} = \frac{dy}{du} \frac{du}{dx} = e^{u} \cdot (-1) = -e^{-x} y=eu,u=x,y=dxdy=dudydxdu=eu(1)=ex


分数函数的导数

分数函数(或称为有理函数)在数学中通常指形式为 UV\frac{U}{V}VU 的函数,其中 UUUVVV 都是关于自变量(如 xxx)的函数。分数函数的导数公式为:

(UV)′=U′V−UV′V2 \left(\frac{U}{V}\right)' = \frac{U'V - UV'}{V^2} (VU)=V2UVUV

这个公式在神经网络中处理复杂函数时非常有用。例如,当损失函数中包含分数形式时,我们可以使用这个公式来计算其导数。

Sigmoid 函数的导数

Sigmoid 函数是神经网络中常用的激活函数之一,其定义为:

σ(x)=11+e−x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

Sigmoid 函数的导数有一个非常简洁的形式:

σ′(x)=σ(x)(1−σ(x)) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ(x)=σ(x)(1σ(x))

这个导数公式在神经网络的反向传播过程中非常重要,因为它用于计算激活函数的梯度。

为了从分数函数的导数公式推导出Sigmoid函数的导数公式,可以按照以下步骤进行:

  1. 定义Sigmoid函数: Sigmoid函数定义为: σ(x)=11+e−x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1 这可以看作是一个分数函数,其中 U=1U = 1U=1V=1+e−xV = 1 + e^{-x}V=1+ex

  2. 应用分数函数的导数公式:分数函数的导数公式为: (UV)′=U′V−UV′V2 \left(\frac{U}{V}\right)' = \frac{U'V - UV'}{V^2} (VU)=V2UVUVUUUVVV 的定义代入此公式,得到:

σ′(x)=U′(1+e−x)−1⋅V′(1+e−x)2 \sigma'(x) = \frac{U'(1 + e^{-x}) - 1 \cdot V'}{(1 + e^{-x})^2} σ(x)=(1+ex)2U(1+ex)1V 其中 U′=0U' = 0U=0(因为 U=1U = 1U=1 是常数),而 V′=−e−xV' = -e^{-x}V=ex(因为 V=1+e−xV = 1 + e^{-x}V=1+ex)。

  1. 简化表达式: 代入 U′U'UV′V'V 的值,我们得到: σ′(x)=0⋅(1+e−x)−1⋅(−e−x)(1+e−x)2 \sigma'(x) = \frac{0 \cdot (1 + e^{-x}) - 1 \cdot (-e^{-x})}{(1 + e^{-x})^2} σ(x)=(1+ex)20(1+ex)1(ex) =e−x(1+e−x)2 = \frac{e^{-x}}{(1 + e^{-x})^2} =(1+ex)2ex

  2. 进一步化简: 注意到 σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+ex1,我们可以将上面的表达式重写为:

σ′(x)=e−x(1+e−x)⋅1(1+e−x) \sigma'(x) = \frac{e^{-x}}{(1 + e^{-x})} \cdot \frac{1}{(1 + e^{-x})} σ(x)=(1+ex)ex(1+ex)1 =σ(x)⋅(1−σ(x)) = \sigma(x) \cdot (1 - \sigma(x)) =σ(x)(1σ(x)) 这里我们用到了 σ(x)\sigma(x)σ(x) 的定义,并且利用了 1−σ(x)=e−x1+e−x1 - \sigma(x) = \frac{e^{-x}}{1 + e^{-x}}1σ(x)=1+exex 这一事实。

因此,我们成功地从分数函数的导数公式推导出了Sigmoid函数的导数公式: σ′(x)=σ(x)(1−σ(x)) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ(x)=σ(x)(1σ(x))


最小值的条件

一、基本概念

  1. 函数的最小值

    • 如果对于函数f(x)f(x)f(x)的定义域内的所有xxx,都有f(x)≥f(a)f(x) \geq f(a)f(x)f(a),则称f(a)f(a)f(a)是函数f(x)f(x)f(x)的最小值。
  2. 导数与函数单调性

    • 导数f′(x)f'(x)f(x)反映了函数f(x)f(x)f(x)在某一点的切线斜率,也反映了函数在该点附近的增减性。
    • f′(x)>0f'(x) > 0f(x)>0时,函数在该区间内单调递增;当f′(x)<0f'(x) < 0f(x)<0时,函数在该区间内单调递减。

二、最小值的一阶必要条件

  1. 费马小定理(Fermat’s Theorem)
    • 如果函数f(x)f(x)f(x)在点x=ax = ax=a处取得局部最小值,且f(x)f(x)f(x)aaa点可导,则必有f′(a)=0f'(a) = 0f(a)=0
    • 这意味着,在最小值点处,函数的切线斜率为零,即函数在该点处“平缓”。

三、最小值的二阶充分条件

  1. 二阶导数的作用

    • 为了进一步确定一个临界点(即一阶导数为零的点)是最大值、最小值还是拐点,我们需要考察二阶导数。
  2. 二阶充分条件

    • 假设函数f(x)f(x)f(x)在点x=ax = ax=a处有一阶导数f′(a)=0f'(a) = 0f(a)=0,且二阶导数f′′(a)f''(a)f′′(a)存在。
    • 如果f′′(a)>0f''(a) > 0f′′(a)>0,则函数在x=ax = ax=a处取得局部最小值。
    • 如果f′′(a)<0f''(a) < 0f′′(a)<0,则函数在x=ax = ax=a处取得局部最大值。
    • 如果f′′(a)=0f''(a) = 0f′′(a)=0,则无法直接通过二阶导数判断该点的性质,可能需要进一步的分析(如考察更高阶的导数或利用其他方法)。

四、全局最小值与局部最小值

  1. 局部最小值

    • 只在函数定义域的某个小区间内是最小的值。
  2. 全局最小值

    • 在函数整个定义域内都是最小的值。
    • 要找到全局最小值,通常需要考察函数的所有局部最小值,并比较它们的大小。

五、实例分析

考虑函数f(x)=x2+4x+4f(x) = x^2 + 4x + 4f(x)=x2+4x+4

  1. 求一阶导数

    • f′(x)=2x+4f'(x) = 2x + 4f(x)=2x+4
  2. 找临界点

    • f′(x)=0f'(x) = 0f(x)=0,解得x=−2x = -2x=2
  3. 判断最小值

    • 计算二阶导数:f′′(x)=2f''(x) = 2f′′(x)=2
    • 因为f′′(−2)=2>0f''(-2) = 2 > 0f′′(2)=2>0,所以函数在x=−2x = -2x=2处取得局部最小值。
    • 由于该函数是一个开口向上的抛物线,且在整个实数域内只有一个临界点,因此这个局部最小值也是全局最小值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值