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} ∂x∂z=Δx→0limΔ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} ∂y∂z=Δy→0limΔ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
∂x∂f=2x+y
∂
f
∂
y
=
x
+
2
y
\frac{\partial f}{\partial y} = x + 2y
∂y∂f=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
∂x1∂f(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
∂x2∂f(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
∂xn∂f(x1∗,x2∗,…,xn∗)=0
这些条件表明,在函数的最小值点处,函数沿任何方向的变化率都是零。换句话说,从该点出发,无论我们朝哪个方向移动,函数值都不会下降。
必要条件与充分条件
需要注意的是,上述条件只是取得最小值的必要条件,而不是充分条件。也就是说,满足这些条件的点可能是最小值点,但也可能是最大值点或鞍点。为了确定一个点是否是最小值点,我们需要进一步分析函数的二阶导数或Hessian矩阵。
- 二阶导数测试:对于二维函数,我们可以通过计算二阶偏导数并检查它们的符号来判断一个临界点(即所有一阶偏导数为零的点)是局部最大值、局部最小值还是鞍点。对于更高维度的函数,我们需要计算Hessian矩阵并分析其特征值。
- Hessian矩阵:Hessian矩阵是一个由函数二阶偏导数组成的方阵。如果Hessian矩阵在临界点处是正定的(即所有特征值都大于零),则该点是局部最小值点;如果是负定的(即所有特征值都小于零),则该点是局部最大值点;如果是不定的(即既有正特征值又有负特征值),则该点是鞍点。
鞍点是一个数学概念,它指的是在函数图像上,一个点在某一方向上是局部最大值,而在另一方向上却是局部最小值,形状类似马鞍,因此得名。在数学中,如果一个函数在某点的梯度为零,且在该点附近函数的Hessian矩阵(描述函数局部曲率的矩阵)具有正的和负的特征值,则该点就是鞍点。
在神经网络中,鞍点的作用和存在是一个重要的挑战。神经网络训练的目标通常是找到损失函数的全局最小值,但鞍点却可能阻碍这一目标的实现。由于鞍点处的梯度为零,优化算法(如梯度下降法)在到达鞍点时可能会停滞不前,导致训练过程缓慢或无法收敛到全局最优解。此外,高维参数空间中的鞍点比局部最小值更为常见,这进一步增加了神经网络训练的难度。
因此,研究如何有效地识别和逃离鞍点,对于提高神经网络训练效率和性能具有重要意义。一些优化算法和技巧,如动量法、Adam优化器等,已经被提出用于应对鞍点问题,并帮助神经网络在训练过程中更好地找到全局最优解。
找了最具代表性的"鞍点"发源图,大家可以直观的体验一下“鞍点(Saddle Point)”
上图这个图像是 z = x 2 − y 2 z = x^2 − y^2 z=x2−y2,图中的小红点就是一个鞍点 (A saddle point (in red) on the graph of z = x 2 − y 2 z = x^2 − y^2 z=x2−y2)
给大家看一下真实的马鞍对比:
实际应用中的挑战
在实际应用中,找到多变量函数的最小值点可能面临一些挑战:
- 局部最小值:对于非凸函数,可能存在多个局部最小值点。梯度下降法可能会陷入其中某个局部最小值点而无法找到全局最小值点。
- 鞍点:在高维空间中,鞍点比局部最小值点更常见。梯度下降法在鞍点附近可能会变得非常缓慢甚至停滞不前。
- 计算复杂性:对于大规模神经网络和复杂损失函数,计算梯度和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 ∂x∂f=2x=0和 ∂ f ∂ y = 2 y = 0 \frac{\partial f}{\partial y} = 2y = 0 ∂y∂f=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+y−1=0 下。
-
构造拉格朗日函数:
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 λ就是拉格朗日数 -
求偏导数并设为零:
∂ L ∂ x = ∂ f ∂ x + λ ∂ g ∂ x = 0 \frac{\partial L}{\partial x} = \frac{\partial f}{\partial x} + \lambda \frac{\partial g}{\partial x} = 0 ∂x∂L=∂x∂f+λ∂x∂g=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 ∂y∂L=∂y∂f+λ∂y∂g=0
∂ L ∂ λ = g ( x , y ) = 0 \frac{\partial L}{\partial \lambda} = g(x, y) = 0 ∂λ∂L=g(x,y)=0
-
解方程组:
从第一个和第二个偏导数方程中,我们有:
-
−
2
x
=
−
2
y
⇒
x
=
y
-2x = -2y \quad \Rightarrow \quad x = y
−2x=−2y⇒x=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+x−1=0⇒2x=1⇒x=21- 因此, y = 1 2 y = \frac{1}{2} y=21 也成立。
-
−
2
x
=
−
2
y
⇒
x
=
y
-2x = -2y \quad \Rightarrow \quad x = y
−2x=−2y⇒x=y
- 所以,最优解是 x = 1 2 x = \frac{1}{2} x=21, y = 1 2 y = \frac{1}{2} y=21。
- 验证结果:
-
检查是否满足约束条件:
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+21−1=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+21−1=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这是函数在约束条件下的最小值。