Sigmoid 函数及其导数推导
1. 了解 Sigmoid 函数
Sigmoid 函数是神经网络中常用的激活函数,因其平滑的S形曲线和将输入压缩至 (0, 1) 的特性,在神经网络的激活函数中扮演着重要角色。其定义如下:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
其中, e e e 是自然常数,约等于 2.718。Sigmoid 函数的输出范围为 (0, 1),这使它特别适合作为二分类问题中输出层的激活函数。
Sigmoid 函数的图形如下所示:
2. 应用微分规则
为了推导 Sigmoid 函数的导数,我们需要对它进行微分。根据 Sigmoid 函数的定义:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
接下来,我们将对这个函数进行微分,以计算其导数。
3. 引入中间变量 u u u
为了简化求导过程,我们可以先引入一个中间变量 u u u,定义如下:
u = 1 + e − x u = 1 + e^{-x} u=1+e−x
这样,Sigmoid 函数可以重新表示为:
σ ( x ) = 1 u \sigma(x) = \frac{1}{u} σ(x)=u1
4. 对 Sigmoid 函数求导
现在,我们通过链式法则求解 Sigmoid 函数的导数。链式法则告诉我们,如果一个函数是复合函数的形式,那么其导数可以通过对各个部分分别求导并相乘来得到。
4.1 对 u = 1 + e − x u = 1 + e^{-x} u=1+e−x 求导
首先对 u u u 进行求导:
d u d x = d d x ( 1 + e − x ) = 0 − e − x ⋅ ( − 1 ) = e − x \frac{du}{dx} = \frac{d}{dx}(1 + e^{-x}) = 0 - e^{-x} \cdot (-1) = e^{-x} dxdu=dxd(1+e−x)=0−e−x⋅(−1)=e−x
4.2 对 σ ( x ) = 1 u \sigma(x) = \frac{1}{u} σ(x)=u1 求导
接下来对 σ ( x ) \sigma(x) σ(x) 进行求导:
d σ ( x ) d u = d d u ( 1 u ) = − 1 u 2 \frac{d\sigma(x)}{du} = \frac{d}{du}\left(\frac{1}{u}\right) = -\frac{1}{u^2} dudσ(x)=dud(u1)=−u21
4.3 应用链式法则
根据链式法则,Sigmoid 函数的导数可以表示为:
d σ ( x ) d x = d σ ( x ) d u ⋅ d u d x = − 1 u 2 ⋅ e − x \frac{d\sigma(x)}{dx} = \frac{d\sigma(x)}{du} \cdot \frac{du}{dx} = -\frac{1}{u^2} \cdot e^{-x} dxdσ(x)=dudσ(x)⋅dxdu=−u21⋅e−x
将 u = 1 + e − x u = 1 + e^{-x} u=1+e−x 代入,得到:
d σ ( x ) d x = − e − x ( 1 + e − x ) 2 \frac{d\sigma(x)}{dx} = -\frac{e^{-x}}{(1 + e^{-x})^2} dxdσ(x)=−(1+e−x)2e−x
5. 简化表达式
为了进一步简化这个表达式,我们注意到 Sigmoid 函数的定义和性质:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
以及:
1 − σ ( x ) = e − x 1 + e − x 1 - \sigma(x) = \frac{e^{-x}}{1 + e^{-x}} 1−σ(x)=1+e−xe−x
因此,导数可以重写为:
d σ ( x ) d x = σ ( x ) ⋅ ( 1 − σ ( x ) ) \frac{d\sigma(x)}{dx} = \sigma(x) \cdot (1 - \sigma(x)) dxdσ(x)=σ(x)⋅(1−σ(x))
6. 最终结果
最终我们得到了 Sigmoid 函数的导数公式:
d σ ( x ) d x = σ ( x ) ⋅ ( 1 − σ ( x ) ) \frac{d\sigma(x)}{dx} = \sigma(x) \cdot (1 - \sigma(x)) dxdσ(x)=σ(x)⋅(1−σ(x))
这个公式表明,Sigmoid 函数的导数不仅依赖于输入 x x x ,更依赖于 Sigmoid 函数本身的输出值 σ ( x ) \sigma(x) σ(x)。这个性质在反向传播算法中尤为重要,因为它允许我们在计算误差梯度时,可以直接利用前向传播的结果,从而简化计算并提高效率。
应用和意义
在神经网络中,Sigmoid 函数的导数用于反向传播算法中计算误差的梯度。这种函数的形式使得在更新权重时,不仅能够考虑当前的输入值,还可以利用 Sigmoid 函数的输出,从而在训练过程中更加高效。
此外,由于导数的形式与输出值直接相关,因此可以避免重复计算,在反向传播时极大地节省了计算资源。