损失函数

Multicalss SVM loss(hinge loss)

给定一个样本(x_i,y_i)x_i是图像,y_i是标签,对于权重W预测输出的结果s=f(x_i,W),s是预测结果。
s_{y_i}是ground truth的标签的预测分数),s_j是其他类别的预测分数。损失函数表示如下:

给个例子:


cat:
max(0,5.1-3.2+1)+max(0,-1.7-3.2+1)=2.9+0=2.9

car:
max(0,1.3-4.9+1)+max(0,2.0-4.9+1)=0+0=0

frog:
max(0,2.2+3.1 +1)+max(0,2.5+3.1 +1)=6.3+6.6=12.9

对于整个数据集,Loss取平均
L=\frac{1}{N}\sum_{i=1}^{N}L_i
AKA: L=(2.9+0+12.9)/3

Example Code in numpy:

def L_i_vectorized(x,y,W):
  scores = W.dot(x)
  margins = np.maximum(0, scores - scores[y]+1)
  margins[y] = 0
  loss_i = np.sum(margins)
  return loss_i

正则化:

模型的预测总是趋向于匹配每一个训练数据!因此模型的曲线可能会非常的wavy。



当加入了新的数据之后,预测的曲线可能完全是错误的,我们倾向的曲线应该是像绿色的这条线一样简单,而不是非常复杂的假发线。

因此要引入正则化的概念来解决这个问题,引入正则项能够鼓励模型以某种方式选择更简单的W。且这一概念符合奥卡姆剃刀原理。

奥卡姆剃刀原理:如果有许多个可以解释你观察结果的假设,一般来讲,应该选择最简约的,因为这样可以在未来将其用于解释新的观察结果。
标准损失函数:数据损失项和正则项。

常用正则项:



Softmax Classifier(Multinomial Logistic Regression)

举个例子:

图像对于各个类别预测的score如下,现在我们不把这些分数直接放在损失函数里,而是将他们全部进行指数化,并且标准化到使他们的和是1。



两种不同的损失函数

SVM:唯一关心的是正确的分值要比不正确分值高出一个安全边际。
Softmax:一直趋于使概率质量函数(离散分布值)等于1,即使在正确的类别上给出了很高的分值,在不正确的类别上给了很低的分值,softmax依然会在正确分类的类别上积累更多的概率质量,使正确的类别分数向无穷大迈进,不正确的类别分数向负无穷大迈进。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。