这是我的学习笔记,若有不足和错误之处,欢迎交流和指正,谢谢!
联系方式:lrcgnn@163.com
文章目录
1.推导反向传播过程
参考链接:https://blog.csdn.net/qq_32865355/article/details/80260212
2.常见的损失函数
参考链接:https://zhuanlan.zhihu.com/p/261059231
2.1 基于距离的损失函数
在上面的推导过程中采用了简单的均方误差损失函数(MSE),这种损失函数的标准形式为:
L
(
Y
∣
f
(
X
)
)
=
1
N
∑
i
=
1
N
(
Y
i
−
f
(
x
i
)
)
2
L(Y|f(X)) = \frac{1}{N}\sum_{i=1}^{N}(Y_i- f(x_i))^2
L(Y∣f(X))=N1i=1∑N(Yi−f(xi))2
还有一些其他的基于距离的损失函数:
L2损失函数,L2损失又被称为欧氏距离:
L
(
Y
∣
f
(
X
)
)
=
1
N
∑
i
=
1
N
(
Y
i
−
f
(
x
i
)
)
2
L(Y|f(X)) = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(Y_i- f(x_i))^2}
L(Y∣f(X))=N1i=1∑N(Yi−f(xi))2
L1损失函数,也称为曼哈顿距离:
L
(
Y
∣
f
(
X
)
)
=
∑
i
=
1
N
∣
(
Y
i
−
f
(
x
i
)
∣
L(Y|f(X)) = \sum_{i=1}^{N}| (Y_i- f(x_i) |
L(Y∣f(X))=i=1∑N∣(Yi−f(xi)∣
2.2 基于概率分布的损失函数
基于概率分布的损失函数是将样本之间的相似性转化为随机事件出现的概率,即度量样本真实分布和估计的分布之间的距离,通常应用于预测类别的问题中。
KL散度损失函数(相对熵)
L
(
Y
∣
f
(
x
)
)
=
∑
i
=
1
N
Y
i
l
o
g
(
Y
i
f
(
x
i
)
)
L(Y|f(x)) = \sum_{i=1}^NY_i \; log(\frac{Y_i}{f(x_i)})
L(Y∣f(x))=i=1∑NYilog(f(xi)Yi)
其中
Y
i
Y_i
Yi为真实的值,
f
(
x
)
f(x)
f(x)为模型预测值。
当KL散度越小时,两个分布之间的相似度越高。当且仅当两个分布相同时,相对熵为0。
交叉熵损失函数
L
(
Y
∣
f
(
x
)
)
=
−
∑
i
=
1
N
Y
i
l
o
g
(
f
(
x
i
)
)
L(Y|f(x)) = -\sum_{i=1}^NY_i log(f(x_i))
L(Y∣f(x))=−i=1∑NYilog(f(xi))
在很多分类任务中都使用交叉熵损失函数,特别是正负样本不均衡的分类问题。
当正负样本不均衡时,交叉熵损失函数前面通常会加个参数
α
\alpha
α。
L
(
Y
∣
f
(
x
)
)
=
−
1
N
∑
i
=
1
N
[
y
I
n
f
(
x
)
+
(
1
−
y
)
I
n
(
1
−
f
(
x
)
)
]
L(Y|f(x)) = -\frac{1}{N}\sum_{i=1}^N[y In f(x)+(1-y)In (1-f(x))]
L(Y∣f(x))=−N1i=1∑N[yInf(x)+(1−y)In(1−f(x))]
softmax损失函数
softmax损失函数的本质是将一个k维的任意实数向量x映射成另一个k维的实数向量,其中,输出向量中的每个元素的取值范围都是(0,1),即softmax损失函数输出每个类别的预测概率。通常适用于类间距离的优化,不适用类内距离的优化。
L
(
T
∣
f
(
x
)
)
=
−
1
N
∑
i
=
1
N
l
o
g
e
f
Y
i
∑
j
=
1
c
e
f
j
L(T|f(x)) = -\frac{1}{N}\sum_{i=1}^N log\frac{e^{f_{Y_i}}}{\sum_{j=1}^c e^{f_j}}
L(T∣f(x))=−N1i=1∑Nlog∑j=1cefjefYi
3.常见的激活函数
参考链接:https://www.cnblogs.com/missidiot/p/9378079.html
添加激活函数的目的是添加非线性因素,增强模型的表达能力,使得模型具有非线性映射学习能力。
上图来源爱数据学习社
3.1 Sigmoid函数
f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+e−x1
3.2 tanh函数
f ( x ) = 1 − e − 2 x 1 + e − 2 x f(x)=\frac{1-e^{-2x}}{1+e^{-2x}} f(x)=1+e−2x1−e−2x
3.3 ReLU函数
f ( x ) = { x , x > = 0 0 , x < 0 f(x)=\begin{cases} x, & x>=0\\ 0, & x <0 \end{cases} f(x)={x,0,x>=0x<0
ReLU函数在取值为正时,不存在饱和现象。
由于只存在线性关系,计算速度快。
然而当输入为负时,ReLU完全失效。
3.4 . Leaky ReLU
f ( x ) = { x , x > = 0 a x , x < 0 f(x)=\begin{cases} x, & x>=0\\ ax, & x <0 \end{cases} f(x)={x,ax,x>=0x<0
4.torch中常见的损失函数
待补充