赞
踩
KaTeX 是一个快速为网站呈现 Tex 科学公式的简单易用的库,通过它我们可以方便快速的书写公式。KaTeX由关键词(标签)和其作用的参数所构成,每个关键词(标签)参数的作用域都只有一个字符,如果想要作用到多个字符,必须用{}将其括起来,不然只会作用到第一个字符。在书写时,代码应当放在$ $
之间,如果想要公式居中,则把代码放在$$ $$
之间。本文借着学习KaTeX的契机,把神经网络中激活函数都整理了一遍,包括其KaTeX代码,用途性能和曲线。文中做成的公式模板,可以直接迁移到需要类似公式的地方,只需修改一些字符,而不用重新写公式。
主要参考资料:KaTex文档,邱锡鹏教授的《神经网络与深度学习》
copyright © 意疏:https://blog.csdn.net/sinat_35907936/article/details/114823102
起初的感知机模型用的阶跃函数做的非线性激活函数。它可以增加模型的非线性,但在0处不可导,并且其余地方导数全为零,无法通过反向传播更新权值。现在基本不使用。
$$
\tag 1
f(x) = \begin{dcases}
0&x \le 0\\
1&x>0
\end{dcases}
$$
f
(
x
)
=
{
0
x
≤
0
1
x
>
0
(1)
\tag 1 f(x) =
敲黑板,记笔记
\begin{}
与\end{}
组合是用来表示阵列,数组,分支等有几行几列的式子的,如下图所示,图源。具体什么形式,由其{}
中的关键词决定,列与列之间用&
连接,行与行之间用\\
连接,比如
a
b
c
d
$\begin{matrix} a&b \\ c&d\end{matrix}$
。公式标号用\tag
。小于等于用\le
。
Sigmoid函数又叫Logistic函数,它来源于一个人口统计模型。它把实数域的输入映射成了(0,1),可以直接看成是概率分布,如在逻辑回归中,就直接把它的输出视为正类的概率。它形状与阶跃函数类似,但是它处处可导,能够通过反向传播由后往前传递梯度,不过它两端饱和处导数接近零,且导数最大值也只有1/4,容易出现梯度消失。最后,值得一提的是,它类似阶跃的特性可以用于门控,控制其他神经元输出信息的量,如在LSTM中就用的sigmoid来控制记忆或者遗忘的信息的多少。
$$
\tag{2}
\sigma (x)=\cfrac 1 {1+e^{-x}}
$$
$$
\tag{3}
1-\sigma (x)=\cfrac {e^{-x}} {1+e^{-x}}
$$
$$
\tag{4}
\acute{\sigma(x)}=\sigma (x)*(1-\sigma(x))
$$
σ ( x ) = 1 1 + e − x (2) \tag{2} \sigma (x)=\cfrac 1 {1+e^{-x}} σ(x)=1+e−x1(2)
1 − σ ( x ) = e − x 1 + e − x (3) \tag{3} 1-\sigma (x)=\cfrac {e^{-x}} {1+e^{-x}} 1−σ(x)=1+e−xe−x(3)
σ ( x ) ˊ = σ ( x ) ∗ ( 1 − σ ( x ) ) (4) \tag{4} \acute{\sigma(x)}=\sigma (x)*(1-\sigma(x)) σ(x)ˊ=σ(x)∗(1−σ(x))(4)
敲黑板,记笔记
KaTex里的除号可以用下表中的语法表示,图源,frac
来自于单词Fractions
,意思是分数。笔者觉得知道\frac
和\cfrac
就基本足够了。而且从效果上来讲,后者只是字号大了一些。导数中间的'
用\acute
。\sigma
表示
σ
\sigma
σ
tanh函数可以通过sigmoid函数平移和伸缩而得到,因此与sigmoid函数有很相似的性质。不过它的值域在(-1,1),输出均值为零,即是零中心化的输出,会降低后一层神经元输入的偏置偏移,有利于收敛。tanh在循环神经网络中常作为激活函数。
$$ \tag 5 f(x) = 2\sigma(2x)-1 $$ $$ \tag 6 f(x) =\cfrac {sinh(x)} {cosh(h)} =\cfrac {e^x-e^{-x}} {e^x+e^{-x}} $$ $$ \tag 7 \acute {f(x)} =sech^2(x)=1-f(x)^2 $$
f ( x ) = 2 σ ( 2 x ) − 1 (5) \tag 5 f(x) = 2\sigma(2x)-1 f(x)=2σ(2x)−1(5)
f ( x ) = s i n h ( x ) c o s h ( h ) = e x − e − x e x + e − x (6) \tag 6 f(x) =\cfrac {sinh(x)} {cosh(h)} =\cfrac {e^x-e^{-x}} {e^x+e^{-x}} f(x)=cosh(h)sinh(x)=ex+e−xex−e−x(6)
f ( x ) ˊ = s e c h 2 ( x ) = 1 − f ( x ) 2 (7) \tag 7 \acute {f(x)} =sech^2(x)=1-f(x)^2 f(x)ˊ=sech2(x)=1−f(x)2(7)
copyright © 意疏:https://blog.csdn.net/sinat_35907936/article/details/114823102
修正线性单元,最常用的激活函数之一。输入为负时,完全抑制,输入为正时,原样输出。梯度为定值,计算效率高。每次都有神经元的输出被抑制,使得网络连接稀疏的,不过在训练过程中如果某些神经元一直被抑制,会导致这些神经元“死亡”。另外,它的输出是非零中心化的,给后一层的神经元输入引入偏置偏移,影响梯度下降的效率。估计BN就是用来解决这个问题的。
$$ \tag 8 f(x) = max(0,x) $$ $$ \tag 9 f(x)= \begin{dcases} 0 & x < 0 \\ x & x \ge 0 \end{dcases} $$ $$ \tag 10 \acute {f(x)}= \begin{dcases} 0 & x < 0 \\ 1 & x \ge 0 \end{dcases} $$
f ( x ) = m a x ( 0 , x ) (8) \tag 8 f(x) = max(0,x) f(x)=max(0,x)(8)
f
(
x
)
=
{
0
x
<
0
x
x
≥
0
(9)
\tag 9 f(x)=
f
(
x
)
ˊ
=
{
0
x
<
0
1
x
≥
0
(10)
\tag {10} \acute {f(x)}=
ReLU的变种主要是在负半轴保留了一定的斜率,这样其它在负半轴也会存在梯度,使得所有神经元都能有机会更新参数而避免“死亡”。LeakeyReLU,PReLU,RReLU三者在形式上完全相同,负半轴都是线性函数,只是斜率取值方式不相同。ELU负半轴是用一个指数函数代替,处处可导,但计算复杂度比线性函数高。softplus函数用对数和指数的复合来近似ReLU,处处可导,但计算复杂度要高不少。在ReLU变种中,用的最多的应该是LeakeyReLU。
$$
\tag {11}
LeakyReLU(x) = \begin{dcases}
x&x>0\\
\gamma x&x \le 0
\end{dcases}
= max(x,0) + \gamma min(x,0)
$$
$$
\tag {12}
LeakyReLU = max(x,\gamma x)
$$
L
e
a
k
y
R
e
L
U
(
x
)
=
{
x
x
>
0
γ
x
x
≤
0
=
m
a
x
(
x
,
0
)
+
γ
m
i
n
(
x
,
0
)
(11)
\tag {11} LeakyReLU(x) =
由于
γ
\gamma
γ一般是小于1的常数,所以上式可以统一为:简单的maxout单元。最常用的激活函数之一。
L
e
a
k
y
R
e
L
U
=
m
a
x
(
x
,
γ
x
)
(12)
\tag {12} LeakyReLU = max(x,\gamma x)
LeakyReLU=max(x,γx)(12)
$$
\tag {13}
PReLU(x) = \begin{dcases}
x & x>0 \\
\alpha x & x \le 0
\end{dcases}
=max(x,0)+\alpha min(x,0)
$$
PReLU与LeakyReLU形式完全一样,只是
α
\alpha
α是一个可学习的参数, P是parameter的首字母。我们可以给每个神经元不同的
α
\alpha
α值,也可以让所有神经元共享一个
α
\alpha
α值。
P
R
e
L
U
(
x
)
=
{
x
x
>
0
α
x
x
≤
0
=
m
a
x
(
x
,
0
)
+
α
m
i
n
(
x
,
0
)
(13)
\tag {13} PReLU(x) =
$$
\tag {14}
RReLU(x) = \begin{dcases}
x & x>0\\
\beta x & x \le 0
\end{dcases}
=max(0,x) + \beta min(0,x)
$$
R是random的首字母。
β
\beta
β是一定范围内的随机数。平常用的比较少,可以了解。
R
R
e
L
U
(
x
)
=
{
x
x
>
0
β
x
x
≤
0
=
m
a
x
(
0
,
x
)
+
β
m
i
n
(
0
,
x
)
(14)
\tag {14} RReLU(x) =
$$
\tag {15}
ELU(x) = \begin{dcases}
x&x>0\\
\mu (e^x - 1) & x \le 0
\end{dcases}
$$
μ
\mu
μ是超参数,它决定了在
x
≤
0
x \le 0
x≤0时的饱和曲线,我们可以通过调整
μ
\mu
μ来使得激活函数的输出均值在0附近,即零中心化。平常用的比较少,可以了解。
E
L
U
(
x
)
=
{
x
x
>
0
μ
(
e
x
−
1
)
x
≤
0
(15)
\tag {15} ELU(x) =
$$
\tag {16}
Softplus(x) = ln(1+e^x)
$$
Softplus是ReLU的平滑近似,从式(16)中我们可以看出,当输入趋于负无穷的时候,函数输出趋近
l
n
(
1
)
=
0
ln(1)=0
ln(1)=0,当输入趋于正无穷的时候,函数输出趋近与
l
n
(
e
x
)
=
x
ln(e^x)=x
ln(ex)=x。
S
o
f
t
p
l
u
s
(
x
)
=
l
n
(
1
+
e
x
)
(16)
\tag {16} Softplus(x) = ln(1+e^x)
Softplus(x)=ln(1+ex)(16)
敲黑板,记笔记
上述公式中涉及到一些希腊字母,如
β
α
γ
μ
\beta \alpha \gamma \mu
βαγμ,$\beta \alpha \gamma \mu$
,他们由\
+字母名构成,如下图所示,图源。
copyright © 意疏
上述的激活函数都是对前一层单个神经元的输出做非线性映射n->n,但是Maxout是对多个输出先做线性变换Z,然后取变换后的最大值作为maxout的输出n->1,结构图如下图所示,图源。maxout的非线性体现在求最大值处。它包含很多参数,平常用的较少。
$$
\tag {17}
Z_i=\bold W_i^T \bold X+b_i
$$
$$
\tag {18}
maxout(x) =
\max_{i\in[1,n]} (Z_i)
$$
Z i = W i T X + b i (17) \tag {17} Z_i=\bold W_i^T \bold X+b_i Zi=WiTX+bi(17)
m a x o u t ( x ) = max i ∈ [ 1 , n ] ( Z i ) (18) \tag {18} maxout(x) = \max_{i\in[1,n]} (Z_i) maxout(x)=i∈[1,n]max(Zi)(18)
maxout的每一个线性变换都有n+1个参数,表征一个n维超平面。多个超平面上方的交集是一个凸集,其下界就是maxout函数,是一个分段的凸函数。通过改变Z,它可以近似表示任何已知的凸函数。在一维时,maxout函数由多条直线分段拼接而成,如下图所示,图源,显然,这一个分成三段的凸函数。
敲黑板,记笔记
上述属于符号
∈
\in
∈,在KaTex被归纳到了关系运算符中,其他的关系运算符,相似符号
∼
\sim
∼$\sim$
、远小于号
≪
\ll
≪$\ll$
,约等于号
≈
\thickapprox
≈$\thickapprox$
等也可以在那里找到。
Swish由线性函数 x x x和sigmoid函数构成,通过可学习参数或者超参数 β \beta β来调控函数的形态,当 β = 0 \beta=0 β=0时,Swish退变成线性函数 1 2 x \cfrac 1 2 x 21x,当 β \beta β趋近于正无穷时,Swish将非常近似ReLU,取适中的值时,就类似于ReLU变种,如下图所示,图源。由于Sigmoid函数有门控作用,所以swish是一种自门控激活函数。
$$
\tag {19}
Swish(x) = x \sigma(\beta x)
$$
S w i s h ( x ) = x σ ( β x ) (19) \tag {19} Swish(x) = x \sigma(\beta x) Swish(x)=xσ(βx)(19)
copyright © 意疏:https://blog.csdn.net/sinat_35907936/article/details/114823102
https://katex.org/docs/supported.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。