Multicalss SVM loss(hinge loss)
给定一个样本,是图像,是标签,对于权重预测输出的结果,s是预测结果。
是ground truth的标签的预测分数),是其他类别的预测分数。损失函数表示如下:
给个例子:
cat:
car:
frog:
对于整个数据集,Loss取平均
AKA:
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依然会在正确分类的类别上积累更多的概率质量,使正确的类别分数向无穷大迈进,不正确的类别分数向负无穷大迈进。