深度学习笔记: Sigmoid激活函数
Sigmoid激活函数是人工神经网络中广泛使用的非线性激活函数之一。它有效地将输入值映射到0和1之间的范围,使其特别适用于输出需要被解释为概率的模型。
欢迎Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。
概述:
Sigmoid激活函数是人工神经网络中广泛使用的非线性激活函数之一。它有效地将输入值映射到0和1之间的范围,使其特别适用于输出需要被解释为概率的模型。
数学表达式:
Sigmoid函数的数学定义为:
其中是自然对数的底数,代表函数的输入,通常是神经元输入的加权和。
函数特性:
- 范围:Sigmoid函数的输出界限在0和1之间,包含两端。
- 形状:它有一个S形曲线(sigmoid曲线)。
- 输出解释:接近1的值表示高度激活,而接近0的值表示低激活。这可以直观地理解为神经元被激活的概率。
在神经网络中的应用:
在神经网络的背景下,Sigmoid函数被应用于层内的每个神经元。特别是对于一个全连接层,该函数被应用于每个神经元的输入加权和,产生神经元的激活水平。这个激活的输出然后传递给网络中的下一层。
使用Sigmoid函数允许清晰地解释神经元激活水平:
- 接近1:表示更高的激活。
- 接近0:表示较低的激活。
因此,Sigmoid函数作为一种引入非线性到网络中的机制,使其能够学习复杂的模式并作出超出简单线性边界的决策。
示例:
考虑一个隐藏层中的神经元,它从输入层的两个神经元接收输入值0.5和0.8。如果这些输入的权重分别为0.4和0.6,且神经元的偏置为0.1,则预激活输出将被计算为:
应用Sigmoid函数得到激活输出:
这个激活的输出然后被用作下一层神经元的输入。
可视化:
Sigmoid函数导数的推导
方程 是通过对Sigmoid函数应用链式法则得到的,Sigmoid函数定义为 。以下是如何得到这个导数的逐步分解:
1. 表达Sigmoid函数: sigmoid函数可以为了方便求导而重写为:
2. 应用链式法则:微积分中的链式法则是一个用来计算两个或更多函数组合的导数的公式。在这个案例中,我们有一个外函数(其中)和一个内函数。链式法则指出,如果你有一个函数和,那么:
3. 计算 :
关于的导数是:
4. 计算:
关于的导数是:
5. 使用链式法则组合: 现在,使用链式法则组合这些结果得到:
6. 简化:
7. 用表示:
注意到
因此
将这些代入导数得到:
Sigmoid类实现:
Sigmoid前向传播方程
在前向传播期间,预激活特征被传递到激活函数Sigmoid以计算它们的后激活值。
Sigmoid后向传播方程
后向传播帮助我们了解在给定后激活值$A$对损失的影响下,预激活特征$Z$的变化如何影响损失。
下面是Sigmoid激活函数的Python类实现,包括前向传递(计算激活输出)和后向传递(计算用于反向传播的梯度。
import numpy as np
class Sigmoid:
"""
Sigmoid Activation Function:
- 'forward' function applies the sigmoid activation.
- 'backward' function computes the gradient for backpropagation.
"""
def forward(self, Z):
self.A = 1 / (1 + np.exp(-Z))
return self.A
def backward(self, dLdA):
dAdZ = self.A * (1 - self.A)
dLdZ = dLdA * dAdZ
return dLdZ
主要收获:
Sigmoid函数对于将线性输入转换为可以解释为概率的输出至关重要,从而为神经网络内的激活水平提供了概率基础。
参考资料:
- 在YouTube上观看视频
- CMU_11785_深度学习导论
更多推荐
所有评论(0)