最常用激活函数公式(更新中)

本文详细介绍了神经网络中常用的激活函数,包括sigmoid、tanh、ReLU及其变种等,并解释了这些函数的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最常用激活函数公式


如需转载,请务必标明出处及作者信息:@洋石灰儿@https://blog.youkuaiyun.com/Yshihui/article/details/80540070


(1)what and why

  • 直观的作用就是进行非线性操作,将输入信号input线性加权,再进行非线性操作。

  • 神经网络模拟生物神经元的工作原理,人工神经元的工作是将神经质传输到突出,突出将各个神经质进行进一步操作,权衡后再向下一个神经元传输神经质。可以自行查询生物神经元的工作原理

  • 激活函数的性质:

    1. 非线性——从后面的各个激活函数的公式可以明显看出。原因是:层神经网络向下一层 神经网络传递信息时,如果是线性处理,则层和层等价于一层神经网络,从而失去神经元传递的意义。非线性操作——模拟生物神经元工作原理。
    2. 可微性——进行优化时常利用梯度进行方向优化。
    3. 单调性——单调性保证单层神经网络的单调性,从而保证输入和输出之间的单调性关系(参考链式法则)。
    4. 输出范围——当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate。

(2)常用激活函数

sigmoid,tanh,ReLU,LReLU,PReLU,RReLU,ELU,Cost Function,Maxout,Softplus,Softsign

1.sigmoid

sigmoid(x)=11+ex s i g m o i d ( x ) = 1 1 + e − x


2.tanh

tanh(x)=exexex+ex=e2x1e2x+1 t a n h ( x ) = e x − e − x e x + e − x = e 2 x − 1 e 2 x + 1


3.ReLU

y={x,0,if x0if x<0 y = { x , if  x ≥ 0 0 , if  x < 0


4.LReLU——PReLU

yi={xi,aixi,if (xi>0)if (xi0) y i = { x i , if  ( x i > 0 ) a i x i , if  ( x i ≤ 0 )


5.RReLU

yji={xji,ajixji,if xji0if xji<0ajiU(l,u) l<u,and l,u[0,1) y j i = { x j i , if  x j i ≥ 0 a j i x j i , if  x j i < 0 a j i ∼ U ( l , u )   l < u , a n d   l , u ∈ [ 0 , 1 )


6.softmax

θ(z)i=eziKk=1ezk θ ( z ) i = e z i ∑ k = 1 K e z k


7.ELU

y={x,a(ex1),if x0if x<0a>0 y = { x , if  x ≥ 0 a ( e x − 1 ) , if  x < 0 a > 0


8.Cost Function——Softmax + Cross Entropy

9.Maxout

Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k.这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值.

我们常见的隐含层节点输出:

hi(x)=sigmoid(xTWi+bi) h i ( x ) = s i g m o i d ( x T W … i + b i )

而在Maxout网络中,其隐含层节点的输出表达式为:

hi(x)=maxj[1,k]zij h i ( x ) = m a x j ∈ [ 1 , k ] z i j

其中 zij=xTWij+bij,WRd×m×k z i j = x T W … i j + b i j , W ∈ R d × m × k

以如下最简单的多层感知器(MLP)为例:

maxout-networks-4-1024

假设网络第i层有2个神经元x1、x2,第i+1层的神经元个数为1个.原本只有一层参数,将ReLU或sigmoid等激活函数替换掉,引入Maxout,将变成两层参数,参数个数增为k倍.与常规激活函数不同的是,它是一个可学习的分段线性函数.

然而任何一个凸函数,都可以由线性分段函数进行逼近近似。其实我们可以把以前所学到的激活函数:ReLU、abs激活函数,看成是分成两段的线性函数,如下示意图所示:

maxout-convex-func-approximate!

实验结果表明Maxout与Dropout组合使用可以发挥比较好的效果。

那么,前边的两种ReLU便是两种Maxout,函数图像为两条直线的拼接, f(x)=max(wT1x+b1,wT2x+b2) f ( x ) = m a x ( w 1 T x + b 1 , w 2 T x + b 2 ) .

原文: https://www.cnblogs.com/makefile/p/activation-function.html © 康行天下


10.Softplus

f(x)=log(ex+1) f ( x ) = l o g ( e x + 1 )


11.Softsign

f(x)=x|x|+1 f ( x ) = x | x | + 1

sigmoid,tanh,ReLU,LReLU,PReLU,RReLU,ELU,Cost Function,Maxout,Softplus,Softsign


如需转载,请务必标明出处及作者信息:@洋石灰儿@https://blog.youkuaiyun.com/Yshihui/article/details/80540070


参考:


https://zhuanlan.zhihu.com/p/26122560

https://blog.youkuaiyun.com/yshihui/article/details/80444353

https://www.jianshu.com/p/22d9720dbf1a

https://www.cnblogs.com/rgvb178/p/6055213.html

https://www.cnblogs.com/makefile/p/activation-function.html

https://zhuanlan.zhihu.com/p/22142013


### 激活函数的数学公式及其在神经网络中的作用 #### 常见激活函数的定义与特性 激活函数是神经网络的重要组成部分之一,其主要功能是非线性变换。以下是几种常见的激活函数以及它们对应的数学表达式: 1. **Sigmoid 函数** Sigmoid 是一种经典的激活函数,用于将输入映射到 (0, 1) 的范围。它的数学形式如下: \[ f(x) = \frac{1}{1 + e^{-x}} \] 这种函数的优点在于输出平滑且可微分,但在实际应用中容易遇到梯度消失问题[^1]。 2. **ReLU(Rectified Linear Unit)函数** ReLU 是现代神经网络中常用激活函数之一,具有简单高效的特点。其数学表达为: \[ f(x) = \max(0, x) \] 它能够有效缓解梯度消失问题,但也可能导致部分神经元死亡的现象[^2]。 3. **Swish 函数** Swish 是近年来被提出的一种新型激活函数,在某些场景下表现优于 ReLU。它由 Google 提出,具体定义为: \[ f(x) = x \cdot \sigma(\beta x), \quad \text{其中 } \sigma(z) = \frac{1}{1 + e^{-z}} \] 参数 β 可以为常数或通过训练调整。 4. **GELU(Gaussian Error Linear Unit)函数** GELU 是另一种基于高斯分布的激活函数,广泛应用于自然语言处理领域。其数学表示为: \[ f(x) = x \cdot P(X \leq x) = x \cdot \Phi(x), \] 或近似实现为: \[ f(x) = 0.5x\left(1 + \tanh\left[\sqrt{\frac{2}{\pi}}\left(x + 0.044715x^3\right)\right]\right). \] #### 激活函数的作用 激活函数的主要目的是引入非线性因素,使得神经网络可以拟合复杂的模式和关系。如果没有这些非线性转换,则无论堆叠多少层,整个模型仍然相当于一个简单的线性回归模型。 #### 实现代码示例 以下是一些常见激活函数的 Python 实现: ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def relu(x): return np.maximum(0, x) def swish(x, beta=1.0): return x * sigmoid(beta * x) def gelu(x): cdf = 0.5 * (1.0 + np.tanh(np.sqrt(2 / np.pi) * (x + 0.044715 * np.power(x, 3)))) return x * cdf ``` 上述代码分别实现了 Sigmoid、ReLU、Swish 和 GELU 四种激活函数的功能。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值