您的位置:首页 > 其它

对于SVM和softmax的损失函数总结(基于cs231n)

2018-04-02 19:05 756 查看

写的非常好的参考:https://blog.csdn.net/zhangxb35/article/details/55223825

(1)SVM

The Multiclass SVM loss for the i-th example is then formalized asfollows:
hinge loss:


(1)只关注正确分数比不正确分数大delta
对于第i个例子,对于它被分为3个类的score分别为s1,s2,s3,而ground truth是其应该被放进类1,所以计算s2/s3和s1的差值并加上梯度delta。一些比s1高的分数没有多于delta的,将会取0,而其余则取他们的差值.
(2)若损失函数改为:
鉴于前面对s的取值公式,则L可被写作:



有时用他的平方,即max(0,−)2,作为loss,使得惩罚更强烈(二次方而不是线性),对错误容忍降低
(3)hint:一般训练时w初始为很小,故s为较小的均匀分布值,s约等于0,所以在这个损失函数下,loss= 分类数量 - 1。在最开始训练时应考虑预期的损失函数该是多大,用于验证是否有bug
(4)关于hinge loss的求导:
参考:
https://blog.csdn.net/suichen1/article/details/50503477
 


(2)softmax

(1)定义

可参考博客:softmax参考

Softmax分类器是二元逻辑斯特回归的多元一般形式。
我们知道max,假如说我有两个数,a和b,并且a>b,如果取max,那么就直接取a,没有第二种可能
但有的时候我不想这样,因为这样会造成分值小的那个饥饿。所以我希望分值大的那一项经常取到,分值小的那一项也偶尔可以取到,那么我用softmax就可以了 
现在还是a和b,a>b,如果我们取按照softmax来计算取a和b的概率,那a的softmax值大于b的,所以a会经常取到,而b也会偶尔取到,概率跟它们本来的大小有关。所以说不是max,而是 Soft max 
 
(2)loss function
它的loss function与SVM的不同在于,修改了hinge loss部分,变成了cross-entropyloss。log里面的值就是这组数据正确分类的Softmax值,它占的比重越大,这个样本的Loss也就越小
对于每一个example Li, j是分类结果class中的一个,fyi是把i分类为yi的score,这样可以将Li控制在[0,1]之间
 loss性质:
最小值 = 0,所有都分类正确,则-log1 = 0
最大值:无穷,分类正确概率近乎0时,即无穷大
在初始训练时,s约等于0,且都相等时,L=lnC,C即变量个数

(3)梯度下降
这里注意,无论内部的fj如何变化,求导形式都不变,区别只是外面的fj对w求导变化,P - j == yi不变
(相等时为P-1,不相等时为P)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: