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

写的非常好的参考: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)


猜你喜欢

转载自blog.csdn.net/qq_41058526/article/details/79793450
今日推荐