其完成的操作是将一个k维向量transform到另外一个k维向量。transform后的向量,每一个元素的范围在(0,1)之间。并且所有元素之和为1。
softmax函数的一个功能,是凸显大的元素,并抑制小的元素。比如向量 [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0] transform后的向量是[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]。可以看到元素4 transform的数值为0.475,而3.0 transform的数值才为0.175。
其实从这个函数的名字中,可以看到有趣的一点,就是soft+max, 这个函数的功能是在取最大值,但是并没有让赢者通吃,也为那些较小值分配了一些数值。
根据https://zhuanlan.zhihu.com/p/25723112这个文章,可以知道softmax函数比较方便求导。如下图所示。需要注意的一点是,红色箭头处的偏导指的是loss对下图训练样本向量的偏导。