概述
我在分析手写体识别源代码时,发现损失函数可以用更简单的形式代替。从第一感觉上看,只要不犯愚蠢的错误,损失函数总会驱使模型朝着提升识别精度的方向前进,似乎没必要把损失函数搞得太复杂。但是,仔细思考一下,发现其中还是有些门道的。关键在于,模型的最优解最终落在什么位置,这个和损失函数定义绝对有关系。
我们分析一个最简单的例子:考虑一维空间的二分类问题,负样本 x 1 = − 1 x_1=-1 x1=−1,正样本 x 2 = 1 x_2=1 x2=1。答案显而易见,最优分类方法是用一维空间的”超平面” x = 0 x = 0 x=0分割一维实数轴即可。参见下图:
令分类模型为
x
=
k
x = k
x=k, 如果我们定义 loss 函数为下面的形式:
l
o
s
s
(
w
)
=
∣
k
−
x
1
∣
+
∣
k
−
x
2
∣
loss(w) = |k-x_1|+|k-x_2|
loss(w)=∣k−x1∣+∣k−x2∣
这并不是一个很好的损失函数定义方法,后面我们会讨论分类问题的损失函数应该如何定义,这里仅仅是论述损失函数的定义方式对结果的影响。把绝对值符号去掉,不难得出
l
o
s
s
(
w
)
=
{
2
,
−
1
≤
w
≤
1
∣
2
x
∣
,
o
t
h
e
r
s
loss(w)= begin{cases} 2, & -1le wle1\ |2x|, & others end{cases}
loss(w)={2,∣2x∣,−1≤w≤1others
函数图像如下:
显然,当 − 1 ≤ w ≤ 1 -1le wle 1 −1≤w≤1 时, loss 取得恒定的最小值,因此无法保证参数 w w w 收敛到最优解 w = 0 w=0 w=0。
如果定义
l
o
s
s
(
w
)
=
(
w
−
x
1
)
2
+
(
w
−
x
2
)
2
=
(
w
+
1
)
2
+
(
w
−
1
)
2
loss(w) = (w-x_1)^2+(w-x_2)^2=(w+1)^2+(w-1)^2
loss(w)=(w−x1)2+(w−x2)2=(w+1)2+(w−1)2
即
l
o
s
s
(
w
)
=
2
w
2
+
2
loss(w) = 2w^2+2
loss(w)=2w2+2
显然可以收敛到
w
=
0
w=0
w=0 这个真正的最优解。
可见 loss 函数会影响最优解的优劣。如果 loss 函数按照分类错误数量来定义,
l
o
s
s
(
w
)
=
{
0
,
−
1
≤
w
≤
1
1
,
(
o
t
h
e
r
s
)
loss(w)= begin{cases} 0,&-1le w le 1 \ 1, &(others) end{cases}
loss(w)={0,1,−1≤w≤1(others)
仍然无法收敛到
w
=
0
w=0
w=0 这个最优解上。接下来,我们讨论, 对于分类问题和回归问题,应该如何定义合理的 loss 函数。
最后
以上就是酷炫小白菜为你收集整理的损失函数浅析:分类模型和回归模型 (1)的全部内容,希望文章能够帮你解决损失函数浅析:分类模型和回归模型 (1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复