深度学习中的非线性函数
Norm 类
BatchNorm函数
层归一化,稳定训练并提升模型收敛性
对一个样本所有特征计算均值和方法,然后对样本进行归一化
μ
=
1
H
∑
i
=
1
H
x
i
,
σ
=
1
H
∑
i
=
1
H
(
x
i
−
μ
)
2
\mu=\frac{1}{H}\sum\limits_{i=1}^{H}x_{i},\ \sigma=\sqrt{\frac{1}{H}\sum\limits_{i=1}^{H}(x_{i}-\mu)^{2}}
μ=H1i=1∑Hxi, σ=H1i=1∑H(xi−μ)2
其中,
N
(
x
)
=
x
−
μ
σ
,
h
=
g
⊙
N
(
x
)
+
b
\text{其中,}N(x)=\frac{x-\mu}{\sigma},\ h=g\ \odot\ N(x)+b
其中,N(x)=σx−μ, h=g ⊙ N(x)+b
向量维度为H,g、b为可学习的两个参数
RMSNorm
Root Mean Square Layer Normalization proposed in this paper
x
i
‾
=
x
i
R
M
S
(
x
)
g
i
,
R
M
S
(
x
)
=
1
H
∑
i
=
1
H
x
i
2
\overline{x_{i}}=\frac{x_{i}}{RMS(x)}g_{i},\ \ RMS(x)=\sqrt{\frac{1}{H}\sum\limits_{i=1}^{H}x_{i}^{2}}
xi=RMS(x)xigi, RMS(x)=H1i=1∑Hxi2
LLama 模型 引入的 RMSNorm
激活函数
GeLU函数
实际计算时一般将其进行计算,比如:
G
E
L
U
(
x
)
=
0.5
×
x
×
(
1
+
T
a
n
h
(
2
π
×
(
x
+
0.044715
×
x
3
)
)
)
GELU(x)=0.5\times x\times \left(1+Tanh\left(\sqrt{\frac{2}{\pi}}\times (x+0.044715\times x^{3})\right)\right)
GELU(x)=0.5×x×(1+Tanh(π2×(x+0.044715×x3)))
或者近似为
G
E
L
U
(
x
)
=
x
×
σ
(
1.702
×
x
)
=
x
×
e
1.702
x
1
+
e
1.702
x
GELU(x)=x\times \sigma(1.702\times x)=\frac{x\times e^{1.702x}}{1+e^{1.702x}}
GELU(x)=x×σ(1.702×x)=1+e1.702xx×e1.702x
σ
(
x
)
=
1
1
+
e
−
x
=
e
x
1
+
e
x
\sigma(x)=\frac{1}{1+e^{-x}}=\frac{e^{x}}{1+e^{x}}
σ(x)=1+e−x1=1+exex
函数图像:
SiLU函数
s i l u ( x ) = x ∗ σ ( x ) silu(x)=x*\sigma(x) silu(x)=x∗σ(x)
其中, σ ( x ) \sigma(x) σ(x) 为 Sigmoid函数
函数图像: