2025年sigmoid函数和logistic(sigmoid函数和双曲正切函数关系)

sigmoid函数和logistic(sigmoid函数和双曲正切函数关系)nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 以下内容主要来自邱锡鹏老师的 神经网络与深度学习 第四章和博客的整理 1 Sigmoid 型函数 nbsp nbsp nbsp nbsp nbsp nbsp amp

大家好,我是讯享网,很高兴认识大家。



        以下内容主要来自邱锡鹏老师的《神经网络与深度学习》第四章和博客的整理。

1 Sigmoid型函数

        型函数是指一类型曲线函数,为两端饱和函数。常用的型函数有函数和函数。

sigmoid曲面 sigmoid曲线_Logistic函数
讯享网
,若 sigmoid曲面 sigmoid曲线_Sigmod型函数_02 时,其导数 sigmoid曲面 sigmoid曲线_ReLu函数_03,则称其为左饱和。若 sigmoid曲面 sigmoid曲线_Sigmod型函数_04 时,其导数 sigmoid曲面 sigmoid曲线_sigmoid曲面_05,则称其为右饱和。当同时满足左、右饱和时,就称为两端饱和。

1.1 Logistic函数

        函数定义为
sigmoid曲面 sigmoid曲线_Tanh函数_06
        其导数为
sigmoid曲面 sigmoid曲线_Tanh函数_07

函数可以看成是一个“挤压”函数,把一个实数域的输入“挤压”到(0, 1)。当输入值在0附近时,型函数近似为线性函数;当输入值靠近两端时,对输入进行抑制。输入越小,越接近于0;输入越大,越接近于1。这样的特点也和生物神经元类似,对一些输入会产生兴奋(输出为1),对另一些输入产生抑制(输出为0)。和感知器使用的阶跃激活函数相比,函数是连续可导的,其数学性质更好。

        因为函数的性质,使得装备了激活函数的神经元具有以下两点性质:1)其输出直接可以看作概率分布,使得神经网络可以更好地和统计学习模型进行结合。2)其可以看作一个软性门(Soft Gate),用来控制其他神经元输出信息的数量。

        下图左边是函数,右边是该函数的导数,由图像可发现:当输入值大于10或者小于-10时局部梯度都是0,非常不利于网络的梯度流传递。

sigmoid曲面 sigmoid曲线_Sigmod型函数_08

函数作为激活函数的特点:

  1. 激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
  2. 反向传播求误差梯度时,求导涉及除法;
  3. sigmoid曲面 sigmoid曲线_Sigmod型函数_09 导数取值范围是[0, 0.25],当 sigmoid曲面 sigmoid曲线_Sigmod型函数_09sigmoid曲面 sigmoid曲线_Logistic函数_11 较大或较小时,导数接近0,而反向传播的数学依,据是微积分求导的链式法则,当前层的导数需要之前各层导数的乘积,几个小数的相乘,结果会很接近0;sigmoid曲面 sigmoid曲线_Sigmod型函数_09 导数的最大值是0.25,这意味着导数在每一层至少会被压缩为原来的1/4,通过两层后被变为1/16,……,通过10层后为 sigmoid曲面 sigmoid曲线_sigmoid曲面_13,第10层的误差相对第一层卷积的参数[公式]的梯度将是一个非常小的值,这就是所谓的“梯度消失”(即Gradient Vanishing)。请注意这里是“至少”,导数达到最大值这种情况还是很少见的。
  4. sigmoid曲面 sigmoid曲线_Sigmod型函数_09

        详细数学分析见文章:http://neuralnetworksanddeeplearning.com/chap5.html

1.2 Tanh函数

        函数也是一种型函数。其定义为
sigmoid曲面 sigmoid曲线_Sigmod型函数_15
        函数可以看作放大并平移的函数,其值域是(−1, 1)。
sigmoid曲面 sigmoid曲线_sigmoid曲面_16

        下图给出了函数和函数的形状。函数的输出是零中心化的(Zero-Centered),而函数的输出恒大于0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降的收敛速度变慢。

sigmoid曲面 sigmoid曲线_Logistic函数_17

        下图是函数的导数,与类似,局部梯度特性不利于网络梯度流的反向传递。

sigmoid曲面 sigmoid曲线_Sigmod型函数_18

函数作为激活函数的特点:

  1. 函数的输出范围为(-1, 1),解决了函数的不是输出问题;但幂运算的问题仍然存在;
  2. 导数范围在(0, 1)之间,相比 sigmoid曲面 sigmoid曲线_Sigmod型函数_09
1.3 Hard-Logistic 函数

        函数和函数都是型函数,具有饱和性,但是计算开销较大。因为这两个函数都是在中间(0 附近)近似线性,两端饱和。因此,这两个函数可以通过分段函数来近似。

        以函数sigmoid曲面 sigmoid曲线_Tanh函数_20为例,其导数为 sigmoid曲面 sigmoid曲线_Tanh函数_21。函数在0 附近的一阶泰勒展开(Taylor expansion)为
sigmoid曲面 sigmoid曲线_Sigmod型函数_22
        这样函数可以用分段函数来近似。
sigmoid曲面 sigmoid曲线_ReLu函数_23

1.4 Hard-Tanh 函数

        同样,Tanh 函数在0附近的一阶泰勒展开为
sigmoid曲面 sigmoid曲线_Sigmod型函数_24
        这样Tanh 函数也可以用分段函数来近似。
sigmoid曲面 sigmoid曲线_sigmoid曲面_25

        下图给出了函数和函数的形状。

sigmoid曲面 sigmoid曲线_sigmoid曲面_26


2 ReLU函数

ReLU(Rectified Linear Unit,修正线性单元),也叫函数,是目前深度神经网络中经常使用的激活函数。实际上是一个斜坡(ramp)函数,定义为
sigmoid曲面 sigmoid曲线_Logistic函数_27
        优点: 采用的神经元只需要进行加、乘和比较的操作,计算上更加高效。函数也被认为具有生物学合理性(Biological Plausibility),比如单侧抑制、宽兴奋边界(即兴奋程度可以非常高)。在生物神经网络中,同时处于兴奋状态的神经元非常稀疏。人脑中在同一时刻大概只有1% ∼ 4% 的神经元处于活跃状态。型激活函数会导致一个非稀疏的神经网络,而却具有很好的稀疏性,大约50% 的神经元会处于激活状态。

在优化方面,相比于型函数的两端饱和,函数为左饱和函数,且在sigmoid曲面 sigmoid曲线_sigmoid曲面_28 时导数为1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。

        缺点: 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外,神经元在训练时比较容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是0,在以后的训练过程中永远不能被激活。这种现象称为死亡问题(Dying ReLU Problem),并且也有可能会发生在其他隐藏层。

        下图分别是函数图像和导函数图像,可以发现:当输入大于0时,局部梯度永远不会为0,比较有利于梯度流的传递。

sigmoid曲面 sigmoid曲线_sigmoid曲面_29

函数作为激活函数的特点:

优点:

  • 解决了梯度消失问题 (在正区间)
  • 计算速度非常快,只需要判断输入是否大于0
  • 收敛速度远快于和 缺点:
  1. 的输出不是零中心化
  2. ,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) 学习率太大导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将学习率设置太大或使用等自动调节学习率的算法。
  3. sigmoid曲面 sigmoid曲线_Logistic函数_30 下,导数为常数1的好处就是在链式法则中不会出现梯度消失,但梯度下降的强度就完全取决于权值的乘积,这样就可能会出现梯度爆炸问题。解决这类问题:一是控制权值,让它们在(0,1)范围内;二是做梯度裁剪,控制梯度下降强度,如 sigmoid曲面 sigmoid曲线_ReLu函数_31

        在实际使用中,为了避免上述情况,有几种的变种也会被广泛使用,如下:

2.1 带泄露的ReLU

        带泄露的(Leaky ReLU)在输入 sigmoid曲面 sigmoid曲线_sigmoid曲面_32 时,保持一个很小的梯度sigmoid曲面 sigmoid曲线_sigmoid曲面_33。这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激活。带泄露的的定义如下:
sigmoid曲面 sigmoid曲线_sigmoid曲面_34
        其中 sigmoid曲面 sigmoid曲线_sigmoid曲面_33 是一个很小的常数,比如0.01。当 sigmoid曲面 sigmoid曲线_sigmoid曲面_36 时,带泄露的也可以写为
sigmoid曲面 sigmoid曲线_Tanh函数_37
        相当于是一个比较简单的单元。

sigmoid曲面 sigmoid曲线_Sigmod型函数_38 时,sigmoid曲面 sigmoid曲线_sigmoid曲面_39,函数和导函数的图像分别如下,可以发现:基本没有“死区”, 也就是梯度永远不会为0。之所以说“基本”,是因为函数在0处没有导数。

sigmoid曲面 sigmoid曲线_sigmoid曲面_40

        理论上来讲,有的所有优点,外加不会有问题,但是在实际操作当中,并没有完全证明总是好于。

2.2 带参数的ReLU

        带参数的ReLU(Parametric ReLU,PReLU)引入一个可学习的参数,不同神经元可以有不同的参数。对于第𝑖个神经元,其的定义为
sigmoid曲面 sigmoid曲线_sigmoid曲面_41
        其中 sigmoid曲面 sigmoid曲线_ReLu函数_42sigmoid曲面 sigmoid曲线_ReLu函数_43 时函数的斜率。因此,是非饱和函数。如果 sigmoid曲面 sigmoid曲线_Logistic函数_44,那么就退化为。如果 sigmoid曲面 sigmoid曲线_ReLu函数_42 为一个很小的常数,则可以看作带泄露的。可以允许不同神经元具有不同的参数,也可以一组神经元共享一个参数。

2.3 ELU 函数

ELU(Exponential Linear Unit,指数线性单元)是一个近似的零中心化的非线性函数,由Djork等人提出,被证实有较高的噪声鲁棒性,其定义为
sigmoid曲面 sigmoid曲线_Sigmod型函数_46

sigmoid曲面 sigmoid曲线_ReLu函数_47 是一个超参数,决定 sigmoid曲面 sigmoid曲线_ReLu函数_43

        也是为解决存在的问题而提出,显然,有的基本所有优点,还不会有问题,输出的均值接近0,。但缺点在于需要计算指数,计算量稍大。类似于,理论上虽然好于,但在实际使用中目前并没有好的证据总是优于。该函数和导数的图像如下图所示:

sigmoid曲面 sigmoid曲线_sigmoid曲面_49

2.4 Softplus 函数

        函数可以看作函数的平滑版本,其定义为

sigmoid曲面 sigmoid曲线_ReLu函数_50

        函数其导数刚好是函数。函数虽然也具有单侧抑制、宽兴奋边界的特性,却没有稀疏激活性。

sigmoid曲面 sigmoid曲线_Logistic函数_51

激活函数尽量选择函数或者函数,相对于函数或者函数会让梯度流更加顺畅,训练过程收敛得更快,但要注意初始化和学习率的设置。


3 其他函数

3.1 Swish 函数

        函数是一种自门控(Self-Gated)激活函数,定义为
sigmoid曲面 sigmoid曲线_ReLu函数_52
        其中 sigmoid曲面 sigmoid曲线_Logistic函数_53 为函数,sigmoid曲面 sigmoid曲线_Sigmod型函数_54 为可学习的参数或一个固定超参数。sigmoid曲面 sigmoid曲线_sigmoid曲面_55 可以看作一种软性的门控机制。当 sigmoid曲面 sigmoid曲线_Tanh函数_56 接近于1 时,门处于“开”状态,激活函数的输出近似于 sigmoid曲面 sigmoid曲线_Tanh函数_57 本身;当sigmoid曲面 sigmoid曲线_Tanh函数_56

        下图给出了函数的示例

sigmoid曲面 sigmoid曲线_sigmoid曲面_59

        当 sigmoid曲面 sigmoid曲线_ReLu函数_60 时,函数变成线性函数 sigmoid曲面 sigmoid曲线_Logistic函数_61。当 sigmoid曲面 sigmoid曲线_Tanh函数_62 时,函数在 sigmoid曲面 sigmoid曲线_Logistic函数_63 时近似线性,在 sigmoid曲面 sigmoid曲线_sigmoid曲面_32 时近似饱和,同时具有一定的非单调性。当 sigmoid曲面 sigmoid曲线_Sigmod型函数_65 时,sigmoid曲面 sigmoid曲线_Tanh函数_56 趋向于离散的0-1函数,函数近似为函数。因此,函数可以看作线性函数和函数之间的非线性插值函数,其程度由参数 sigmoid曲面 sigmoid曲线_Sigmod型函数_54

3.2 GELU 函数

        (Gaussian Error Linear Unit,高斯误差线性单元)也是一种通过门控机制来调整其输出值的激活函数,和函数比较类似。
sigmoid曲面 sigmoid曲线_Sigmod型函数_68
        其中 sigmoid曲面 sigmoid曲线_Logistic函数_69 是高斯分布 sigmoid曲面 sigmoid曲线_Logistic函数_70 的累积分布函数,其中 sigmoid曲面 sigmoid曲线_ReLu函数_71 为超参数,一般设 sigmoid曲面 sigmoid曲线_ReLu函数_72 即可。由于高斯分布的累积分布函数为S型函数,因此函数可以用函数或函数来近似,
sigmoid曲面 sigmoid曲线_sigmoid曲面_73
        当使用函数来近似时,相当于一种特殊的函数.

3.3 Maxout 单元

        单元也是一种分段线性函数。型函数、等激活函数的输入是神经元的净输入 sigmoid曲面 sigmoid曲线_Sigmod型函数_74,是一个标量.而单元的输入是上一层神经元的全部原始输出,是一个向量 sigmoid曲面 sigmoid曲线_sigmoid曲面_75

        每个单元有 sigmoid曲面 sigmoid曲线_Sigmod型函数_76 个权重向量 sigmoid曲面 sigmoid曲线_Sigmod型函数_77 和偏置 sigmoid曲面 sigmoid曲线_Logistic函数_78。对于输入 sigmoid曲面 sigmoid曲线_sigmoid曲面_79,可以得到 sigmoid曲面 sigmoid曲线_Sigmod型函数_76 个净输入 sigmoid曲面 sigmoid曲线_Sigmod型函数_81sigmoid曲面 sigmoid曲线_Sigmod型函数_82
sigmoid曲面 sigmoid曲线_ReLu函数_83
        其中 sigmoid曲面 sigmoid曲线_sigmoid曲面_84 为第 sigmoid曲面 sigmoid曲线_sigmoid曲面_85

        单元的非线性函数定义为
sigmoid曲面 sigmoid曲线_sigmoid曲面_86
        单元不单是净输入到输出之间的非线性映射,而是整体学习输入到输出之间的非线性映射关系。激活函数可以看作任意凸函数的分段线性近似,并且在有限的点上是不可微的。


4 小结

        深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用数据 (可以经过数据预处理实现) 和输出。所以要尽量选择输出具有特点的激活函数以加快模型的收敛速度。

        和的特点是将输出限制在(0,1)和(-1,1)之间,说明和适合做概率值的处理,例如中的各种门;而就不行,因为无最大值限制,可能会出现很大值。同样,根据的特征,适合用于深层网络的训练,而和则不行,因为它们会出现梯度消失。

sigmoid曲面 sigmoid曲线_ReLu函数_87

        为什么在等结构中将原先的、换成可以取得比较好的效果?为什么在中,将换成不能取得类似的效果?详细解答,请阅读:RNN 中为什么要采用 tanh,而不是 ReLU 作为激活函数?

小讯
上一篇 2025-05-31 14:03
下一篇 2025-06-05 18:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/207295.html