本小节介绍一些常见的loss函数
1. l1_loss&l2_loss
衡量预测值与真实值的偏差程度的最常见的loss: 误差的L1范数和L2范数
因为L1范数在误差接近0的时候不平滑,所以比较少用到这个范数
L2范数的缺点是当存在离群点(outliers)的时候,这些点会占loss的主要组成部分。比如说真实值为1,预测10次,有一次预测值为1000,其余次的预测值为1左右,显然loss值主要由1000主宰。
2.Huber Loss:
Huber Loss经常用于回归问题,相比与l2 loss,其对离群点(outliers)没有那么敏感(因为如果残差太大的话,由于是分段函数,loss为残差的线性函数)
函数定义:
其中其中tao是一个设定的参数,y表示真实值,f(x)表示预测值。
这样做的好处是当残差(residual)很小的时候,loss函数为l2范数,残差大的时候,为l1范数的线性函数
Pseudo-Huber loss function:Huber loss 的一种平滑近似,保证各阶可导
其中tao为设置的参数,其越大,则两边的线性部分越陡峭
3.Hinge Loss
合页损失常用于二分类问题,比如ground true :t=1 or -1,预测值 y=wx+b
在svm分类器中,定义的hinge loss 为
也就是说当y越接近t的时候,loss越小
扩展:
可以将上面的二分类loss函数扩展成C分类的loss函数
注意S=X*W+b shape( X: (N,D), W:(D,C), b:(C,) )
s_j= x_i*w_j+b 也就是为j类的分数,s_yi=x_i*w_yi+b 也就是yi类的打分
注意ground true的标签为 yi
其中 x_i(shape :1*D)可以表示第i张图片,w_j(shape:D*1)表示第j类的权重参数
理想情况下我们希望的是错误分类的打分最小,正确分类的打分最大
这种情况下 s_j - s_yi 小于0,则这时候 loss趋于0
同时可以想象,因为打分函数是线性的 y=x*w+b,那么假如w_0能够正确分类这些图片,那么w_1=2 *w_0也能够正确的分类图片(仔细理解上面的公式,w_1让s_j-s_yi负的更多,但最后结果因为是负数所以都是0,所以 w_1和w_0都能够正确的分类。为了避免这种不确定性,一般会加入惩罚项来约束参数w,使得参数w尽可能的小
Cross-entropy loss
上面主要是说 cross-entropy loss 主要应用在二分类问题上,预测值为概率值,根据交叉熵定义loss.注意上面的值的取值范围:y的预测值应该为概率,取值范围为【0,1】
sigmoid-Cross-entropy loss
上面的交叉熵loss要求预测值是概率,一般来说我们算出来的都是 scores=x*w+b,将这个值输入到sigmoid函数就能够压缩值域到(0,1)
可以看到由于sigmoid函数平滑了预测值(比如直接输入0.1和0.01和将0.1,0.01sigmoid后再输入,显然后者的变化值会小很多),使得sigmoid-ce在预测值离label比较远的时候loss的增长没有那么的陡峭
softmax cross-entropy loss
首先softmax函数能够把一组分数向量转换成相对应的概率向量。下面是softmax函数的定义
如上,softmax也是做到了'squashes' k维任意实数值到k维的【0,1】值域的向量,同时保证了累加和为1.
根据交叉熵的定义,需要概率作为输入。sigmoid-cross-entropy-loss用sigmoid来将分数向量转换成概率向量,softmax-cross-entropy-loss则是用softmax函数来将分数向量转换成概率向量。
根据交叉熵loss的定义
其中p(x)表示分类x是正确分类的概率,p的取值只能数0或者1。这个是先验值
q(x)则为x种类为正确分类的预测概率,取值范围为(0,1)
那么具体到一个 共有C种类的分类问题,那么p(x_j),(0<=j<=C)肯定只有1个为1,C-1个为0(因为只能有一个正确的分类,正确分类为正确分类的概率为1,其余分类为正确分类的概率为0)
那么就可以很自然的推导出softmax-cross-entropy-loss的定义了
下面是softmax-cross-entropy-loss 的定义
其中f_j表示所有可能种类的分数,f_yi表示ground true类的分数