浅谈torch中的softmax与CrossEntropy

来源:哔哩哔哩 发布时间:2023-08-14 02:39:41

首先是softmax函数,我认为我在之前的文章


(资料图片仅供参考)

分类模型中为何更适合使用softmax函数?

已经较为清楚的阐述,故这里不再重复赘述。

在上文中,我较为清晰的说明了,softmax函数只是为了将我们的预测结果,表达成一种合适的结果,去拟合one-hot编码

但是对于这种向量标签,我们并不能很好的去定义其损失函数(误差函数)

我们理所当然应该想到均方误差函数,但实际上,均方误差函数(MSE),对于标量标签确实能起到一个非常好的效果。

而对于一个向量标签,我们选择了一个能实现与之同等效果的CrossEntropy函数,也即交叉熵损失函数。

如上图所示,其中  为正确的标签,而 为预测标签(经过softmax处理后)。

该损失函数在计算上具有非常明显的便利性,即仅考虑正确标签下对应的损失。例如,我们不妨令  = [0, 1, 0], = [, , ], 那么此时的  ,

即仅考虑到了正确标签下的损失。

而其优越性不仅表现在此处,其导函数更是有非常优异的性质,即:

其中  为未经softmax处理前得到的预测标签。

换言之,

如下图所示:

毫无疑问,y_ == softmax(y_pred) - one_hot(y),这是成立的。(不成立可能是精度误差导致的,看图中明显成立)。

而观察y_,对于y[1]这个样本,我们明显可以看出,其梯度是正在减少前两项的权值,而增大最后一项的权值,以努力实现正确归类至第三类,这是符合我们预期的。

故,CrossEntropy函数确实是在朝着我们的目标去实现。

标签:

Copyright ©  2015-2022 南极饰品网版权所有  备案号:粤ICP备2022077823号-13   联系邮箱: 317 493 128@qq.com