我在分析手写体识别源代码时,发现损失函数可以用更简单的形式代替。从第一感觉上看,只要不犯愚蠢的错误,损失函数总会驱使模型朝着提升识别精度的方向前进,似乎没必要把损失函数搞得太复杂。但是,仔细思考一下,发现其中还是有些门道的。关键在于,模型的最优解最终落在什么位置,这个和损失函数定义绝对有关系。
我们分析一个最简单的例子:考虑一维空间的二分类问题,负样本 x1=−1x_1=-1x1=−1,正样本 x2=1x_2=1x2=1。答案显而易见,最优分类方法是用一维空间的”超平面” x=0x = 0x=0分割一维实数轴即可。参见下图:

令分类模型为 x=kx = kx=k, 如果我们定义 loss 函数为下面的形式:
loss(w)=∣k−x1∣+∣k−x2∣
loss(w) = |k-x_1|+|k-x_2|
loss(w)=∣k−x1∣+∣k−x2∣
这并不是一个很好的损失函数定义方法,后面我们会讨论分类问题的损失函数应该如何定义,这里仅仅是论述损失函数的定义方式对结果的影响。把绝对值符号去掉,不难得出
loss(w)={2,−1≤w≤1∣2x∣,others
loss(w)=
\begin{cases}
2, & -1\le w\le1\\
|2x|, & others
\end{cases}
loss(w)={2,∣2x∣,−1≤w≤1others
函数图像如下:

显然,当 −1≤w≤1-1\le w\le 1−1≤w≤1 时, loss 取得恒定的最小值,因此无法保证参数 www 收敛到最优解 w=0w=0w=0。
如果定义
loss(w)=(w−x1)2+(w−x2)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
即
loss(w)=2w2+2
loss(w) = 2w^2+2
loss(w)=2w2+2
显然可以收敛到 w=0w=0w=0 这个真正的最优解。
可见 loss 函数会影响最优解的优劣。如果 loss 函数按照分类错误数量来定义,
loss(w)={0,−1≤w≤11,(others)
loss(w)=
\begin{cases}
0,&-1\le w \le 1 \\
1, &(others)
\end{cases}
loss(w)={0,1,−1≤w≤1(others)
仍然无法收敛到 w=0w=0w=0 这个最优解上。接下来,我们讨论, 对于分类问题和回归问题,应该如何定义合理的 loss 函数。
损失函数对模型最优解的影响

探讨了损失函数定义方式对模型最优解的影响,通过一维空间二分类问题的实例,对比了不同损失函数下的模型表现,揭示了合理定义损失函数的重要性。
1969

被折叠的 条评论
为什么被折叠?



