sigmoid函数、tanh函数、softmax函数及求导

  • Post author:
  • Post category:其他

sigmoid函数和tanh函数都是激活函数,接收一个输入,产生一个输出。这里的求导是对激活函数求导。而softmax函数是一个多输入多输出的激活函数,这里提到的求导是对经过softmax函数后进行交叉熵计算得到的损失函数求导。

sigmoid函数及求导

sigmoid激活函数形式为:

σ

(

x

)

=

s

i

g

m

o

i

d

(

x

)

=

1

1

+

e

x

\sigma (x)=sigmoid(x)=\frac{1}{1+e^{-x}}

σ(x)=sigmoid(x)=1+ex1
其导数为:

d

σ

(

x

)

d

x

=

σ

(

x

)

(

1

σ

(

x

)

)

\frac{\text d \sigma(x)}{\text dx}=\sigma(x)(1-\sigma(x))

dxdσ(x)=σ(x)(1σ(x))

tanh函数及求导

tanh激活函数形式为:

t

a

n

h

(

x

)

=

e

x

e

x

e

x

+

e

x

tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

tanh(x)=ex+exexex
其导数为:

d

t

a

n

h

(

x

)

d

x

=

1

(

t

a

n

h

(

x

)

)

2

\frac{\text d tanh(x)}{\text dx}=1-(tanh(x))^2

dxdtanh(x)=1(tanh(x))2

softmax函数及求导

sigmoid函数以及tanh函数的求导都是比较简单的,而softmax函数的求导则稍显复杂。详细求导过程详见我的另一篇博客softmax函数及交叉熵函数求导,这里只是总结三种函数的求导。
这里以神经网络多分类问题为例,假设输出层有

n

n

n个神经元,输出为

z

1

,

z

2

,

.

.

.

,

z

n

z_1,z_2,…,z_n

z1,z2,...,zn,经过softmax函数后的输出为

a

1

,

a

2

,

.

.

.

,

a

n

a_1,a_2,…,a_n

a1,a2,...,an

a

i

a_i

ai的计算公式为:

a

i

=

e

z

i

j

=

1

n

e

z

j

a_i=\frac{e^{z_i}}{\sum_{j=1}^{n}{e^{z_j}}}

ai=j=1nezjezi
假设真实标签为

y

1

,

y

2

,

.

.

.

,

y

n

y_1,y_2,…,y_n

y1,y2,...,yn,由于是分类问题,因此

y

i

y_i

yi的取值为0或1,并且

i

=

1

n

y

i

=

1

\sum_{i=1}^{n}y_i=1

i=1nyi=1。则交叉熵损失函数为:

L

(

a

,

y

)

=

i

n

y

i

ln

a

i

L(\bold{a},\bold{y})=-\sum_{i}^ny_i\ln a_i

L(a,y)=inyilnai
则其导数为:

L

z

i

=

a

i

y

i

\frac{\partial L}{\partial z_i}=a_i-y_i

ziL=aiyi


版权声明:本文为qq_38032064原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。