【踩坑】DL二分类应该采用MSE还是交叉熵损失?

我认为深度学习的实践比理论学习更加重要,不仅是因为纸上得来终觉浅,而且还因为模型训练中有很多trick只有在实操中才能学习到。

在毕设过程中,有一次踩坑经历我记忆犹新。

我首先是搭建了一个lstm时序预测模型对股票涨跌进行预测,也就是我的标签是一个二分类,0或1,但是我采用的是回归预测。

针对这个模型,我就有了一个思考:对于二分类问题,采用分类和回归哪个更准确呢?其实它们的差别无非就在于loss function的选择以及model的输出大小上面。即:分类是采用交叉熵loss,model输入需要使用one-hot编码成01,10的形式,model的输出为2维,是对于每个类别的likelyhood(概率),例如【0.87,0.22】。(不一定相加为1,只有通过了softmax函数才会相加为1)。回归采用mse loss,model输出为一个值。

最开始,我认为肯定是采用分类更准确,毕竟分类问题当然要用分类解决,如果采用回归,预测值会在接近1和接近0之间横跳,误差特别大。

所以,我就将我的模型改为二分类。由于pytorch的交叉熵函数参数设定特别严格,target必须是longtensor,pred必须是floattensor。并且他们必须维度全部相同。我首先需要将训练集的标签全部进行编码,还要将model的输出进行各种转换。完成之后,发现精确度下降了约两倍。

后来通过查阅各种资料才发现,原来二分类就是应该采用MSE loss进行回归预测更好,这是因为:MSE loss在0和1附近的梯度比交叉熵损失函数更大,因此可以更快地收敛。

所以,在相同的迭代次数中,二分类采用MSE loss可以得到更好的性能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值