这篇文章是Softmax理解系列之三,没看过前两篇的这里有传送门:
王峰:从最优化的角度看待Softmax损失函数
王峰:Softmax理解之二分类与多分类
这一篇主要是第一篇内容的延续,使用了我的文章里的一些结论:
L2 Hypersphere Embedding for Face Verification
英文和数学比较好的可以先看看我这篇论文。
在第一篇文章中我们利用最优化里常见的 smooth 操作,将一个难以优化的分类目标函数经过两步 smooth 化后转变为常见的 Softmax交叉熵损失函数。文章发出来以后, @苏剑林 跟我说优化目标可以改得更简洁一些:
通过网络输出个分数,使得目标分数最大。
换成数学语言,就是要让:
这样,其对应的损失函数形式就非常简单了:
这个损失函数起到的作用是:当
恰好是
中最大的元素时,损失函数为0;当某非目标分数
大于目标分数
时,就产生了一个正的损失。同样的,通过使用 LogSumExp 函数就可以将这个损失函数转化为 Softmax 交叉熵损失。感兴趣的读者可以自行推导一下作为练习。
经过这样的修改我们将所有的
一视同仁,其实是不利