为什么损耗会减少,但精度也会下降(Pytorch,LSTM)?

时间:2020-01-01 18:06:40

标签: neural-network pytorch lstm loss-function cross-entropy

我用LSTM-Pytorch中的线性模块建立了一个用于分类问题的模型(10个类)。我正在训练模型,并在每个时期在训练集中中输出损失准确性。输出如下:

时代:0开始!
损失:2.301875352859497
累积:0.11388888888888889
时代:1开始!
损失:2.2759320735931396
累积:0.29
时代:2开始!
损失:2.2510263919830322
帐户:0.4872222222222222
时代:3开始!
损失:2.225804567337036
帐户:0.6066666666666667
时代:4开始!
损失:2.199286699295044
Acc:0.6511111111111111
时代:5开始!
损失:2.1704766750335693
帐户:0.6855555555555556
时代:6开始!
损失:2.1381614208221436
帐户:0.7038888888888889
时代:7开始!
损失:2.1007182598114014
帐户:0.7194444444444444
时代:8开始!
损失:2.0557992458343506
帐户:0.7283333333333334
时代:9开始!
损失:1.9998993873596191
帐户:0.7427777777777778
时代:10开始!
损失:1.9277743101119995
帐户:0.7527777777777778
时代:11开始!
损失:1.8325848579406738
帐户:0.7483333333333333
时代:12开始!
损失:1.712520718574524
帐户:0.7077777777777777
时代:13开始!
损失:1.6056485176086426
帐户:0.6305555555555555
时代:14开始!
损失:1.5910680294036865
帐户:0.4938888888888888889
时代:15开始!
损失:1.6259561777114868
帐户:0.41555555555555557
时代:16开始!
损失:1.892195224761963
帐户:0.3655555555555556
纪元:17开始!
损失:1.4949012994766235
帐户:0.47944444444444445
时代:18开始!
损失:1.4332982301712036
帐户:0.48833333333333334

对于损失函数,我使用了 CrossEntropyLoss 和Adam Optimizer。
尽管损失一直在减少,但精度一直提高到第10阶段,然后由于某种原因开始降低。

为什么会这样?

即使我的模型过度拟合,也不意味着精度应该很高? (总是说在训练集而非验证集上衡量的准确性和损失)

1 个答案:

答案 0 :(得分:1)

减少损耗并不总是意味着提高精度。 我将尝试解决这种交叉熵损失。

CE-loss= sum (-log p(y=i))

请注意,如果正确分类的可能性增加,则损失将减少;如果正确分类的可能性减少,则损失将增加。现在,当您计算平均损失时,您要对所有样本进行平均,某些概率可能会增加,而某些概率可能会减少,从而使总体损失变小,但准确性也会下降。