做新的网站,网站静态化 好处,安卓开发者平台,微信公众号运营分析报告多类别分类的一个trick
探讨一下在多类别分类场景#xff0c;如翻译、生成、目标检测等场景下#xff0c;使用log_softmax的效果优于softmax的原因。 假设词典大小为10#xff0c;一个词的ID为9#xff08;即词典的最后一个词#xff09;#xff0c;使用交叉熵作为损失函…多类别分类的一个trick
探讨一下在多类别分类场景如翻译、生成、目标检测等场景下使用log_softmax的效果优于softmax的原因。 假设词典大小为10一个词的ID为9即词典的最后一个词使用交叉熵作为损失函数我们给出两组向量
a [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
b [0.1, 0.1, 0.1, 0.1, 0.1, 0.05, 0.05, 0.1, 0.2, 0.1]已知交叉熵损失函数定义如下 l o s s ∑ i 0 k y i l o g ( p i ) loss \sum^{k}_{i0}y_ilog(p_i) loss∑i0kyilog(pi) 则根据公式可分别计算得到
CE(softmax(a), 9) 2.3026
CE(log_softmax(a), 9) 2.3026CE(softmax(b), 9) 2.3027
CE(log_softmax(b), 9) 2.3033则使用softmax操作的a,b向量在损失上相差-1e-4而使用log_softmax在损失上相差-7e-4。 发现1当类别概率预测错误时CE(log_softmax(),)会加大错误类别惩罚。 这还不明显我们现在假设
b [0, 0, 0, 0, 0, 0.05, 0.05, 0, 0.1, 0.8]则
CE(softmax(b), 9) 2.2084
CE(log_softmax(b), 9) 1.6365此时对比一下softmax操作之后损失之差为9.42e-2log_softmax损失之差为0.6661。 发现2使用CE(softmax(),)即便预测概率分布很接近真实概率分布在损失上下降也不是很明显(9.42e-2)但使用CE(log_softmax(),)会有非常显著的损失下降(0.6661约为softmax的7倍)。