几类常见的**函数——$ReLU$函数、$sigmiod$ 函数、$tanh$ 函数
背景介绍:
对于常见线性回归和 s o f t m a x softmax softmax 单层神经网络,在深度学习中的多层神经网络都可以对带有隐藏层的多层感知机,其中的一至多个隐藏层经过非线性变换等价于一个单层的神经网络;常⽤的**函数包括 R e L U ReLU ReLU 函数、 s i g m o i d sigmoid sigmoid 函数和 t a n h tanh tanh 函数。
数学推导
一个小批量样本
X
X
X
∈
\in
∈
R
m
∗
n
R^{m*n}
Rm∗n,其中批量大小为
n
n
n,输入个数为
d
d
d,假设多层感知机有一个隐藏层,其中隐藏单元个数为
h
h
h,其中 H 为隐藏层的输出,由于隐藏层和输出层均是全连接层,可以假设隐藏层的权重参数和偏差参数分别为
W
h
W_{h}
Wh
∈
\in
∈
R
d
∗
h
R^{d*h}
Rd∗h 和
b
n
b_{n}
bn
∈
\in
∈
R
1
∗
h
R^{1*h}
R1∗h,输出层的权重和偏差参数分别为
W
o
W_{o}
Wo
∈
\in
∈
R
h
∗
q
R^{h*q}
Rh∗q 和
b
o
b_{o}
bo
∈
\in
∈
R
n
∗
q
R^{n*q}
Rn∗q。
我们计算含单隐藏层的输出
O
O
O
∈
\in
∈
R
n
∗
q
R^{n*q}
Rn∗q为:
H
=
X
W
h
+
b
n
H = XW_{h} + b_{n}
H=XWh+bn
O
=
H
W
o
+
b
o
O = HW_{o} + b_{o}
O=HWo+bo
将第 1 个表达式代入到第二个表达式:
O
=
(
X
W
h
+
b
h
)
W
o
+
b
o
=
X
W
h
W
o
+
b
h
W
o
+
b
o
O = (XW_{h}+b_{h})W_{o} + b_{o} = XW_{h}W_{o}+ b_{h}W_{o} + b_{o}
O=(XWh+bh)Wo+bo=XWhWo+bhWo+bo
不难可以看出虽然神经网络引入了隐藏层,但依然等价于一个单层的神经网络:其中输出层权重参数为
W
h
W
o
W_{h}W_{o}
WhWo,偏差参数为
b
h
W
o
+
b
o
b_{h}W_{o}+b_{o}
bhWo+bo。
**函数
R e L U 函 数 ReLU函数 ReLU函数: 简单的非线性变换,仅保留正数元素,
R e L u ( x ) = m a x ( x , 0 ) ReLu (x) = max(x,0) ReLu(x)=max(x,0)
s i g m o i d 函 数 sigmoid函数 sigmoid函数: 将元素的值变换到0 和1 之间的非线性变换,
s
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
sigmoid(x) = \frac{1}{1+e^{-x}}
sigmoid(x)=1+e−x1
t a n h 函 数 tanh函数 tanh函数: 将元素的值变换到 -1 和 1 之间的非线性变换,
t
a
n
h
(
x
)
=
1
−
e
−
2
x
1
+
e
2
x
tanh(x) = \frac{1 - e^{-2x}}{1 + e^{2x}}
tanh(x)=1+e2x1−e−2x