After discussing with Chong Wang of IIM, I have understood completely http://deeplearning.stanford.edu/wiki/index.php/Softmax_Regression. This is a good reference. The matlab code can be found in my computer by searching "Softmax". It is in "matlab\work\classifier\Softmax".



在 Logistic Regression 里就可以看到它 (当然反过来说经典的 Deep Neural Networks 顶层其实本来也就是一个 Logistic Regression 分类器。)。具体来说,Softmax 函数  定义如下:

它在 Logistic Regression 里其到的作用是讲线性预测值转化为类别概率:假设  是第  个类别的线性预测结果,带入 Softmax 的结果其实就是先对每一个  取 exponential 变成非负,然后除以所有项之和进行归一化,现在每个  就可以解释成观察到的数据  属于类别  的概率,或者称作似然 (Likelihood)。

然后 Logistic Regression 的目标函数是根据最大似然原则来建立的,假设数据  所对应的类别为 ,则根据我们刚才的计算最大似然就是要最大化  的值 (通常是使用 negative log-likelihood 而不是 likelihood,也就是说最小化  的值,这两者结果在数学上是等价的。)。后面这个操作就是 caffe 文档里说的 Multinomial Logistic Loss,具体写出来是这个样子:

而 Softmax-Loss 其实就是把两者结合到一起,只要把  的定义展开即可

没有任何 fancy 的东西。
注意点:区别Softmax 函数和Softmax-Loss
reference:

http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/