🚀 作者 :“码上有前”
🚀 文章简介 :AI-损失函数&激活函数&学习率策略
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬

平均绝对误差(Mean Absolute Error,MAE):是预测值与真实值之间的差的绝对值的平均值。
MAE
=
1
n
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
\text{MAE} = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|
MAE=n1i=1∑n∣yi−y^i∣
其中,
n
n
n为样本数量,
y
i
y_i
yi为第
i
i
i个样本的真实值,
y
^
i
\hat{y}_i
y^i为第
i
i
i个样本的预测值。
均方误差(Mean Squared Error,MSE):是预测值与真实值之间差的平方再求平均值。
MSE
=
1
n
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2
MSE=n1i=1∑n(yi−y^i)2
交叉熵损失函数(Cross Entropy Loss): 对于分类问题,常用交叉熵作为损失函数。交叉熵表示模型对于真实标签的拟合程度,值越小说明模型拟合效果越好。
cross-entropy
(
y
,
y
^
)
=
−
∑
c
=
1
C
(
y
c
×
log
(
y
^
c
)
)
\text{cross-entropy}(y, \hat{y}) = -\sum_{c=1}^{C}(y_c × \log(\hat{y}_c))
cross-entropy(y,y^)=−c=1∑C(yc×log(y^c))
其中,
y
y
y是真实标签的one-hot编码,
y
^
\hat{y}
y^是模型预测出来的结果概率分布,
c
c
c代表类别数。
对数损失函数(Log Loss): 在概率论与统计学中,对数损失是一种经常用来评估二分类问题(binary classification)的逻辑回归模型的性能的函数。
logloss
=
−
∑
i
=
1
n
[
y
i
×
log
(
y
^
i
)
+
(
1
−
y
i
)
×
log
(
1
−
y
^
i
)
]
\text{logloss} = - \sum_{i=1}^{n}[y_i × \log(\hat{y}_i) + (1-y_i) × \log(1-\hat{y}_i)]
logloss=−i=1∑n[yi×log(y^i)+(1−yi)×log(1−y^i)]
KL散度(KL Divergence):在信息论中,KL散度表示两个分布之间的差异。在机器学习中,可以使用KL散度作为损失函数来衡量两个概率分布的相似程度。
K
L
(
p
∣
∣
q
)
=
{
∑
i
p
(
x
i
)
⋅
log
(
p
(
x
i
)
q
(
x
i
)
)
if
x
i
∈
X
∫
p
(
x
)
⋅
log
(
p
(
x
)
q
(
x
)
)
d
x
if
x
∈
R
KL(p || q) = {∑ip(xi)⋅log(p(xi)q(xi))if xi∈X∫p(x)⋅log(p(x)q(x))dxif x∈R
交叉熵损失函数(Cross Entropy Loss)
C
E
_
L
o
s
s
(
t
)
=
−
∑
i
=
1
n
t
i
log
(
s
i
g
m
o
i
d
(
o
i
)
)
+
(
1
−
t
i
)
log
(
1
−
s
i
g
m
o
i
d
(
o
i
)
)
CE\_Loss(t) = -\sum_{i=1}^n t_i \log(sigmoid(o_i)) + (1-t_i)\log(1-sigmoid(o_i))
CE_Loss(t)=−i=1∑ntilog(sigmoid(oi))+(1−ti)log(1−sigmoid(oi))
其中,
t
i
t_i
ti代表标签值是1或0,
o
i
o_i
oi代表模型预测出的标签值。
softmax 函数
它是 sigmoid 函数的推广版本,能够处理多分类问题。softmax函数用于将一个K维的实数向量映射到(0,1)之间的K维向量,并且使得这个K维向量上的元素值和为1。
对数似然损失(Log-Likelihood Loss)
L
L
(
x
,
y
)
=
∑
i
=
1
N
y
i
log
(
y
^
i
)
+
(
1
−
y
i
)
log
(
1
−
y
^
i
)
LL(x,y) = \sum^{N}_{i=1}y_i\log (\hat{y}_i) + (1-y_i)\log (1-\hat{y}_i)
LL(x,y)=i=1∑Nyilog(y^i)+(1−yi)log(1−y^i)
Hinge Loss
H
i
n
g
e
(
z
)
=
m
a
x
(
0
,
1
−
z
)
Hinge(z)=max(0, 1-z)
Hinge(z)=max(0,1−z)
指数损失(Exponential Loss)
E
L
(
z
)
=
e
−
z
EL(z)=e^{-z}
EL(z)=e−z
Log均方误差(Log-Cosh loss)
H
(
y
,
t
)
=
1
N
∑
n
=
1
N
(
log
cosh
(
y
n
−
t
n
)
)
H(y,t)={\frac {1}{N}}\sum_{n=1}^{N}\left(\log\cosh(y_n-t_n)\right)
H(y,t)=N1n=1∑N(logcosh(yn−tn))
互信息(Mutual Information)
I
(
X
;
Y
)
=
∑
x
∑
y
p
(
x
,
y
)
log
2
p
(
x
,
y
)
p
(
x
)
p
(
y
)
I(X;Y) = \sum_x \sum_y p(x,y) \log_2{\frac{p(x,y)}{p(x)p(y)}}
I(X;Y)=x∑y∑p(x,y)log2p(x)p(y)p(x,y)
GAN的损失函数是生成器和判别器的损失函数的加和。
l
o
s
s
=
α
×
g
e
n
e
r
a
t
o
r
_
l
o
s
s
(
y
_
p
r
e
d
,
y
_
r
e
a
l
)
+
(
1
−
α
)
×
g
a
n
_
l
o
s
s
(
d
_
r
e
a
l
,
d
_
f
a
k
e
)
loss = \alpha \times generator\_loss(y\_pred, y\_real) + (1-\alpha) \times gan\_loss(d\_real, d\_fake)
loss=α×generator_loss(y_pred,y_real)+(1−α)×gan_loss(d_real,d_fake)
其中, α \alpha α 是两个损失函数的权重系数,在训练过程中可以调整。
线性激活函数:f(x) = x
隐含层和输出层通常使用sigmoid函数、relu函数、tanh函数
sigmoid函数: σ ( z ) = 1 1 + e − z \sigma (z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1
双曲正切函数: t a n h ( z ) = e 2 z − 1 e 2 z + 1 tanh(z)=\frac{e^{2z}-1}{e^{2z}+1} tanh(z)=e2z+1e2z−1
RELU函数
R
E
L
U
(
x
)
=
{
0
(
x
,
<
=
0
)
x
(
x
>
0
)
RELU(x) = \left\{ 0(x,<=0)x(x>0)
Leaky Relu
ELU
提升方法中的学习率调整:
减小学习速率的下降策略
| 方法 | 优点 | 缺点 |
|---|---|---|
| 变化学习率 | 在训练的初期使用较大的学习率,当模型训练到一定程度的时候,使用较小的学习率。 | 需要每个epoch结束调整,且需要手动测试 |
| 余弦退火 | 优化目标函数不是全局凸性问题,如果没有精确的LR或没有足够的数据,会导致峰值出现在错误的位置上。 | |
| 指数衰减 | 衰减速度高,只要迭代次数足够多,就能把后期的分类效果控制的很好。 | 引入了一个超参数 α \alpha α,同时学习率不能设定得过大。 |
| 根据训练次数和当前轮数动态调整学习率 | 逐渐随机地减小学习率 |