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 里就可以看到它 。具体来说,Softmax 函数 定义如下:
它在 Logistic Regression 里其到的作用是讲线性预测值转化为类别概率:假设 是第 个类别的线性预测结果,带入 Softmax 的结果其实就是先对每一个 取 exponential 变成非负,然后除以所有项之和进行归一化,现在每个 就可以解释成观察到的数据 属于类别 的概率,或者称作似然 (Likelihood)。
然后 Logistic Regression 的目标函数是根据最大似然原则来建立的,假设数据 所对应的类别为 ,则根据我们刚才的计算最大似然就是要最大化 的值 。后面这个操作就是 caffe 文档里说的 Multinomial Logistic Loss,具体写出来是这个样子:
而 Softmax-Loss 其实就是把两者结合到一起,只要把 的定义展开即可
没有任何 fancy 的东西。
注意点:区别Softmax 函数和Softmax-Loss
reference:
http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/