合页损失函数是什么?支持向量机背后的损失
合页损失函数(Hinge Loss),也叫铰链损失,是一种主要用于分类问题的损失函数,最著名的应用是支持向量机。它因为函数图像的形状像一扇门的合页而得名:在某一点之前是一条斜线,之后变成一条水平线,中间有一个折角。
它是怎么计算的
在二分类问题中,把两个类别的标签分别记为正 1 和负 1。模型对一个样本给出一个分数,分数大于零就判为正类,小于零就判为负类。把真实标签与模型的分数相乘,得到的值叫作函数间隔:如果它为正,说明分类正确;为负,说明分类错误;它的绝对值越大,说明判断越有把握。合页损失等于“1 减去这个乘积”与零之间较大的那个值。
具体来看有三种情况。当样本被正确分类,并且乘积大于等于 1 时,也就是不仅分对了,而且很有把握,损失为零。当样本被正确分类,但乘积在零和 1 之间时,也就是虽然分对了,但离分界线太近,把握不够,仍然会产生一点损失。当样本被分错,乘积小于零时,损失大于 1,而且分错得越离谱,损失越大,随着错误的程度线性地增长。
它的特点
要求留有余量:合页损失不仅要求把样本分对,还要求分得“有把握”,样本要离分界线足够远,至少要有 1 的函数间隔,否则就会受到惩罚。这正对应着支持向量机追求最大间隔的思想。
只关注难以区分的样本:对于那些已经被正确分类、而且离分界线足够远的样本,合页损失为零,它们对模型的训练不再产生任何影响。只有那些离分界线很近或者被分错的样本才会影响模型,这些样本就是支持向量。这让支持向量机的解具有稀疏性,最终的模型只由少数的支持向量决定。
是凸函数:我们真正关心的是分类的错误率,对应的 0-1 损失不连续、难以优化。合页损失是 0-1 损失的一个凸的上界,优化它比直接优化错误率容易得多,可以用梯度类的方法高效地求解。它在折角处不可导,但可以使用次梯度。
与支持向量机的关系
可以证明,软间隔支持向量机的优化问题,等价于最小化“所有样本的合页损失之和加上权重的 L2 正则化项”。也就是说,支持向量机可以理解为“合页损失加 L2 正则化”的线性模型。这个视角让我们可以把支持向量机和逻辑回归放在一起比较:逻辑回归使用的是对数损失,它对所有的样本都会产生损失,即使分类正确并且很有把握,损失也只是趋近于零而不会等于零,因此所有的样本都会影响模型,而且它能直接输出概率;合页损失则对“足够好”的样本完全不予理会,不直接输出概率。
变体和其他应用
平方合页损失:对合页损失取平方,让函数变得处处光滑可导,对错误的惩罚也更重。多分类合页损失:要求正确类别的分数比其他每一个类别的分数都至少高出一个间隔,由 Crammer 和 Singer 等人提出,早期也被用于训练神经网络分类器。在度量学习和推荐系统中,三元组损失、成对排序损失等也采用了类似合页的形式:要求正确的匹配比错误的匹配至少高出一个间隔。在生成对抗网络中,也有使用合页形式的对抗损失来训练判别器的做法。