Backto ML Index
Loss function 损失函数 | description 描述 | Scenes 使用问题 |
---|---|---|
MAE | Mean Absolute Error L ( y ^ , y ) = 1 n ∑ i n ∣ y i − y i ^ ∣ L(\hat y, y)= \frac 1 n\sum_i^n{ \vert y_i - \hat {y_i} \vert} L(y^,y)=n1i∑n∣yi−yi^∣ | Regression |
MSE | Mean Squared Error L ( y ^ , y ) = 1 n ∑ i n ( y i − y i ^ ) 2 L(\hat y, y)= \frac 1 n\sum_i^n{ (y_i - \hat {y_i})^2} L(y^,y)=n1i∑n(yi−yi^)2 | Regression |
Entropy Loss | L ( y ^ , y ) = − 1 n ∑ i n ( y i ln y i ^ + ( 1 − y i ) ln ( 1 − y i ^ ) ) L(\hat y, y)= - \frac 1 n \sum_i^n({ y_i\ln \hat {y_i}} + (1-y_i)\ln {(1-\hat{y_i})}) L(y^,y)=−n1i∑n(yilnyi^+(1−yi)ln(1−yi^)) | classification |
Hinge Loss | L o s s = ∑ j ≠ y i max ( 0 , s j − s y i + 1 ) Loss = \sum_{j \neq y_i} \max (0, s_j - s_{y_i} + 1) Loss=j̸=yi∑max(0,sj−syi+1) | classification |
Cross Entropy Loss
交叉熵损失函数,完整形式为 L ( y ^ , y ) = − 1 n ∑ i ( y i ln y i ^ + ( 1 − y i ) ln ( 1 − y i ^ ) ) L(\hat y, y)= - \frac 1 n \sum_i({ y_i\ln \hat {y_i}} + (1-y_i)\ln {(1-\hat{y_i})}) L(y^,y)=−n1i∑(yilnyi^+(1−yi)ln(1−yi^)). 当真实 label 的值 y i = 0 y_i = 0 yi=0 的情况下,前半部分消失,当 y i = 1 y_i = 1 yi=1的情况下,后半部分消失。
Cross Entropy Loss
有两个特性:
- 非负性。我们的目标是最小化 L, 也就是逼近 0
- 当网络输出 y ^ \hat y y^ 与 事实label y y y 很接近的时候,即准确性很高的时候,L 的值都接近 0. 非常理想的情况。
这两个特性也是我们设计 Cross Entropy Loss
的初衷。
再看BP 中的导数计算,已知
y
^
=
δ
(
z
)
,
z
=
∑
i
ω
i
x
i
+
b
\hat y = \delta(z), z = \sum_i \omega_i x_i + b
y^=δ(z),z=i∑ωixi+b
对于单个神经元而言,
L
(
y
^
,
y
)
=
−
(
y
ln
y
^
+
(
1
−
y
)
ln
(
1
−
y
^
)
)
L(\hat y,y) = -(y\ln \hat y + (1-y) \ln (1-\hat y))
L(y^,y)=−(ylny^+(1−y)ln(1−y^))
(TODO: 待补充,with Andrew Ng)
Hinge Loss
hinge loss 常用于最大间隔分类(maximum-margin classification),最常用的是SVM。
基本思路是 :在一定的安全间隔内(通常是 1),正确类别的分数应高于所有错误类别的分数之和。
Hinge Loss不可微,但它是一个凸函数,因此可以轻而易举地使用机器学习领域中常用的凸优化器。
L o s s = ∑ j ≠ y i max ( 0 , s j − s y i + 1 ) Loss = \sum_{j \neq y_i} \max (0, s_j - s_{y_i} + 1) Loss=j̸=yi∑max(0,sj−syi+1)
举例:
以下是分类器在三个样本(Image #1,#2, #3)上对于三个类别(Dog/Cat/Horse)预测的结果,哪个好,哪个坏呢?通过 Hinge Loss 计算一哈
## 1st training example
max(0, (1.49) - (-0.39) + 1) + max(0, (4.21) - (-0.39) + 1)
max(0, 2.88) + max(0, 5.6)
2.88 + 5.6
8.48 (High loss as very wrong prediction)
## 2nd training example
max(0, (-4.61) - (3.28)+ 1) + max(0, (1.46) - (3.28)+ 1)
max(0, -6.89) + max(0, -0.82)
0 + 0
0 (Zero loss as correct prediction)
## 3rd training example
max(0, (1.03) - (-2.27)+ 1) + max(0, (-2.37) - (-2.27)+ 1)
max(0, 4.3) + max(0, 0.9)
4.3 + 0.9
5.2 (High loss as very wrong prediction)
Ref
- 机器学习中常用的损失函数你知多少?
- 交叉熵代价函数:说的很详细