首页IT科技激活函数是干嘛的(激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Leaky ReLU激活函数、Parametric ReLU激活函数详细介绍及其原理详解)

激活函数是干嘛的(激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Leaky ReLU激活函数、Parametric ReLU激活函数详细介绍及其原理详解)

时间2025-05-02 11:00:59分类IT科技浏览4309
导读:相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解 反向传播算法和计算图详细介绍及其原理详解 激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Lea...

相关文章

梯度下降算法            、随机梯度下降算法                、动量随机梯度下降算法    、AdaGrad算法         、RMSProp算法                 、Adam算法详细介绍及其原理详解 反向传播算法和计算图详细介绍及其原理详解 激活函数      、Sigmoid激活函数      、tanh激活函数                  、ReLU激活函数         、Leaky ReLU激活函数   、Parametric ReLU激活函数详细介绍及其原理详解 Xavier参数初始化方法和Kaiming参数初始化方法详细介绍及其原理详解

前言

  本文总结了关于激活函数                  、

S

i

g

m

o

i

d

Sigmoid

Sigmoid激活函数            、

t

a

n

h

tanh

tanh
激活函数、

R

e

L

U

ReLU

ReLU
激活函数               、

L

e

a

k

y

R

e

L

U

Leaky \quad ReLU

LeakyReLU
激活函数               、

P

a

r

a

m

e

t

r

i

c

R

e

L

U

Parametric \quad ReLU

ParametricReLU
激活函数的相关内容            ,详细介绍了其原理以及优缺点                ,本文的全部内容如下所示          。

一  、激活函数

1.1 什么是激活函数

  设想这么一种情况    ,假如我们现在由输入值

x

x

x         ,经过线性变换

y

1

=

w

1

x

+

b

1

y_{1}=w_{1}x+b_{1}

y1=w1x+b1
                 ,得到

y

1

y_1

y1
      ,这个过程如下图所示:
图1:前向传播过程

  很明显这个线性变换就是一条直线      ,它的图像可能类似如下图所示的增函数:

图2:此神经元的线性变化对应的函数图像

  那如果我们在之前的基础上再做一次线性变换

y

2

=

w

2

y

1

+

b

2

y_{2}=w_{2}y_{1}+b_{2}

y2=w2y1+b2                  ,得到

y

2

y_{2}

y2
        ,那么整个过程就如下图所示:
图3:具有两个神经元的线性前向传播过程

  因为我们做的是线性变换   ,所以说得到的函数图像仍是一条直线                  ,虽然可能变成了如下图所示的减函数:

图4:经过第二个神经元的线性变化对应的函数图像

  所以说            ,就算将很多的线性变换叠加为神经网络,最终也只能解决线性的问题                。对于下图来说               ,虽然每个神经元都可以进行一次计算               ,但是计算的结果都是线性变换后的结果  ,最终也只能解决线性拟合问题      。

图5:多个神经元的线性前向传播过程

  但是在日常生活中            ,我们遇到的大部分情况都是非线性问题                ,那么该如何利用神经网络解决非线性问题呢?在讲解这个问题之前    ,让我们先回顾一下高中生物的一个知识点:神经元         ,这个结构如下图所示:

图6:生物体中的神经元结构

  首先树突接受上一个神经元的信号                 ,然后由轴突引起内外电荷数量的变化      ,得到一个动作电压      ,最终使整个神经元被激活                  ,将得到的经过激活后的信号继续向后传导        。而深度学习也借鉴了这个过程         ,每个神经元计算后的结果需要传入非线性函数

f

f

f进行非线性计算   ,这个过程把非线性函数

f

f

f
当作是从输入到输出的激活过程                  ,所以此非线性函数也被称为激活函数(Activation Function)            ,经过激活函数计算后的值

o

o

o
才是此神经元最终的输出值               。
图7:激活函数示意图

1.2 使用激活函数后如何更新参数

  我们之前学过,可以利用梯度下降算法来最优化参数               ,那么使用激活函数后如何应用梯度下降来更新参数呢?其实这个问题很简单               ,我们只需要多计算两步:

损失函数

L

L

L
对激活值

o

o

o
的偏导 激活函数

f

f

f
对预测值

y

y

y
的偏导

  整个过程如下图所示:

图8:具有激活函数的反向传播过程

1.3 成为激活函数的条件

  让我们再考虑一个问题  ,现实世界中有数以万计的函数            ,谁都可以成为激活函数么?很显然是不是的                ,某个函数要想作为激活函数来使用    ,应满足以下几点要求:

为了避免只能解决线性问题         ,所以激活函数应是非线性函数 为了使用梯度下降算法来最优化参数                 ,所以激活函数应是连续可导函数 为了数值上的稳定      ,激活函数应能映射所有的实数      ,所以激活函数的定义域应为

R

\mathbb{R}

R
为了只是增加非线性                  ,不改变对输入的响应状态         ,所以激活函数应是单调递增的

S

S

S
型曲线

  现在   ,我们已经了解了什么是激活函数                  ,那么在我们平时使用神经网络时            ,究竟都在使用哪些激活函数呢?下面将对常用的一些激活函数进行详解         。

二            、

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数

2.1

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数介绍

  刚才我们也提到了,一个函数要想成为激活函数               ,需要满足很多条件               ,那么什么函数可以满足这些条件呢?目前我们比较常用的就是

S

i

g

m

o

i

d

Sigmoid

Sigmoid

激活函数  ,可以有效地处理非线性问题            ,其函数解析式为:

σ

=

1

1

+

e

y

\sigma=\frac{1}{1+e^{-y}}

σ=1+ey1
  

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数的函数图像为:
图9:Sigmoid激活函数的函数图像

  由其函数图像可以看到                ,

S

i

g

m

i

o

d

Sigmiod

Sigmiod激活函数是一个典型的非线性函数    ,将输入映射至0~1之间      。而且         ,

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数还可由希腊字母

σ

\sigma

σ
表示               。

  通常                 ,我们需要使用经过激活函数

f

f

f(对于

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数来说      ,此时的

f

f

f
就是

σ

\sigma^{\prime}

σ
)激活后的值与真实值之间的误差形成的误差函数

L

L

L
来进行参数最优化      ,也就是刚才提到的内容                  ,这也就需要得到

S

i

g

m

o

i

d

Sigmoid

Sigmoid

激活函数的导函数:

σ

=

(

1

1

+

e

y

)

=

(

1

1

+

e

y

)

2

(

e

y

)

=

e

y

(

1

+

e

y

)

2

=

1

1

+

e

y

e

y

1

+

e

y

=

σ

(

1

σ

)

\begin{aligned} \sigma^{\prime} & =\left(\frac{1}{1+e^{-y}}\right)^{\prime} \\ & =-\left(\frac{1}{1+e^{-y}}\right)^{2}\left(-e^{-y}\right) \\ & =\frac{e^{-y}}{\left(1+e^{-y}\right)^{2}} \\ & =\frac{1}{1+e^{-y}} \frac{e^{-y}}{1+e^{-y}} \\ & =\sigma(1-\sigma) \end{aligned}

σ=(1+ey1)=(1+ey1)2(ey)=(1+ey)2ey=1+ey11+eyey=σ(1σ)
  

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数的导函数

σ

\sigma^{\prime}

σ
的图像如下图所示         ,类似于一个倒立的钟形图像   ,其最大值为0.25            。经过观察发现                  ,当

y

y

y
值较大或较小时            ,

σ

\sigma^{\prime}

σ
的值为0,这种函数我们也称其为饱和函数   。
图10:Sigmoid激活函数的导函数图像

  此时               ,让我们将目光再次聚焦到

S

i

g

m

o

i

d

Sigmoid

Sigmoid激活函数的函数图像上               ,我们可以注意到  ,

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数的函数值总是大于0的            ,所以经过激活后的值                ,也都大于0               。这种函数也被称为非零均值函数    ,如下图所示:
图11:Sigmoid激活函数是非零均值函数

  既然

S

i

g

m

o

i

d

Sigmoid

Sigmoid激活函数的函数值永远大于0         ,那么这样的结果会如何呢?我们可以使用之前的例子进行说明                 ,图示如下      ,需要注意此时的激活函数

f

f

f

S

i

g

m

o

i

d

Sigmoid

Sigmoid
激活函数

σ

\sigma

σ
图12:使用Sigmoid激活函数后的反向传播过程

  因为刚才提到      ,

S

i

g

m

o

i

d

Sigmoid

Sigmoid激活函数的函数值永远大于0                  ,所以上图中黄色部分永远大于0         ,那么

L

w

1

\frac{\partial L}{\partial w_{1}}

w1L

L

w

2

\frac{\partial L}{\partial w_{2}}

w2L
的正负就取决于红框内

L

o

\frac{\partial L}{\partial o}

oL
的正负   ,这就意味着

w

1

w_{1}

w1

w

2

w_{2}

w2
的梯度符号始终一致                  ,最终导致参数

w

1

w_{1}

w1

w

2

w_{2}

w2
被同时正向或者反向更新            ,这种情况会使神经网络更慢的收敛到预定位置               。所以说,

S

i

g

m

o

i

d

Sigmoid

Sigmoid
这样的非零均值激活函数会导致神经网络不易收敛。

2.2 梯度消失

  我们刚刚提到               ,

σ

\sigma^{\prime}

σ的最大值为0.25               ,所以  ,在利用梯度下降算法进行参数最优化的过程            ,其中在进行反向传播计算梯度的时候                ,每层的梯度会被动缩小大约

1

4

\frac{1}{4}

41
    ,如下图所示:
图13:使用Sigmoid激活函数会使每层神经元的梯度被动缩小大约1/4

  这种情况看起来很糟对不对         ,但是根据

σ

\sigma^{\prime}

σ的图像可知                 ,其还有另一个特点:当

y

y

y
的值很大或者很小时      ,

σ

\sigma^{\prime}

σ
的值为0            。那么也就意味着      ,当进行反向转播求导时                  ,可能在某一层的梯度几乎为0         ,那么会导致参数不会被更新   ,这个过程如下图所示(绿色对号代表正常计算                  ,没有错误;红色叉号代表

σ

\sigma^{\prime}

σ
几乎为零)                 。这种更糟糕的现象也被称为梯度消失            ,而

σ

\sigma^{\prime}

σ
又可以被称为饱和函数,所以饱和函数会导致梯度消失   。
图14:使用类似Sigmoid激活函数的饱和函数作为激活函数会导致梯度消失问题

三                、

t

a

n

h

tanh

tanh
激活函数

  经过刚才的讲解可以发现               ,

S

i

g

m

o

i

d

Sigmoid

Sigmoid激活函数虽然使用较简单               ,但是存在很多严重的问题  ,为了解决这些问题            ,研究人员提出另一种激活函数                ,也就是我们平时经常使用的

t

a

n

h

tanh

tanh
激活函数    ,

t

a

n

h

tanh

tanh
函数又名为双曲正切函数         ,这也是我们在高等数学中常用的一个函数          。既然要使用

t

a

n

h

tanh

tanh

函数作为激活函数使用                 ,我们就要对其基本性质进行了解      ,其函数解析式为:

tanh

=

1

e

y

1

+

e

y

\tanh =\frac{1-e^{-y}}{1+e^{-y}}

tanh=1%3

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
ai画图教程入门教程(【AI绘图】来体验了下AI绘图) 录入打码官网有哪些(编打码软件要运用哪些知识-软件分享 | 80 余款优秀的摄影应用,给最爱摄影的你~)