softmax公式推导
softmax公式推导
给定输入向量 z=[z1,z2,…,zn]z=[z_1,z_2,…,z_n]z=[z1,z2,…,zn]
1.指数变换:对每个 ziz_izi进行指数变换,得到 t=[ez1,ez2,...,ezn]t = [e^{z_1},e^{z_2},...,e^{z_n}]t=[ez1,ez2,...,ezn],使z的取值区间从(−∞,+∞)(-\infty,+\infty)(−∞,+∞)变为(0,+∞)(0,+\infty)(0,+∞)
2.将所有指数变换后的值求和,得到s=ez1+ez2+...+ezn=Σj=1nezjs = e^{z_1} + e^{z_2} + ... + e^{z_n} = \Sigma_{j=1}^ne^{z_j}s=ez1+ez2+...+ezn=Σj=1nezj
3.将t中每个 ezie^{z_i}ezi除以归一化因子s,得到概率分布:
softmax(z)=[ez1s,ez2s,...,ezns]=[ez1Σj=1nezj,ez2Σj=1nezj,...,eznΣj=1nezj]
softmax(z) =[\frac{e^{z_1}}{s},\frac{e^{z_2}}{s},...,\frac{e^{z_n}}{s}]=[\frac{e^{z_1}}{\Sigma_{j=1}^ne^{z_j}},\frac{e^{z_2}}{\Sigma_{j=1}^ne^{z_j}},...,\frac{e^{z_n}}{\Sigma_{j=1}^ne^{z_j}}]
softmax(z)=[sez1,sez2,...,sezn]=[Σj=1nezjez1,Σj=1nezjez2,...,Σj=1nezjezn]
即:
Softmax(zi)=ezi∑j=1nezj
\mathrm{Softmax}(z_i)=\frac{e^{z_i}}{\sum_{j=1}^ne^{z_j}}
Softmax(zi)=∑j=1nezjezi
从上述公式可以看出:
-
每个输出值在 (0,1)之间
-
Softmax()对向量的值做了改变,但其位置不变
-
所有输出值之和为1,即
sum(softmax(z))=ez1s+ez2s+...+ezns=ss=1 sum(softmax(z)) =\frac{e^{z_1}}{s}+\frac{e^{z_2}}{s}+...+\frac{e^{z_n}}{s}=\frac{s}{s}=1 sum(softmax(z))=sez1+sez2+...+sezn=ss=1