神经网络——激活函数

激活函数

激活函数 f A N f_{AN} fAN 接收节点输入信号和偏差,以 x = n e t − θ x=net-\theta x=netθ 表示,决定输出。一个好的激活函数需要满足以下条件:

(1)非线性,即导数不是常数,其目的在于保证多重网络不退化成单层线性网络;

(2)几乎处处可微:可微性保证了再梯度优化中梯度的可计算性;

(3)计算简单:激活函数在神经网络前向传播过程中的使用次数与神经元的个数成正比,因此保证其计算的简单性是很有必要的;

(4)非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题;

(5)单调性(monotonic):即导数符号不变,单调性使得激活函数的梯度方向不会经常改变,从而使得训练更容易;

(6)输出范围有限:有限的输出范围使得网络对于一些比较大的输入也会比较稳定。但这会导致梯度消失问题;

(7)接近恒等变换(identity):即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。但与非线性存在矛盾。

(8)参数少:大部分激活函数都是没有参数的;使用带参数的激活函数会略微增加网络的大小;

(9)归一化:主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练;

(10)zero-centered:

对多数激活函数(线性除外),应当满足: f A N ( − ∞ ) = 0 或 f A N ( − ∞ ) = − 1 f_{AN}(-\infty)=0或f_{AN}(-\infty)=-1 fAN()=0fAN()=1,且有 f A N ( ∞ ) = 1 f_{AN}(\infty)=1 fAN()=1

常用激活函数有:

1.线性函数: f A N ( x ) = λ ⋅ x f_{AN}(x)=\lambda\cdot x fAN(x)=λx λ \lambda λ 为一常数;
在这里插入图片描述

2.阶跃函数: f A N ( x ) = { γ 1 , i f    x ≥ 0 γ 2 , i f    x < 0 \displaystyle f_{AN}(x)=\left\{ \begin{aligned} \gamma_1, & & {if\,\,x\ge0}\\ \gamma_2, & & {if\,\,x<0}\\ \end{aligned} \right. fAN(x)={γ1,γ2,ifx0ifx<0,其中,常取 γ 1 = 1 , γ 2 = 0    o r    − 1 \gamma_1=1,\gamma_2=0\;or\;-1 γ1=1,γ2=0or1;
在这里插入图片描述

3.斜面函数: f A N ( x ) = { γ , i f    x ≥ ϵ x , i f    − ϵ < x < ϵ − γ , i f    x ≤ − ϵ \displaystyle f_{AN}(x)=\left\{ \begin{aligned} \gamma, & & {if\,\,x\ge\epsilon}\\ x, & & {if\,\,-\epsilon<x<\epsilon}\\ -\gamma, & & {if\,\,x\le-\epsilon}\\ \end{aligned} \right. fAN(x)=γ,x,γ,ifxϵifϵ<x<ϵifxϵ
在这里插入图片描述

4. S i g m o i d Sigmoid Sigmoid 函数:

f A N ( x ) = 1 1 + e − λ x \displaystyle f_{AN}(x)=\frac{1}{1+e^{-\lambda x}} fAN(x)=1+eλx1;其值域为 [ 0 , 1 ] ; [0,1]; [0,1]通常, λ = 1 \lambda=1 λ=1

导数:当 λ = 1 \lambda=1 λ=1 时, f A N ′ ( x ) = e − λ x ( 1 + e − λ x ) 2 = f A N ( x ) ⋅ f A N ( − x ) = f A N ( x ) ⋅ [ 1 − f A N ( x ) ] \displaystyle f'_{AN}(x)=\frac{e^{-\lambda x}}{(1+e^{-\lambda x})^2}=f_{AN}(x)\cdot f_{AN}(-x)=f_{AN}(x)\cdot [1-f_{AN}(x)] fAN(x)=(1+eλx)2eλx=fAN(x)fAN(x)=fAN(x)[1fAN(x)];其值域为 [ 0 , 1 / 4 ] [0,1/4] [0,1/4]
在这里插入图片描述

5.双曲正切函数:

f A N ( x ) = e λ x − e − λ x e λ x + e − λ x ≈ 2 1 + e − λ x − 1 \displaystyle f_{AN}(x)=\frac{e^{\lambda x}-e^{-\lambda x}}{e^{\lambda x}+e^{-\lambda x}}\approx\frac{2}{1+e^{-\lambda x}}-1 fAN(x)=eλx+eλxeλxeλx1+eλx21,其值域为 [ − 1 , 1 ] [-1,1] [1,1],通常, λ = 1 \lambda=1 λ=1

导数:当 λ = 1 \lambda=1 λ=1 时, f A N ( x ) = 1 − ( e λ x − e − λ x e λ x + e − λ x ) 2 = 1 − f A N 2 \displaystyle f_{AN}(x)=1-(\frac{e^{\lambda x}-e^{-\lambda x}}{e^{\lambda x}+e^{-\lambda x}})^2=1-f^2_{AN} fAN(x)=1(eλx+eλxeλxeλx)2=1fAN2,其值域为 [ 0 , 1 ] [0,1] [0,1]
在这里插入图片描述

6.高斯函数: f A N ( x ) = e x 2 / δ 2 \displaystyle f_{AN}(x)=e^{{x^2}/{\delta^2}} fAN(x)=ex2/δ2,其中, θ \theta θ 为高斯分布的均值, δ 2 \delta^2 δ2 为方差;
在这里插入图片描述

7.ReLU函数:

f A N ( x ) = m a x ( 0 , x ) = { x , i f    x > 0 0 , i f    x ≤ 0 \displaystyle f_{AN}(x)=max(0,x)=\left\{ \begin{aligned} x, & & {if\,\,x>0}\\ 0, & & {if\,\,x\le0}\\ \end{aligned} \right. fAN(x)=max(0,x)={x,0,ifx>0ifx0

其导数为 f A N ′ ( x ) = { 1 , i f    x > 0 0 , i f    x ≤ 0 \displaystyle f'_{AN}(x)=\left\{ \begin{aligned} 1, & & {if\,\,x>0}\\ 0, & & {if\,\,x\le0}\\ \end{aligned} \right. fAN(x)={1,0,ifx>0ifx0
在这里插入图片描述

ReLU函数的优点在于梯度和计算量小,缺点在于均值不为0,无上界等,因此有变种,如:

LeakyReLU: f A N ( x ) = m a x ( α x , x ) , α 可 取 0.01 \displaystyle f_{AN}(x)=max(\alpha x,x),\alpha可取0.01 fAN(x)=max(αx,x),α0.01

ELU: f A N ( x ) = m a x { α ( e x − 1 ) , x } \displaystyle f_{AN}(x)=max\{\alpha(e^x-1),x\} fAN(x)=max{α(ex1),x};

Noisy ReLU: f A N ( x ) = m a x { 0 , x + Y } , Y ∼ N ( 0 , σ ( x ) ) \displaystyle f_{AN}(x)=max\{0,x+Y\},Y\sim N(0,\sigma(x)) fAN(x)=max{0x+Y}YN(0,σ(x));

ReLU上界设置: f A N ( x ) = m i n ( 6 , m a x ( 0 , x ) ) \displaystyle f_{AN}(x)=min(6,max(0,x)) fAN(x)=min(6,max(0,x))

SELU: f A N ( x ) = λ ⋅ m a x { α ( e x − 1 ) , x } \displaystyle f_{AN}(x)=\lambda\cdot max\{\alpha(e^x-1),x\} fAN(x)=λmax{α(ex1),x}

. . . . . . ...... ......

8.Maxout函数

与常规激活函数不同的是,它是一个可学习的分段线性函数,任何一个凸函数,都可以由线性分段函数进行逼近近似,因此,Maxout的拟合能力非常强。

假设 ω \omega ω 是 2 维的,则有 f A N = m a x { ω 1 T x + b 1 , ω 2 T x + b 2 } \displaystyle f_{AN}=max\{\omega^T_1\mathbf x+b_1,\omega^T_2\mathbf x+b_2\} fAN=max{ω1Tx+b1,ω2Tx+b2}

但从 Maxout 激活函数中可以看出,每个神经元中有两组参数 ( ω , b ) (\omega,b) (ω,b),使得参数量增加了一倍,导致网络大小的增加。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyTorch神经网络中,常用的激活函数有Sigmoid函数、ReLU函数和Softmax函数。Sigmoid函数在机器学习的二分类模型中常被使用,例如逻辑回归。它模拟了生物神经元的特性,当神经元获得的输入信号累计超过一定的阈值后,神经元被激活并输出电信号,否则处于抑制状态。ReLU函数是一种非线性函数,它在输入大于零时返回输入值,而在输入小于等于零时返回零。ReLU函数的主要作用是增加神经网络的表达能力,使其能够提取出高语义的信息。Softmax函数常用于多分类问题,它将输入向量转换为概率分布,使得每个类别的概率之和为1。通过选择适当的激活函数,可以提高神经网络的性能和准确度。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [PyTorch教程(5)激活函数](https://blog.csdn.net/weixin_43229348/article/details/119353266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [一起来学PyTorch——神经网络激活函数层)](https://blog.csdn.net/TomorrowZoo/article/details/129453233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值