Vince Jiang

CSCI3230 / 课程伴读 · 本站更新

CSCI3230 L04 · Part 4/6 Soft-margin SVM

课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2026T1 本讲:L04,第 4 部分 / 共 6 部分 · 原件 L04-Support-Vector-Machine-2026T1.pdf(本地课件) p.42–46 定位:把“允许少量违反间隔”写成可优化的损失,分清错分、进入间隔和惩罚强度。 前后:上一份 Kernel SVM · 下一份 Summary

p.42 分节页。

为什么不能永远追求完全可分(p.43–45)【新】

硬间隔有一条很强的要求:每个训练点都必须判对且达到单位功能间隔。现实中标签可能有误、两类特征可能重叠。p.43提出,即使通过复杂核把训练点硬分开,也可能追着噪声绕出复杂边界,新样本反而更差。p.44的软间隔允许付出代价来违反要求,不是先删除几个看起来不顺眼的点。

从两个不同问题开始读p.45。第一,符号对不对?看功能间隔 si=yi(wTxi+b)s_i=y_i(w^Tx_i+b) 是否大于0。第二,离边界够不够远?看它是否达到1。sis_i 是真实标签与分数的乘积,标量,不是几何距离本身。

补充自取数字:一个正类点分数0.4,预测为正,分类正确;但 s=0.4<1s=0.4<1,落进希望空出的缓冲带。另一个正类点分数−0.4,s=−0.4s=-0.4,已到错误一侧。两者都违反单位间隔,却只有后者错分。

p.45先用离散计数:令 z=s−1z=s-1,z<0z<0时罚1,否则罚0。这数的是未达到单位间隔的点,不等同于通常以零为门槛的分类错误率。它还不区分轻微违约与严重违约:s=0.9s=0.9和s=−5s=-5都只罚1。函数发生跳变,也不利于平滑地指导优化。下一页用一种连续、分段线性的替代来补这个缺点。

把p.44–45的过渡目标也保留下来。原页先把样本分成要求 si≥1s_i\ge1 的正常点与允许 si≥−∞s_i\ge-\infty 的例外点;后一式只表达暂不强制间隔,并非可直接运行的完整算法。随后用惩罚决定例外的代价:

min⁡w,b12∥w∥2+C∑iℓ0/1(si−1),ℓ0/1(z)={1z<0,0z≥0. \min_{w,b}\frac12\lVert w\rVert^2+C\sum_i\ell_{0/1}(s_i-1),\qquad \ell_{0/1}(z)=\begin{cases}1&z<0,\\0&z\ge0.\end{cases}

p.43左图为绕着个别异类点弯曲的边界,右图保留简单直线而容忍两侧少量例外。图要表达“降低对噪声的过度适配”,不是证明右图在某个未给出的测试集上已更准确。

Hinge loss 的折点在间隔1(p.46)

把“还差多少才到1”写成 1−s1-s。若差额为正就罚这段差额;若已经超过1,不应奖励一个负惩罚,所以与0取较大者。p.46得到铰链损失(hinge loss):

ℓ(s)=max⁡(0,1−s),s=y(wTx+b). \ell(s)=\max(0,1-s),\qquad s=y(w^Tx+b).

hinge像在 s=1s=1 处折起来的线段,但图像比喻不能替代它的分段定义:s≥1s\ge1损失0,s<1s<1损失 1−s1-s。折点1是单位间隔;分类边界却是0,必须分开记。

补充·逐个算:三个样本功能间隔为1.2、0.4、−0.5。第一条 1−1.2=−0.21-1.2=-0.2,取较大者0;第二条损失0.6;第三条损失1.5。第一条够安全,第二条判对但缓冲不足,第三条错分。总损失2.1不是错分数:这里只有1条错分。

SVM同时希望间隔宽与违约少,所以目标为

J(w,b)=12∥w∥22+C∑i=1mℓ(yi(wTxi+b)),C>0. J(w,b)=\frac12\lVert w\rVert_2^2+C\sum_{i=1}^m\ell\big(y_i(w^Tx_i+b)\big),\qquad C>0.

第一项是一个标量,惩罚大权重;第二项也是标量,先累计 mm 条违约,再乘代价权重 CC。输入数据固定,优化的是 w,bw,b。继续上例,若范数平方为4且 C=2C=2,目标为 4/2+2×2.1=6.24/2+2\times2.1=6.2,不是单独比较2.1。

补充·两个候选解释参数:候选A的半范数平方为1、总hinge为2;候选B相应为3和0.5。C=0.5C=0.5时目标A为2,B为3.25,A更小;C=2C=2时A为5,B为4,B更小。数字是教学自取,说明提高 CC 会让少违约更值得付出大范数代价。它没有保证最终模型的每条样本损失都单调下降,更没有保证测试准确率提高。

与Ridge的正则系数对照时,把整个目标除以正数 CC:

JC=12C∥w∥22+∑iℓ(si). \frac{J}{C}=\frac{1}{2C}\lVert w\rVert_2^2+\sum_i\ell(s_i).

最优参数不受这个整体正缩放影响。此式显示较大 CC 相对减弱范数惩罚;因此不能把 CC 和Ridge中直接乘范数的 λ\lambda 记成同方向。若从求和损失换成平均损失,数值超参数的含义也跟样本数有关,不要照抄另一个实现的值。

再给一个等价理解。为每个点引入非负“欠账” ξi\xi_i,约束 si≥1−ξis_i\ge1-\xi_i。这要求 ξi≥1−si\xi_i\ge1-s_i,同时又要求 ξi≥0\xi_i\ge0;当目标以正代价惩罚欠账时,最小可行欠账正好是 max⁡(0,1−si)\max(0,1-s_i)。这就从松弛变量形式得到hinge,而不是凭空新造一种算法。

小检查(补充):负类点的分数为−0.2,是否错分?欠多少间隔?

参考答案

标签−1乘分数−0.2得 s=0.2s=0.2,分类正确,hinge为0.8。不要在乘标签前把负分数直接当坏结果。

读全p.46的四条损失曲线。 横轴是带标签分数 zz,纵轴为损失;图同时给出

图中名称 函数 读图要点
0/1 1{z<0}\mathbf1\{z<0\} 在0处跳变,不提供连续下降指引
hinge max⁡(0,1−z)\max(0,1-z) 在1处折角,达到1后为零
exponential e−ze^{-z} 随正确侧分数增加而下降,对负大分数惩罚迅速增长
logistic log⁡(1+e−z)\log(1+e^{-z}) 平滑下降,对有限分数仍为正

图中logistic用自然对数时,在0处为 log⁡2\log2;hinge和exponential在0处为1。注意p.45把0/1作用于 s−1s-1,p.46比较图却以未平移的 zz 写0/1阈值0;二者自变量不同。不要从图的零阈值误读为前页只惩罚错分,也不要认为所有替代损失都在1以后恰为零。

p.46损失比较图用来对照离散阶跃与连续替代;通行软件中的hinge目标应按上面的公式判断,不由旧页上的损失名称猜测。历史HW02实验题的数据边界见附录 A1。

补充 · 复制数据为什么会悄悄改变惩罚权衡(通识讲解;演示数据不属于原题)。

固定模型,把训练集中每一行原样复制一遍。半范数平方不变,总 hinge 损失翻倍。若使用本篇的求和形式而保持 CC 不变,相当于让原数据的违约权重变为 2C2C;重复样本并没有增加新信息,却改变了优化目标。

若希望复制前后目标完全相同,复制后用 C/2C/2 即可:两倍损失乘一半权重,恢复原值。若实现使用平均损失,完全复制全部行不会改变平均数。这个检查帮助你比较公式、软件输出和不同训练集大小,而不是宣称复制数据能提高模型。调参记录中应明确 sum/mean、样本数和 CC,三个量不能分开看。

补充:从带松弛约束一步步消去松弛变量

标准软间隔形式对每点加入 ξi≥0\xi_i\ge0,要求 si=yi(wTxi+b)≥1−ξis_i=y_i(w^Tx_i+b)\ge1-\xi_i,目标为 ∥w∥22/2+C∑iξi\lVert w\rVert_2^2/2+C\sum_i\xi_i,这里 C>0C>0。固定 w,bw,b 后,约束等价于 ξi≥1−si\xi_i\ge1-s_i 且 ξi≥0\xi_i\ge0。因为目标随 ξi\xi_i 增大而增加,最优必取最小可行值 ξi=max⁡(0,1−si)\xi_i=\max(0,1-s_i)。代回才得到正文的hinge形式;松弛变量不是凭空等于错误标签。

自取四点功能间隔2、0.4、0、−0.5,最小松弛分别为0、0.6、1、1.5。第一个在安全带之外;第二个分类正确但违反间隔;第三个在判别边界;第四个已经错分。严格错分要求 si<0s_i<0,对应最小松弛大于1;恰好等于1仍需边界的分类约定。

只给一组可行而非最优松弛,不能反推位置。例如 s=2s=2 时人为取 ξ=7\xi=7 仍满足约束,但不是固定权重下的最小惩罚。只有说清“最小可行松弛”或已解到最优后,才可把松弛数值直接解释成欠缺的间隔。

本讲核心考点

  • 正确分类仍可能落入间隔、产生hinge损失(p.45–46,C 级)。
  • C 越大,违反间隔越贵(p.46,A 级:HW02 Q2)。

附录

A1 作业/往年题演练(非讲义内容):缺少数据时如何界定可计算部分

题面(HW02-2025T1-题目.pdf · Q2 · p.2)

p.2 Use the training data attached in the blackboard to train the SVM models. You need to apply the concepts of kernel functions and the soft-margin method, experimenting with at least two models each employing a different kernel to optimize performance until you achieve a test set accuracy of at least 85%. For your submission, please provide a brief introduction to your chosen models, and generate 2D plots for both the training and test sets (x-axis expresses x1x_1 while y-axis expresses x2x_2). You can represent the decision boundary with a solid line and the margins with dashed lines. Finally, capture and include screenshots of your code (code samples from Tutorial 3 may be used as a reference) within your submission. (25%)

As an example, a model using a linear kernel with C=1.0 yields the following result (~51.02% accuracy on test set):

公式按原题重排。这是2025T1旧作业,要求至少两种核、训练与测试图、至少85%的题定测试准确率,并指向Blackboard附带数据。当前这段只解释题面,没有取得并运行与它绑定的数据,因此不能给出“已达到85%”的结果。

从输入输出拆开流程:输入训练表中的两列坐标和标签;先检查行数、列与标签对应关系,再用训练数据拟合模型;输入测试坐标得到预测标签,与测试真实标签逐行比较。若测试总数为 NN,正确数为 kk,准确率是 k/Nk/N。达到85%要求 k≥⌈0.85N⌉k\ge\lceil0.85N\rceil;补充举例,若 N=20N=20,需至少17条正确。20是教学自取,不是该数据集的已知大小。

画图时,先在原二维平面上取一张网格,对每个网格点调用模型分数;画 f=0f=0 为实线,f=±1f=\pm1 为虚线。核模型不一定有原二维空间的线性权重,不能随便从高维参数抽两项画直线。对于核模型,±1是分数等高线,在原空间两曲线的欧氏距离也不一定处处相等。

比较核与C要记录各自设置,不应只贴一张最好看的图。题面用测试准确率作为实验门槛;补充说明,一般独立评价应另外划验证集选参数,最终测试仅评价,否则反复看测试结果调参会使测试不再独立。课件中的约51.02%是某一演示设置,不能推断我们当前数据或模型也会得到同一个数。

回到正文:Hinge loss 的折点在间隔1

来源与证据

  • 页码按当前本地阅读版 PDF;L04 共69页,未把旧年份讲义当成本学期原件。

  • 原件:L04-Support-Vector-Machine-2026T1.pdf(本地课件),p.42–46;均为当前 PDF 页号。

  • 本次正文逐页核对本讲原件;文末历史题明确标旧年份,只作练习,不据此推断本学期考核要求。

  • 往年卷仅证明相应年份考过;2024 卷及 2025 节选未公开的选择题不作推断。