解决:softmax的冗余性
根据上述softmax公式进行推导:
softmax(xi+x)=exi+x∑nj=1exj+x=ex⋅exi∑nj=1(ex⋅exj)=ex⋅exiex⋅∑nj=1exj=exi∑nj=1exj=softmax(xi)
我们可以看到对于任意一个数a, x+a和x在softmax中的结果都是一样的,即softmax(x)=softmax(x+a),这个结论被称为softmax的冗余性。
我们令 x=x+a,其中a=−max(x),则:
(x+a)的最大值等于0,避免了上溢的问题;
同时,因为一定有x+a=0, 所以分母中的各个加数至少有一个为1,也就不可能为0,由此避免下溢的问题。