问题1:Loss下降,但accuracy(或auc)不升。
解答:正常,Loss和acc计算方式不同,是两个完全不同的东西。acc只关心预测正确,而不关心正确的程度(比如预测狗和猫,不论模型预测是猫的概率是51%还是99%,对acc来说是一样的)。但是loss函数(如cross_entropy_loss)考虑了预测的正确程度。所以会出现预测正确的数量不变,但是正确的置信度越来越高了。
问题2:Loss值很小,对训练过程有什么影响。
解答:很小的Loss会导致很小的梯度,使学习速度降慢。
对不同的Loss来说,在优化时的影响不同。
MSE在接近最优解时导数会变的非常小。比如我们计算权重
w
i
w_i
wi 的梯度时:
g
r
a
d
i
=
∂
∂
w
i
ϵ
2
=
2
ϵ
∂
∂
w
i
ϵ
grad_i = \frac{\partial}{\partial w_i} \epsilon^2 = 2 \epsilon \frac{\partial}{\partial w_i} \epsilon
gradi=∂wi∂ϵ2=2ϵ∂wi∂ϵ where
ϵ
=
y
−
y
^
\epsilon = y - \hat{y}
ϵ=y−y^。在接近最优解时,
ϵ
\epsilon
ϵ会变的非常小,降慢学习速度。
Logloss在接近最优解时,导数基本恒定。
所以我们在分类任务时优先使用Logloss。