人工智能深度学习--Sigmoid激活函数

791 阅读7分钟

前言

在前文《人工智能深度学习激活函数综述》中,笔者为大家大致罗列并梳理了常见的几种激活函数,那么今天就让我们来详细了解学习一下在深度学习和机器学习领域使用最多的一个激活函数--Sigmoid激活函数 。

一、定义与简介

1.定义

SigmoidSigmoid 激活函数是一种常见的非线性激活函数,并被广泛应用于机器学习和深度学习中,特别是在二分类问题中。它将输入值压缩到 0 和 1 之间,因此可以被解释为概率值,非常适合用于输出层,表示某个类别的置信度。激活函数在神经网络中也扮演着至关重要的角色,它们是一类函数,用于决定神经网络中每一层的输出是否对下一层有贡献。甚至,激活函数的选择可以显著影响模型的性能。

2.数学公式

Sigmoid 函数的数学表达式为:

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}

其中的 ee 是自然对数的底数(约等于 2.71828),xx 是输入值。

3.函数特性( 可参照下文函数图像便于理解 )

  1. 输出范围:Sigmoid 函数的输出值始终在 0 到 1 之间。

  2. 单调性:Sigmoid 函数是单调递增的,即随着输入值 xx 的增加,输出值 σ(x)\sigma(x) 也增加。

  3. 平滑性:Sigmoid 函数是光滑的,有利于梯度下降算法的优化。

  4. 渐近特性:当 xx 趋向于正无穷时,σ(x)\sigma(x) 趋向于 1;当 xx 趋向于负无穷时,σ(x)\sigma(x) 趋向于 0。

4.函数图像

SigmoidSigmoid 激活函数函数图像:

image.png

SigmoidSigmoid 激活函数函数体与斜率图像:

image.png

二、计算过程

SigmoidSigmoid 激活函数的计算过程涉及一个简单的数学公式,该公式将任何实数映射到 (0, 1) 区间内,使其非常适合用来表示概率或者作为二分类问题的输出。以下是他的详细的计算步骤 :

1. 输入

首先,Sigmoid 函数接收一个输入值 zz,这个值通常是前一层的输出,经过加权求和再加上偏置的结果。

2. 计算过程

函数公式:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

  • 指数计算:首先计算 eze^{-z}。这是指数函数,其中 zz 是负指数。
  • 分母计算:接着计算分母 1+ez1 + e^{-z}
  • 求值:最后,将 1 除以分母的结果得到 Sigmoid 函数的输出。

3. 输出

函数的输出值 σ(z)\sigma(z) 介于 0 和 1 之间,可以解释为概率值,表示某个事件发生的可能性。

4.例子

假设有一个输入值 z=2z = 2

  1. 计算指数部分e20.1353e^{-2} \approx 0.1353
  2. 计算分母1+0.13531.13531 + 0.1353 \approx 1.1353
  3. 计算 Sigmoid 输出σ(2)=11.13530.8816\sigma(2) = \frac{1}{1.1353} \approx 0.8816

这意味着,对于输入 z=2z = 2,Sigmoid 函数的输出大约是 0.8816,可以解释为有 88.16% 的概率某个事件发生。

注意 ! ! !

我们在神经网络算法反向传播的过程中会对 Sigmoid 进行求导,也就是计算梯度的过程,因此对于这个过程我们还需要了解 Sigmoid 的求导公式:

导数(梯度)

Sigmoid 函数的导数可以通过其自身的输出值来简化计算:

σ(x)=σ(x)(1σ(x))\sigma'(x) = \sigma(x) \cdot (1 - \sigma(x))

这意味着在计算反向传播时,如果已经计算了 Sigmoid 函数的输出值,那么导数的计算可以非常高效。

三、关键性解疑

1. 激活函数到底激活的是什么东西 ?

激活函数激活的是神经元。在神经网络中,每个神经元可以看作是一个包含权重、偏置和输入的计算单元。神经元接收输入,通过加权求和后加上偏置,然后通过激活函数来决定是否激活(即是否对下一层有贡献)。

简单生动的例子来帮助大家理解

想象一下,你正在参加一个热闹的聚会。在这个聚会上,有很多房间,每个房间代表一个神经元。每个房间都有一个门卫,门卫的任务是决定是否让客人进入房间。

  • 输入:客人就是输入数据。

  • 权重和偏置:门卫有一些规则来决定谁可以进入。这些规则就像是神经元中的权重和偏置,它们基于客人的特征(比如是否穿着正装、是否持有邀请函等)来打分。

  • 激活函数:门卫的最终决定就像是激活函数。门卫会根据打分结果来决定是否让客人进入房间。如果客人符合所有条件(即打分足够高),门卫就会说“欢迎光临!”(代表激活),客人就可以进入房间,对聚会产生影响(即对下一层神经元有贡献)。如果不符合条件,门卫就会说“抱歉,你不能进入”(不激活),客人就不能进入房间,也就不能对聚会产生影响。

例子详解

  1. 输入:假设输入是一系列的数值,代表一个数据点的特征。
  2. 权重和偏置:这些输入数值会与神经元的权重相乘,然后求和,再加上一个偏置值。这个结果就像是门卫根据规则给客人打的分数。
  3. 激活函数
    • 如果使用的是 ReLU 激活函数,那么门卫可能会说:“如果分数大于0,就让客人进入。”(即只让正分数的客人进入)。
    • 如果使用的是Sigmoid激活函数,那么门卫可能会说:“我们需要计算一个概率,如果概率大于0.5,就让客人进入。”(即让有一定概率的客人进入)。

总的来说,激活函数在神经网络中的作用就像是门卫在聚会中的作用,它们决定哪些输入(客人)足够重要,值得进一步处理(进入房间)。激活函数的选择会影响模型的学习能力和性能,就像门卫的规则会影响聚会的氛围和参与者一样。

四、Sigmiod 函数其他属性

1.主要用途

  1. 二分类问题的输出层:在二分类问题中,Sigmoid 函数可以将模型的输出解释为属于某一类的概率。

  2. 隐藏层:虽然在现代深度学习中,ReLU 及其变体更常用于隐藏层,但在某些情况下,Sigmoid 仍然可以用于隐藏层,尤其是在需要输出值在 0 到 1 之间时。

2.为什么用 Sigmoid 激活函数

  1. 平滑性和连续性:Sigmoid函数的平滑性和连续性使得它在梯度下降优化过程中表现良好。

  2. 概率解释:输出值在 (0, 1) 之间,可以直接解释为概率值。

3.不足的地方

  1. 梯度消失问题:当输入值 ( x ) 非常大或非常小的时候,Sigmoid 函数的梯度接近于 0,这会导致在神经网络的深层中梯度非常小,从而使得权重更新非常缓慢,这就是所谓的梯度消失问题。(这个问题主要会体现在该激活函数的导数性质上,也就是主要影响的是反向传播的过程)

  2. 非零中心性:Sigmoid 函数的输出不是以 0 为中心的(即不是对称的),这可能会导致梯度更新过程中的数值不稳定。

  3. 计算复杂度:相比于 ReLU 函数,Sigmoid 函数需要计算指数函数,这在计算上更复杂,因此计算成本更高。

五、In a word

Sigmoid 激活函数因其输出值可以解释为概率,在二分类问题中非常有用。然而,由于梯度消失问题和非零中心性,它在现代深度学习中不如 ReLU 及其变体常用。尽管如此,在特定的应用场景下,Sigmoid 仍然是一个我们经常使用并且比较重要的激活函数。

Reference

zhuanlan.zhihu.com/p/172254089

以上就是笔者关于Sigmoid激活函数技术和内容的讲解,欢迎大家点赞,收藏,关注和交流,O(∩_∩)O谢谢!