赞
踩
欢迎Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。
Sigmoid激活函数是人工神经网络中广泛使用的非线性激活函数之一。它有效地将输入值映射到0和1之间的范围,使其特别适用于输出需要被解释为概率的模型。
Sigmoid函数的数学定义为:
其中是自然对数的底数,
代表函数的输入,通常是神经元输入的加权和。
在神经网络的背景下,Sigmoid函数被应用于层内的每个神经元。特别是对于一个全连接层,该函数被应用于每个神经元的输入加权和,产生神经元的激活水平。这个激活的输出然后传递给网络中的下一层。
使用Sigmoid函数允许清晰地解释神经元激活水平:
因此,Sigmoid函数作为一种引入非线性到网络中的机制,使其能够学习复杂的模式并作出超出简单线性边界的决策。
考虑一个隐藏层中的神经元,它从输入层的两个神经元接收输入值0.5和0.8。如果这些输入的权重分别为0.4和0.6,且神经元的偏置为0.1,则预激活输出将被计算为:
应用Sigmoid函数得到激活输出:
这个激活的输出然后被用作下一层神经元的输入。
方程 是通过对Sigmoid函数应用链式法则得到的,Sigmoid函数定义为
。以下是如何得到这个导数的逐步分解:
1. 表达Sigmoid函数: sigmoid函数可以为了方便求导而重写为:
2. 应用链式法则:微积分中的链式法则是一个用来计算两个或更多函数组合的导数的公式。在这个案例中,我们有一个外函数(其中
)和一个内函数
。链式法则指出,如果你有一个函数
和
,那么:
3. 计算 :
关于的导数是:
4. 计算:
关于的导数是:
5. 使用链式法则组合: 现在,使用链式法则组合这些结果得到:
6. 简化:
7. 用表示:
注意到
因此
将这些代入导数得到:
在前向传播期间,预激活特征被传递到激活函数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函数对于将线性输入转换为可以解释为概率的输出至关重要,从而为神经网络内的激活水平提供了概率基础。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。