Python中的sigmoid激活函数

如果您正在学习神经网络,您很可能遇到术语“激活函数”在神经网络中,激活函数决定特定神经元是否被激活。激活函数将节点的加权和作为输入,并根据激活函数执行一些数学计算,并输出一个决定神经元是否被激活的值。

它们有很多激活函数,例如

在本教程中,我们将学习sigmoid 激活函数那么让我们开始吧!


什么是 sigmoid 函数——其背后的数学原理

Sigmoid 是一种非线性激活函数。它主要用于需要预测某事概率的模型中。由于概率存在于 0 到 1 的值范围内,因此sigmoid 的范围也是从0 到 1,包括两者。
我们来看看sigmoid函数的方程。

S形方程

Sigmoid 通常使用希腊符号 sigma 表示。所以,我们也可以写

S 形方程 1

在上式中,“ e ”是欧拉数。其值约为2.718相似地,

Sigmoid -x 方程 1

事实上,我们可以推导出上述两个方程之间的关系为

S 型 x 和 -x 关系

我们还可以证明这个关系,如下所示:

左侧:

LHS 方程 1

也可以写成

LHS 方程 2

右侧:

右轴方程 1
右轴方程 2

因此,左轴=右轴

Sigmoid x 和 -x 关系方程 2

至此,我们证明了这个关系。

sigmoid 激活函数的另一个属性是它是可微的让我们看看如何区分它。

sigmoid 方程 1求导我们得到

S 形微分方程 1
S形微分方程2

因此,从Sigmoid 方程 1Sigmoid x 与 -x 关系方程 2Sigmoid 微分方程 2,我们可以写出

Sigmoid及其微分方程1

或者,

Sigmoid及其微分方程2

唷!这里面有很多数学知识!现在,让我们看一下 sigmoid 函数的图形。


使用 Python Matplotlib 绘制 S 形图

#importing the required libraries
from math import exp
from matplotlib import pyplot as plt
 
#defining the sigmoid function
def sigmoid(x):
    return 1/(1+exp(-x))
 
#input
input = []
for x in range(-5, 5):
    input.append(x)
     
#output
output = []
for ip in input:
    output.append(sigmoid(ip))
     
#plotting the graph
plt.plot(input, output)
plt.title("Sigmoid activation function")
plt.grid()
#adding labels to the axes
plt.xlabel("x")
plt.ylabel("sigmoid(x)")
plt.scatter([0], [0.5], color="red", zorder=5)
plt.show()

输出:

S 形图

上图让我们了解了 sigmoid 函数的一些属性。他们是:

  • S形:的图形sigmoid是S形的,就像激活函数的图形一样tanh
  • 定义域:的定义域sigmoid是(-∞,+∞)。
  • 连续:函数sigmoid处处连续。
  • sigmoid函数是单调递增的
  • 乙状结肠(0)= 0.5

sigmoid 和 tanh 之间的关系

我们之前在教程中讨论过tanh 激活函数。

tanh 的方程为:

tanh 方程

和,

Sigmoid(2x) 方程

这两个函数是相关的:

Tanh Sigmoid 关系方程

概括

让我们快速回顾一下:Sigmoid 激活函数是非线性、单调、S 形、可微且连续的。就这样!我们已经了解了 sigmoid 激活函数及其属性。

希望本教程对您有所帮助。请在此处查看更多与 Python 相关的此类教程