文章目录
- 说明
- 通用BP神经网络之激活函数
- 1. 激活函数
- 2. 激活函数分类
- 1.1 反正切函数(ArcTan)
- 1.2 指数线性函数(ELU)
- 1.3 恒等函数
- 1.4 泄漏线性整流函数(LEAKY_RELU)
- 1.5 softsign
- 1.6 softplus
- 1.7 Relu函数
- 1.8 sigmoid函数
- 1.9 双曲正切函数(tanh)
- 1.10 Binary step函数
- 1.11 ISRU函数
- 1.12 Swish函数
说明
闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客
自己也把手敲的代码放在了github上维护:https://github.com/fulisha-ok/sampledata
通用BP神经网络之激活函数
1. 激活函数
激活函数就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端(百度百科的解释)即可以理解为在神经网络的每个层中,激活函数对输入信号进行处理,并生成输出信号
上面这张图应该不陌生,我在上一篇文章中也用到过。
激活函数大多数都是非线性函数(通过下面的图像也可以感受到),通过使用非线性激活函数,神经网络可以引入非线性特性,从而使得网络能够学习和表示更加复杂的函数关系(但这句话就我目前来说我不能很深刻的理解)
2. 激活函数分类
随着学习会慢慢增加
1.1 反正切函数(ArcTan)
- 公式
f ( x ) = t a n − 1 ( x ) f(x) = tan^{-1}(x) f(x)=tan−1(x)
f ′ ( x ) = 1 1 + x 2 f'(x)=\frac{1}{1+x^2} f′(x)=1+x21 - 图像
1.2 指数线性函数(ELU)
f
(
x
)
=
{
α
(
e
x
−
1
)
,
x
<
0
x
,
x
≥
0
f(x) = \begin{cases} \alpha(e^{x}-1), & x<0 \\ x,&x\geq 0 \\ \end{cases}
f(x)={α(ex−1),x,x<0x≥0
f
′
(
x
)
=
{
α
e
x
,
x
<
0
1
,
x
≥
0
f'(x) = \begin{cases} \alpha e^{x}, & x<0 \\ 1,&x\geq 0 \\ \end{cases}
f′(x)={αex,1,x<0x≥0
- 图像
1.3 恒等函数
- 公式
f ( x ) = x f(x)=x f(x)=x
f ′ ( x ) = 1 f'(x)=1 f′(x)=1 - 图像
1.4 泄漏线性整流函数(LEAKY_RELU)
f
(
x
)
=
{
λ
x
,
x
<
0
x
,
x
≥
0
f(x) = \begin{cases} \lambda x, & x<0 \\ x,&x\geq 0 \\ \end{cases}
f(x)={λx,x,x<0x≥0
f
′
(
x
)
=
{
λ
,
x
<
0
1
,
x
≥
0
f'(x) = \begin{cases} \lambda, & x<0 \\ 1,&x\geq 0 \\ \end{cases}
f′(x)={λ,1,x<0x≥0
- 图像
1.5 softsign
- 公式
f ( x ) = 1 1 + ∣ x ∣ f(x) = \frac{1}{1 + |x|} f(x)=1+∣x∣1
f ′ ( x ) = { 1 ( 1 + x ) 2 , x ≥ 0 1 ( 1 − x ) 2 , x < 0 f'(x) = \begin{cases} \frac{1}{(1 + x)^2},&x\geq 0 \\ \frac{1}{(1 - x)^2}, & x<0 \\ \end{cases} f′(x)={(1+x)21,(1−x)21,x≥0x<0 - 图像
1.6 softplus
- 公式
f ( x ) = log ( 1 + e x ) f(x)=\log(1+e^{x}) f(x)=log(1+ex)
f ′ ( x ) = 1 1 + e − x f'(x)=\frac{1}{1+e^{-x}} f′(x)=1+e−x1 - 图像
1.7 Relu函数
-
公式
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)
f ′ ( x ) = { 1 , x ≥ 0 0 , x < 0 f'(x) = \begin{cases} 1,&x\geq 0 \\ 0, & x<0 \\ \end{cases} f′(x)={1,0,x≥0x<0 -
图像
1.8 sigmoid函数
- 公式
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1+e^{-x}} f(x)=1+e−x1
f ′ ( x ) = e − x ( 1 + e − x ) 2 = f ( x ) ( 1 − f ( x ) ) f'(x) = \frac{e^{-x}}{(1+e^{-x})^2}=f(x)(1-f(x)) f′(x)=(1+e−x)2e−x=f(x)(1−f(x)) - 图像
1.9 双曲正切函数(tanh)
- 公式
f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x-e^{-x}}{e^x + e^{-x}} f(x)=ex+e−xex−e−x
f ′ ( x ) = 1 − f ( x ) 2 f'(x) = 1-f(x)^2 f′(x)=1−f(x)2 - 图像
1.10 Binary step函数
-
公式
f ( x ) = { 1 , x ≥ 0 0 , x < 0 f(x) = \begin{cases} 1,&x\geq 0 \\ 0, & x<0 \\ \end{cases} f(x)={1,0,x≥0x<0 -
图像
1.11 ISRU函数
- 公式
f ( x ) = x 1 + α x 2 f(x) = \frac{x}{\sqrt{1 + \alpha x^2}} f(x)=1+αx2x
f ′ ( x ) = ( 1 1 + α x 2 ) 3 f'(x) =(\frac{1}{\sqrt{1 + \alpha x^2}})^3 f′(x)=(1+αx21)3 - 图像
1.12 Swish函数
f ( x ) = x 1 + e − k x = x ∗ S i g m o i d ( k x ) f(x) = \frac{x}{1+e^{-kx}} = x*Sigmoid(kx) f(x)=1+e−kxx=x∗Sigmoid(kx)
f ′ ( x ) = k f ( x ) + S i g m o i d ( k x ) ( 1 − k f ( x ) ) f'(x) = kf(x) + Sigmoid(kx)(1-kf(x)) f′(x)=kf(x)+Sigmoid(kx)(1−kf(x))
- 图像