SVM 的损失函数(合页损失 Hinge Loss)是什么?
简化版
从损失函数视角看,SVM 等价于最小化 合页损失(Hinge Loss)+ L2 正则:Σ max(0, 1 - yᵢ·f(xᵢ)) + λ‖w‖²,其中 f(x)=wᵀx+b。Hinge Loss = max(0, 1 - y·f(x)) 的含义是:当样本被正确分类且间隔足够(y·f(x)≥1)时损失为 0,一旦落进间隔内或被分错(y·f(x)<1)就产生线性增长的惩罚。它的关键特性是有一个「间隔阈值 1」——不只要求分对,还要求「分对且离边界够远」,这正是 SVM「最大间隔」思想在损失函数上的体现。因为分对且远的样本损失恒为 0,模型只由边界附近的支持向量决定,带来稀疏性。
详细版
Hinge Loss 定义:
L_hinge = max(0, 1 - y·f(x)), y∈{-1,+1}, f(x)=wᵀx+b
分段理解(记 m = y·f(x) 为「函数间隔」):
| 情况 | m = y·f(x) | 损失 | 含义 |
|---|---|---|---|
| 分对且间隔足够 | ≥ 1 | 0 | 安全,不惩罚 |
| 分对但进入间隔内 | 0~1 | 1-m(0~1) | 分对了也罚,逼它远离边界 |
| 恰在超平面上 | 0 | 1 | — |
| 分错 | < 0 | >1,线性增长 | 惩罚随错误程度线性上升 |
SVM = Hinge + L2:
min (1/m)Σ max(0, 1 - yᵢ(wᵀxᵢ+b)) + λ‖w‖²
└────── 合页损失(对应软间隔松弛)──────┘ └L2 正则(最大间隔)┘
- 松弛变量
ξᵢ = max(0, 1 - yᵢf(xᵢ))正是 hinge loss。 - 与逻辑回归对比:LR 用 log loss(处处 >0、光滑),SVM 用 hinge(分对够远即 0、有拐点不光滑)。
完整版教学
一、从「约束优化」到「损失函数」的视角切换
前面讲 SVM 是「最大化间隔 + 软间隔松弛」的约束优化。其实它可以等价改写成一个无约束的「损失 + 正则」形式,这就是机器学习里更统一的视角:
SVM ⟺ min Σ Hinge损失(样本) + λ‖w‖²
这样看,SVM 和逻辑回归、线性回归就站到了同一个框架下——都是「经验损失 + 正则项」,只是损失函数不同。SVM 用的这个损失,就叫合页损失(Hinge Loss)。
二、Hinge Loss 的定义与形状
L(y, f(x)) = max(0, 1 - y·f(x))
其中 f(x)=wᵀx+b 是模型打分,y∈{-1,+1}。记 m = y·f(x)(叫函数间隔,衡量「分类正确程度」:m>0 分对,m 越大越自信)。画出损失随 m 的变化:
损失
│\
│ \
│ \____________
│ 1 m = y·f(x)
└──────┴────────────→
拐点在 m=1(形如合页/铰链,故名 hinge)
- m ≥ 1:损失 = 0。
- m < 1:损失 = 1 - m,随 m 减小线性增大。
它长得像一扇合页/铰链(一段平、一段斜),所以叫「合页损失」。
三、关键点:为什么阈值是 1 而不是 0——间隔思想
普通分类损失(如 0-1 损失)只关心「分对没有」——分对(m>0)就 0 惩罚。但 Hinge 的拐点在 m=1,不是 0,这是精髓:
- 仅仅分对(0<m<1)还不够,仍要罚。只有当
m≥1(分对且函数间隔达到 1,即离边界足够远)才彻底 0 惩罚。 - 这等于在损失里写死了「不但要分对,还要留出间隔」的要求——这正是 SVM「最大间隔」思想的损失函数化身。
所以 hinge loss 逼着模型把样本推到离边界 ≥1 的「安全区」,而不只是勉强分对贴着边界。
四、Hinge Loss 就是软间隔的松弛变量
回顾软间隔:yᵢ(wᵀxᵢ+b) ≥ 1 - ξᵢ,ξᵢ≥0,目标 ½‖w‖²+C·Σξᵢ。把松弛解出来:
- 若样本满足
yᵢf(xᵢ)≥1(安全):约束不需要松弛,ξᵢ=0。 - 若
yᵢf(xᵢ)<1(越界/分错):需要ξᵢ = 1 - yᵢf(xᵢ)来满足约束。
合起来:ξᵢ = max(0, 1 - yᵢf(xᵢ)) = Hinge Loss。代入目标就得到:
min ½‖w‖² + C·Σ max(0, 1 - yᵢf(xᵢ))
除以 C、令 λ=1/(2C),就是标准的「Hinge 损失 + L2 正则」。所以软间隔 SVM 和「最小化 hinge loss + L2」是同一件事——½‖w‖²(L2)来自最大间隔,Σξ(hinge)来自容错。
五、Hinge Loss 带来稀疏(支持向量)
因为分对且间隔足够(m≥1)的样本损失恒为 0,梯度也为 0,它们对参数更新毫无贡献——这些正是非支持向量。只有 m<1(在间隔内或分错)的样本损失非零、有梯度,才影响模型——它们就是支持向量。
这就是 SVM 稀疏性在损失函数层面的解释:hinge 的「平坦段」把远处样本的影响直接清零,模型只由边界附近少数样本决定。对比逻辑回归的 log loss——它处处大于 0(哪怕分得很对也有微小损失和梯度),所以每个样本都参与,LR 不稀疏。
六、Hinge Loss vs 逻辑回归的 Log Loss
| Hinge Loss(SVM) | Log Loss(逻辑回归) | |
|---|---|---|
| 公式 | max(0, 1-yf) | log(1+e^(-yf)) |
| 分对且远时 | =0(不再惩罚) | >0(仍有微小惩罚) |
| 稀疏性 | 稀疏(只靠支持向量) | 不稀疏(全样本参与) |
| 输出概率 | 否(需额外校准) | 是(天然概率) |
| 光滑性 | 有拐点、不可导(次梯度) | 处处光滑可导 |
| 对离群点 | 相对鲁棒(线性增长) | 也较鲁棒 |
两者形状很像(都是「错得越多罚越多」的凸上界),效果常接近;主要差别是 hinge 有间隔阈值→稀疏、不出概率,log loss 光滑→出概率、全员参与。
七、常见追问
- Hinge Loss 可导吗? 在拐点 m=1 处不可导,用次梯度优化;也有平方 hinge、Huberized hinge 等光滑变体。
- 为什么 SVM 不直接输出概率? hinge loss 不是概率损失,输出的是打分不是概率,要概率得用 Platt scaling 等额外校准。
- 0-1 损失和 hinge 什么关系? 0-1 损失不连续、不可优化,hinge 是它的凸上界(surrogate),可优化且保留「分类+间隔」语义。
- L2 正则那项对应什么? 对应最大间隔
½‖w‖²——所以 SVM 天生自带 L2 正则。
八、用算例与工程边界复核
Hinge Loss 为 max(0,1-yf(x))。当 yf=1.5 时损失 0;yf=0.4 时损失 0.6,分类虽正确但间隔不足;yf=-0.2 时损失 1.2,已经误分类。它同时惩罚错误和低置信间隔。
| 对象/方案 | 核心机制 | 选择或风险 |
|---|---|---|
| yf≥1 | 损失 0 | 间隔外,不贡献损失梯度 |
| 0<yf<1 | 正确但间隔不足 | 成为支持向量候选 |
| yf≤0 | 误分类 | 线性增加惩罚 |
把推导和选择压缩成执行路径:
score f(x)
-> margin m = y f(x)
-> loss = max(0,1-m)
-> add 1/2||w||^2 regularizer
Hinge 损失本身只看间隔;标准软间隔 SVM 目标还包含权重正则项,不能把两者混成一个概念。
九、常见误区与追问
- 误区:分类正确时 Hinge Loss 一定为 0。 只有函数间隔至少为 1 才为 0,间隔内正确点仍受罚。
- 误区:Hinge Loss 可直接解释为负对数概率。 它是最大间隔替代损失,不天然输出校准概率。
- 追问:在 yf=1 处不可导怎么办? 可使用次梯度或由凸优化求解器处理。
- 追问:Squared Hinge 有什么变化? 对违约做平方惩罚、更加平滑但对大违约更敏感,稀疏性也可能不同。
- 追问:为什么说它带来稀疏性? 间隔外样本损失梯度为零,对偶中往往 α=0,预测由支持向量展开。
十、加强记忆
记忆时抓住这条主线:SVM 从损失视角 = Hinge Loss + L2 正则:min Σ max(0,1-yᵢf(xᵢ)) + λ‖w‖²。Hinge Loss max(0, 1-y·f(x)) 的精髓是拐点在 1 而非 0——分对且函数间隔 ≥1(够远)损失才为 0,仅仅分对但在间隔内也要罚,这正是「最大间隔」写进损失。它就是软间隔的松弛变量 ξ=max(0,1-yf),½‖w‖² 对应最大间隔(自带 L2)。因为远处分对样本损失和梯度都为 0,模型只由边界附近的支持向量决定 → 稀疏;对比逻辑回归 log loss 处处 >0、全样本参与、不稀疏但出概率。Hinge 在拐点不可导(用次梯度)、不输出概率(需 Platt 校准),是 0-1 损失的凸上界。