做饭这件事,最怕没有标准答案,也最怕全靠标准答案。 年轻人小灶想学做菜,面前摆着三条路。第一条路:请一位严格的私教。每做一道菜,老师都要亲自尝一口,告诉他“盐多了两克,火大了三秒”。每一次练习都有明确反馈,练得越久手艺越稳——这叫监督学习。第二条路:没人教,他自己闯进一间堆满陌生食材的厨房,凭气味、颜色、手感把食材分成“辛辣的”“清甜的”“软糯的”几堆。没有对错,但分完类,厨房就有了秩序——这叫无监督学习。第三条路最妙:奶奶只示范了五道拿手菜,剩下的食材全靠自己摸索。他发现,只要把新食材和奶奶用过的调料比对相似度,就能推断出七八成用法——这叫半监督学习。 三条路的差别,本质只有一个问题:数据里有多少“标准答案”(标签)。标准答案越多,学得越稳,但要逐条人工标注,成本越高;没有标准答案,学得自由,却难有明确的对错信号。而半监督学习,恰好用一把小小钥匙——少量标签——撬动一整个仓库的无标签宝藏。 这篇文章,就陪你把这三种学习范式彻底搞懂:它们各吃什么数据、各有什么代表算法、什么时候该选哪一个。

岗位关联

对 AI 从业者而言,看懂三种范式等于看懂数据策略的“成本地图”:标注预算吃紧时能用半监督保住精度,毫无标签时能用无监督开路。这是从“会跑模型”到“会做方案”的分水岭。

目录
  1. 可视化演示
  2. 一、范式总览:厨房里有没有“标准答案”
  3. 二、监督学习:一对一的严格私教
  4. 三、无监督学习:独自探索陌生厨房
  5. 四、半监督思想:五道菜撬动整个仓库
  6. 五、三种半监督算法:自训练、协同训练与图传播
  7. 六、场景选型:什么时候用哪个
  8. 七、实战应用:大厨的省钱智慧
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

一、范式总览:厨房里有没有“标准答案”

小灶把三种学习方式贴在厨房墙上,每天对照着看。其实它们的分界线只有一条:训练数据里有没有“标准答案”,以及有多少。这个标准答案在机器学习里叫“标签”(label)——一条数据对应的正确答案,比如一张图片里是猫还是狗。

有标签的,叫「监督学习」:私教模式,输入和输出都摆在眼前,学的是从输入到输出的映射。没有标签的,叫「无监督学习」:探险模式,只有一堆原始数据,学的是数据内部的结构。而「半监督学习」站在中间:手里只有少量标签,但有个巨大的无标签仓库可以借用,专门解决“标注太贵”的现实问题。

无论哪种范式,模型要进步都得有“得失标准”。监督学习的标准来自标签,于是有了下面的经验风险——它统计的是:整桌菜按当前手艺来做,平均每道菜离老师的标准有多远。

回到厨房。小灶发现,私教之路贵在“每条反馈都要老师亲自尝”;探险之路便宜但没人告诉对错;而半监督的路,是奶奶留给他最大的财富。接下来我们一步步看,这三条路各自怎么走。

Remp(θ)=1N∑i=1Nℓ(f(xi;θ), yi)\displaystyle \mathcal{R}_{\text{emp}}(\theta) = \frac{1}{N}\sum_{i=1}^{N}\ell\big(f(x_i; \theta),\, y_i\big)
通俗讲:把 N 道菜的“做错程度”取平均,就是你这套手艺的平均失误值;训练就是不断调手艺(参数 θ)让这个平均值越来越小。
  1. 经验风险模型在整个训练集上的平均做错程度,越小代表学得越好,像整桌菜的平均失误分。
    Remp(θ)\mathcal{R}_{\text{emp}}(\theta)
  2. 模型参数模型内部可调的旋钮,相当于菜谱里的盐量与火候,训练的目的就是把它调准。
    θ\theta
  3. 平均符号把 N 个样本的损失全部加起来,再除以 N,得到“平均每道菜的失误值”。
    1N∑i=1N\frac{1}{N}\sum_{i=1}^{N}
  4. 损失函数衡量模型预测与标准答案差距的函数,像老师尝完菜后打的分数,差距越大分越高。
    ℓ(f(xi;θ), yi)\ell\big(f(x_i; \theta),\, y_i\big)
  5. 预测与标签f(x_i; θ) 是模型对第 i 个样本的预测,y_i 是它对应的标准答案,两者被损失函数放在一起比对。
    f(xi;θ),  yif(x_i; \theta),\; y_i

二、监督学习:一对一的严格私教

私教模式有它的爽,也有它的痛。小灶请的私教有个规矩:每一道菜,必须等他下筷子尝过、点评过,才算完成。咸了、淡了、火候老了,他全部记下来,下一道菜照着改。这就是监督学习的运行方式:每条训练数据都附带“标准答案”,模型做出预测后马上与标准答案比对,计算误差,再回头调整自己。

正式地说,监督学习用「有标签数据」训练模型,解决两类任务:输出是类别时叫「分类」,比如判断一封邮件是不是垃圾邮件;输出是连续数值时叫「回归」,比如预测明天的房价。代表算法有线性回归、逻辑回归、支持向量机、决策树与随机森林,以及各类深度神经网络。

分类任务最常用的“失分表”叫交叉熵损失:

私教模式的好处是上限高、指哪打哪,但痛点也鲜明:每一份标签都要人力来写。小灶算过账——把一百道菜每道都让私教点评,光课时费就够他吃一年外卖。这正是后两种范式登场的理由。

LCE=−1N∑i=1N∑k=1Kyik log⁡y^ik\displaystyle \mathcal{L}_{CE} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{k=1}^{K} y_{ik}\,\log \hat{y}_{ik}
通俗讲:对每个样本,模型要给 K 个类别各打一个概率分;只有当它给真实类别打的概率接近 1 时,失分才趋近于 0。越自信越错,罚得越狠。
  1. 交叉熵分类任务最常用的损失函数,专门用来衡量“预测概率分布”和“真实答案”之间的距离。
    LCE\mathcal{L}_{CE}
  2. 负号log 的结果是负数,加个负号变成正失分,方便训练时做最小化,数值越小越好。
    −-
  3. 双重求和先对 K 个类别求和,再对 N 个样本求平均,得到全体样本的平均失分。
    1N∑i=1N∑k=1K\frac{1}{N}\sum_{i=1}^{N}\sum_{k=1}^{K}
  4. 独热标签y_ik 只有 0 或 1,代表第 i 个样本是否属于第 k 类,只有真实类别那一项是 1。
    yiky_{ik}
  5. 预测概率\hat{y}_{ik} 是模型认为第 i 个样本属于第 k 类的概率,取值范围在 0 到 1 之间。
    y^ik\hat{y}_{ik}
  6. 对数惩罚log 让“很有把握却预测错”的样本受到更重的惩罚,逼着模型不敢盲目自信。
    log⁡y^ik\log \hat{y}_{ik}

三、无监督学习:独自探索陌生厨房

有一天私教辞职了,小灶被扔进一间没有菜谱的厨房。没有标准答案,他只能靠鼻子闻、靠手摸,把一屋子陌生食材分门别类:气味冲鼻的放一起,口感软糯的放一起,颜色相近的放一起。分完类,他虽然没有“学会做某道菜”,但对厨房的版图了如指掌。

这就是无监督学习:训练数据没有标签,模型自己发现数据里的结构。它最常回答两类问题。第一类是「聚类」:把相似样本自动分成若干组,组内像、组间不像,代表算法有 K-Means、DBSCAN、层次聚类。第二类是「降维」:把高维数据压缩到少数几个关键维度,代表算法有 PCA、t-SNE。

聚类算法的目标很直白——让每个样本离自己的组中心尽可能近:

无监督学习像是厨房里的“格局整理术”:它不负责教你做菜,但帮你把原料摆得明明白白,为后续决策提供地图。它的代价是,没有标准答案就没有明确的“对错信号”,分组结果需要人来解读——这恰恰是半监督学习要弥补的缝隙。

J=∑i=1m∑k=1Krik ∥xi−μk∥2\displaystyle J = \sum_{i=1}^{m}\sum_{k=1}^{K} r_{ik}\,\lVert x_{i} - \mu_{k}\rVert^{2}
通俗讲:把每个食材到它所在那堆“代表口味”的距离平方全加起来。总和越小,说明分组越合理,同组食材长得越像。
  1. 目标函数J 是所有样本到其所属簇中心的距离平方和,它是聚类要最小化的总代价。
    JJ
  2. 样本计数m 是所有样本的数量,每个样本都要参与计算,一个都不能漏,像清点整间厨房的食材。
    ∑i=1m\sum_{i=1}^{m}
  3. 簇中心μ_k 是第 k 组的“代表口味”,即簇的质心,相当于每组食材的平均气质。
    μk\mu_{k}
  4. 归属指示r_ik 为 1 表示第 i 个样本被分到第 k 簇,否则为 0,决定了样本对哪个中心负责。
    rikr_{ik}
  5. 距离平方样本与簇中心欧氏距离的平方,离中心越远代价越大,逼着样本向自己的中心靠拢。
    ∥xi−μk∥2\lVert x_{i} - \mu_{k}\rVert^{2}

四、半监督思想:五道菜撬动整个仓库

奶奶临行前,只给小灶示范了五道菜:红烧肉、清蒸鱼、番茄炒蛋、拍黄瓜、糖醋排骨。剩下的,是一整个仓库的食材和一本零散的笔记。小灶没有急着全请私教,而是想:这五道菜是“种子”,仓库里的食材是“待开发的矿藏”。他把新食材和五道菜里的调料比对——一种没见过的菌菇,香气和香菇有九成像,那就按香菇的方法处理;一种陌生的绿叶菜,口感和菠菜很像,那就按菠菜的步骤来。

这个思路,就是半监督学习的核心思想:用少量有标签数据(五道菜)加上大量无标签数据(仓库食材)共同训练模型。它之所以成立,建立在三个假设之上。「平滑假设」:相似的输入,输出应该相似,像的食材做法就该像;「聚类假设」:同簇的样本大概率同标签,同一堆里的食材多半是一路的;「流形假设」:高维数据其实躺在一个低维流形上,只需沿流形度量远近。

在数学上,半监督训练往往写成监督损失与无监督约束的加和:

半监督的妙处就在这:它不追求把五道菜练到极致,而是让五道菜成为“杠杆支点”,借助整仓库食材的结构信息,撬动远超五道菜的学习效果。

Lsemi=Lsup+λ Lunsup\displaystyle \mathcal{L}_{\text{semi}} = \mathcal{L}_{\text{sup}} + \lambda\,\mathcal{L}_{\text{unsup}}
通俗讲:总失分 = 五道菜的失分(监督信号)+ 一个调节系数 × 对仓库食材的“结构约束”(让相似食材获得相似处理)。两者缺一不可。
  1. 半监督总损失整个训练过程要最小化的总目标,等于监督损失与无监督约束的和。
    Lsemi\mathcal{L}_{\text{semi}}
  2. 监督损失只针对少量有标签样本计算,像奶奶亲手纠正的五道菜,提供明确的“对错信号”。
    Lsup\mathcal{L}_{\text{sup}}
  3. 调节系数λ 控制无标签约束的力度,太小等于没用,太大可能带偏主任务,需要仔细调。
    λ\lambda
  4. 无监督约束让模型在无标签数据上也保持“平滑”“聚类”等性质的惩罚项,是半监督的关键增量。
    Lunsup\mathcal{L}_{\text{unsup}}

五、三种半监督算法:自训练、协同训练与图传播

把思想变成算法,小灶摸索出三种打法。

第一种,自训练,像“自信的自我操练”。小灶先用五道菜练出手感,再对仓库里的食材做初步判断,凡是自己特别有把握的(比如把握超过 90%),就当作“自己教自己的标准答案”补进训练集,再练下一轮。如此循环,训练集像滚雪球一样越滚越大。要注意的是,雪球也可能滚进脏雪——判断错的样本会被放大,所以通常只挑高置信度的样本。

第二种,协同训练,像“两个品鉴师互相把关”。一个品鉴师看“口味”,另一个看“卖相”,双方从各自视角对同一批食材下判断;只有当两个人都不犹豫时,才把新食材纳入训练。它要求数据特征天然分成两个“视图”,比如网页分类时,一个视图看页面文字,另一个视图看超链接锚文本。

第三种,图半监督,像“食材在相似度货架上传递标签”。把所有样本看作图的节点,两点越像边越粗;标签从几个已标注的种子节点出发,沿着边一圈圈扩散到整个图,最终每个节点都染上自己的颜色。它的迭代公式长这样:

三种打法,本质是把“相似的数据应该有相似标签”这句话翻译成不同的数学程序:自训练靠模型自己的信心,协同训练靠两个视角的共识,图方法靠邻居关系的加权投票。小灶发现,它们共同的前提,都是那份“相似度判断”得靠谱。

fi(t+1)=∑j∈N(i)wij fj(t)\displaystyle f_{i}^{(t+1)} = \sum_{j \in \mathcal{N}(i)} w_{ij}\, f_{j}^{(t)}
通俗讲:每一轮,把节点 i 周围所有“长得像”的邻居标签,按相似度加权平均,作为 i 的新标签。传着传着,整个图就“染”好了。
  1. 标签函数f_i 是第 i 个节点携带的“口味标签”,它会随着迭代不断更新,直到全图稳定。
    fi(t+1)f_{i}^{(t+1)}
  2. 迭代时刻右上角 (t+1) 表示新一轮更新,标签从邻居那里接力而来,一轮传一轮。
    (t+1)^{(t+1)}
  3. 邻居集合N(i) 是与样本 i 长得像的所有邻居,只有这些“近亲”才有资格影响 i。
    N(i)\mathcal{N}(i)
  4. 相似度权重w_ij 是 i 与 j 的相似度,越像权重越大,说话分量越重,像关系越好的朋友越有影响力。
    wijw_{ij}
  5. 加权累加把所有邻居的标签按权重加起来,形成 i 的新标签,本质是“少数服从多数、像者从像”。
    ∑j∈N(i)wij fj(t)\sum_{j \in \mathcal{N}(i)} w_{ij}\, f_{j}^{(t)}

六、场景选型:什么时候用哪个

小灶终于开起了饭店,开始盘算:什么情况该请私教,什么情况该自己探险,什么情况该用奶奶的巧劲?他总结出三条判断标准。

第一,看标注成本。如果请专家标注贵得要命(比如医学影像要主任医师一张一张看),那就必须想尽办法减少标签用量——半监督是首选;如果标注便宜(比如众包打普通商品图,几毛钱一条),直接用监督学习更省心。第二,看无标签数据的规模。仓库里若只有三五十件食材,半监督派不上用场;若有上万件,无标签数据的结构信息就开始显威力。第三,看精度要求与容错率。金融风控、医疗诊断这类“错不起”的场景,优先保证标签质量;推荐系统、用户分群这类容错较高的场景,无监督甚至半监督足以撑起业务。

把账算清楚,离不开一张成本公式:

选型指南可以浓缩成一句话:标签便宜量又足,放心监督;标签昂贵仓库深,半监督省钱;一张标签都没有,无监督先画地图。小灶的饭店生意不错,秘诀就是“该花的花,该省的省”。

Ctotal=cl×nl+ct×T\displaystyle C_{\text{total}} = c_{l} \times n_{l} + c_{t} \times T
通俗讲:总开销 = 每条标签的单价 × 标签数量 + 每小时算力成本 × 总训练时长。半监督的目标就是把第一项压到最低,同时不过分抬高第二项。
  1. 总成本整个数据策略的总开销,包括人工标注与机器训练两大部分,是选型的核心依据。
    CtotalC_{\text{total}}
  2. 单个标注价格c_l 是标注一条数据的单价,医生标注远比众包贵,直接决定半监督的吸引力。
    clc_{l}
  3. 标注数量n_l 是需要标注的样本数,半监督能把上万条的标注需求压缩到几百条。
    nln_{l}
  4. 单位训练成本c_t 是每单位时间的算力成本,训练越久、数据越多,这部分越可观。
    ctc_{t}
  5. 训练时长T 是总训练时间,用无标签数据会变相增加训练量,要防止省了标注费、烧了电费。
    TT

七、实战应用:大厨的省钱智慧

小灶把半监督的巧劲用在了饭店的三个角落。

第一个角落是客服工单。每天上千条售后消息,请人逐条标注“退款、换货、投诉、咨询”太贵。他只标了 300 条典型工单,剩下的交给自训练:模型先用 300 条学出规律,给剩余工单打分,挑高置信的入库,循环几轮后,工单自动分类的准确率从七成出头提到接近九成。第二个角落是菜品图片识别。后厨拍摄的菜品照片很多没有类别标签,他用图半监督把几张标注图和几百张无标注图连成相似度图,标签沿图扩散,新品上架识别马上可用。第三个角落是医疗机构的合作项目——在只有少量确诊 CT 影像时,用协同训练把医生的标注价值放大数倍,辅助筛查肺结节的敏感度接近全监督水平。

半监督带来的收益,可以直观地写成一个差值:

小灶的经历,正是今天许多 AI 团队的写照:数据不是不够,而是“带答案的数据”不够。三种范式不是三道菜,而是三种火候——知道什么时候大火、什么时候小火、什么时候文火慢炖,才算真正掌勺。

ΔA=Asemi−Asup\displaystyle \Delta A = A_{\text{semi}} - A_{\text{sup}}
通俗讲:在标签数量完全相同的条件下,把“只拿这点标签硬训”的准确率,换成“标签+海量无标签”的准确率,提升的部分就是半监督贡献的“免费午餐”。
  1. 收益增量ΔA 是半监督相对纯监督的准确率提升,直接回答“花同样的标注钱,值不值”。
    ΔA\Delta A
  2. 半监督准确率A_semi 是半监督方案在评测集上的准确率,标签虽少但有无标签数据撑腰。
    AsemiA_{\text{semi}}
  3. 纯监督准确率A_sup 是只用少量标签直接训练的准确率,它是半监督的对照组与底线。
    AsupA_{\text{sup}}

AI 应用场景

客服工单自动分类

阶段:数据准备 / 标注策略

解决的问题:传统做法要求人工标注上万条工单才能训出可用的分类器,标注周期长、成本高。半监督自训练只要求业务方标几百条典型工单,模型先用这批标签学规律,再给海量未标注工单打高置信度伪标签,循环扩充训练集,用 5% 的标注量达到接近全监督的效果。

具体案例:某电商平台每天产生 2 万条售后工单,运营团队仅标注 500 条典型样本,用自训练扩展到全量数据,退款/换货/投诉/咨询四分类准确率从 72% 提升到 88%,标注成本下降约九成。

医疗影像辅助诊断

阶段:模型训练 / 冷启动

解决的问题:医学影像标注依赖资深医生逐张判读,单价极高且产能有限。图半监督把少量确诊影像和大量未确诊影像连成相似度图,让标签沿“长得像”的边传播,把稀缺的专家知识放大到整个影像库,显著降低冷启动门槛。

具体案例:某三甲医院的肺结节 CT 筛查项目,仅有 300 张专家确诊片、2700 张未标注片,用标签传播训练出的检测模型,敏感度达到 91%,接近用 3000 张全标注数据训练的模型水平。

电商用户行为分群

阶段:探索性数据分析

解决的问题:新业务启动时往往没有任何用户画像标签,传统方法靠运营拍脑袋划人群。无监督聚类用 K-Means 对用户的购买频次、客单价、品类偏好等行为特征自动分组,快速画出“价格敏感型”“品质偏好型”“高频小额型”等客群地图,为后续精细化运营提供起点。

具体案例:某生鲜电商上线首月,用 K-Means 对 20 万用户的消费行为聚类,识别出 5 个高价值客群,运营团队据此设计差异化优惠券,次月复购率提升 15%。

Python 演示

python43 行
"""自训练演示:只用 10% 标签完成半监督分类。"""import numpy as npfrom sklearn.datasets import make_moonsfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_score  def self_training(X, mask, y_labeled, base_model, thresh=0.9, max_iter=20):    X_labeled = X[mask]    y_labeled = y_labeled.copy()    X_unlabeled = X[~mask]    for _ in range(max_iter):        if len(X_unlabeled) == 0:            break        model = base_model()        model.fit(X_labeled, y_labeled)        proba = model.predict_proba(X_unlabeled)        confidence = proba.max(axis=1)        ok = confidence >= thresh        if not ok.any():            break        X_labeled = np.vstack([X_labeled, X_unlabeled[ok]])        y_labeled = np.hstack([y_labeled, proba[ok].argmax(axis=1)])        X_unlabeled = X_unlabeled[~ok]    return base_model().fit(X_labeled, y_labeled)  def main():    X, y = make_moons(n_samples=300, noise=0.15, random_state=42)    rng = np.random.RandomState(0)    mask = rng.rand(len(X)) < 0.1    model = self_training(X, mask, y[mask],                          lambda: SVC(probability=True, random_state=0))    pred = model.predict(X)    print("自训练准确率: %.3f" % accuracy_score(y, pred))    baseline = SVC(probability=True, random_state=0).fit(X[mask], y[mask])    base_pred = baseline.predict(X)    print("仅用标签准确率: %.3f" % accuracy_score(y, base_pred))    print("标签比例: %.0f%%" % (mask.mean() * 100))  if __name__ == "__main__":    main()
目的:在月牙形二分类数据集上,用 10% 的标签 + 90% 的无标签数据运行自训练,对比“只用标签直接训练”的准确率,直观展示半监督的增益。
  1. def self_training(X, mask, y_labeled, base_model, thresh=0.9, max_iter=20):定义自训练主流程,参数包括特征、标签掩码、已标注标签、基模型工厂和置信度阈值。
  2. model.fit(X_labeled, y_labeled)先用当前的小规模标签集训练一个基础分类器,相当于先用五道菜练出手感。
  3. proba = model.predict_proba(X_unlabeled)让模型对无标签数据输出概率分布,判断每个样本的预测把握。
  4. ok = confidence >= thresh只保留置信度达到 0.9 的样本,高门槛拦住低质量伪标签,防止错误滚雪球。
  5. X_labeled = np.vstack([X_labeled, X_unlabeled[ok]])把高置信伪标签样本并入训练集,实现“滚雪球”式的数据扩充。
  6. y_labeled = np.hstack([y_labeled, proba[ok].argmax(axis=1)])用模型预测的类别作为伪标签,与原始标签拼接。
  7. mask = rng.rand(len(X)) < 0.1随机留下 10% 的样本作为有标签数据,模拟标注稀缺的真实场景。
  8. baseline = SVC(probability=True, random_state=0).fit(X[mask], y[mask])训练一个只用少量标签的对照组模型,用于对比半监督的收益。

常见误区

误区我一直以为半监督学习就是先用无监督把数据分好组,再在组上跑监督分类,两步拼起来就是半监督。

正解半监督不是简单的两段拼接,它让少量标签与大量无标签数据在同一个训练过程中互相影响。自训练是“训练→伪标签→再训练”的循环迭代,图方法更是让标签沿相似度持续传播,无标签数据提供的是结构约束,而非仅当“待标注的原料”。两段式只是朴素近似,真正的半监督讲究联合优化。

为何常见:“先无监督后监督”是最容易想到的拼接思路,加上不少教程用“聚类+分类”直观演示半监督,容易以偏概全。

误区数据没有标签就做不了机器学习,我只好先去花钱标数据,标完才能开工。

正解无监督学习专门处理无标签数据:聚类能发现群组,降维能压缩特征,异常检测能揪出离群点。哪怕最终目标是分类,也可以先用无监督摸底数据分布,再决定标注策略。半监督更进一步,只需极少量标签就能利用海量无标签数据,标注并非唯一入口。

为何常见:多数入门课程从监督学习讲起,给新手造成“先有标签才有学习”的错觉。

误区预算允许就多标点数据,最好把标签加到 100%,这样模型肯定最稳。

正解标签的边际收益是递减的,且标注过程本身会引入噪声和偏差。数据量有限时多加标签确实有用,但到后期提升趋缓;此时把无标签数据用起来、做数据增强、调结构,性价比更高。半监督的精髓就是把“多买标签”的预算换成“少量标签+海量无标签”的组合。

为何常见:监督学习里“标签多→准确率高”的正相关印象太深,忽略了成本曲线与边际效应。

误区自训练用模型自己的预测当标签,错一个就滚雪球,迟早崩盘,我不如老老实实全标注。

正解自训练确实有错误累积风险,但工程上有成熟护栏:只采用高置信度样本(比如概率 > 0.9)、设置每轮加入上限、用协同训练的双视图互相制衡。实践中自训练在文本分类、目标检测里常常带来几个点的提升,并非洪水猛兽。

为何常见:把“所有预测都当标签”的极端版本当成了自训练的全部,忽略了置信度阈值与迭代控制。

误区图半监督就是把样本连个线,跟画关系图差不多,没什么技术含量。

正解图半监督的关键在建图与传播:如何定义相似度(特征空间距离、k 近邻、热核权重)、如何保证传播收敛、如何处理稀疏图,都是研究与实践的深水区。标签传播的收敛性、噪声鲁棒性背后有一整套理论支撑,远非“连线涂色”那么简单。

为何常见:图方法展示起来直观(点连线、色扩散),动画视频让外行低估了背后的数学设计。

面试题

Q1. 决定学习范式归属的核心因素是?

单选题 · easy

  • A.模型的参数量大小
  • B.训练数据是否带标签← 正确答案
  • C.算法是否使用神经网络
  • D.训练集样本总数多少

答案:B。监督、无监督、半监督的分水岭就是数据的标签情况:全有标签为监督,全无标签为无监督,少量标签加大量无标签为半监督。参数量、网络结构、样本量都不决定范式归属,就像小灶的厨房,关键是有没有“标准答案”,而不是锅有多贵。

Q2. 以下哪个是典型的监督学习任务?

单选题 · easy

  • A.将新闻文章自动聚类分组
  • B.判断邮件是否为垃圾邮件← 正确答案
  • C.用 PCA 压缩图片特征维度
  • D.根据用户行为自动划分客群

答案:B。垃圾邮件分类要求每条邮件都有“是不是垃圾”的标签,是典型的分类任务,属于监督学习。聚类、PCA 降维、客群划分都不依赖标签,属于无监督学习。

Q3. K-Means 算法属于哪种学习范式?

单选题 · easy

  • A.监督学习
  • B.无监督学习← 正确答案
  • C.半监督学习
  • D.强化学习

答案:B。K-Means 不依赖任何标签,按距离把样本自动分成 K 簇,属于无监督学习的聚类算法,对应小灶“凭手感把陌生食材分堆”的做法。

Q4. 半监督学习训练数据的构成是?

单选题 · mid

  • A.样本全部带有标签
  • B.样本全部没有标签
  • C.少量标签配大量无标签← 正确答案
  • D.标签与无标签数量均等

答案:C。半监督的“半”指标签比例低但非零:少量标签(五道菜)负责提供监督信号,大量无标签(仓库食材)负责提供结构约束。全部有标签是监督,全部无标签是无监督,数量均等也非必要条件。

Q5. 自训练每轮把伪标签加入训练集的前提是什么?

单选题 · mid

  • A.随机挑选无标签样本
  • B.模型对预测有高置信度← 正确答案
  • C.人工核实每一条预测
  • D.无标签样本必须来自新域

答案:B。自训练的错误会滚雪球,所以只把高置信度(如概率 > 0.9)的预测当作伪标签扩入训练集,用阈值控制噪声。随机挑选会引入大量错误,人工核实又失去了半监督省力的意义。

Q6. 图半监督中标签传播的直接依据是?

单选题 · hard

  • A.样本加入训练集的时间顺序
  • B.样本之间的相似度加权关系← 正确答案
  • C.样本特征的维度总数大小
  • D.模型训练轮次的累计数量

答案:B。图半监督把样本看作节点、相似度看作边权,标签从种子节点沿边加权传播。权重反映“长得像”,这正是平滑假设的图语言表达,与时间、维数、轮次无关。

Q7. 半监督学习成立的常见假设包括哪些?

多选题 · mid

  • A.相似输入应当得到相似输出← 正确答案
  • B.同簇样本大概率共享标签← 正确答案
  • C.高维数据居于低维流形← 正确答案
  • D.无标签数据必须多出百倍

答案:ABC。平滑假设(相似输入→相似输出)、聚类假设(同簇同标签)、流形假设(高维数据躺低维流形)是半监督的三大理论支柱。D 只是经验上的量级感受,不是成立前提。

Q8. 协同训练发挥效用的前提条件是?

单选题 · extreme

  • A.所有特征服从高斯分布
  • B.特征可分两个充分冗余的视图← 正确答案
  • C.训练集必须包含图像数据
  • D.标签必须全部来自专家

答案:B。协同训练要求特征天然能切成两个“视图”,且每个视图都足以独立训练一个分类器,两个分类器对无标签样本的共识才可信。这对应“口味与卖相两个品鉴师互相把关”,与分布假设、图像数据、专家标注无关。

Q9. 当标注成本高昂时,合理的策略包括哪些?

多选题 · mid

  • A.放弃机器学习改用人工规则
  • B.采用半监督利用无标签数据← 正确答案
  • C.用主动学习优先标注关键样本← 正确答案
  • D.把所有无标签数据直接删除

答案:BC。半监督放大少量标签的价值,主动学习让每次标注都花在刀刃上,两者可以组合使用。A 未必合理,D 直接浪费宝贵数据,都不符合降本增效的方向。

Q10. 自训练过程中最需要警惕的风险是?

单选题 · hard

  • A.模型过拟合训练集中的噪声
  • B.错误伪标签随迭代不断累积← 正确答案
  • C.无标签数据的数量不够充足
  • D.训练时间的线性持续增长

答案:B。自训练用模型自己的预测当标签,一旦早期预测错误且置信度高,伪标签会混入训练集并在下一轮被强化,形成错误累积。工程上通过置信度阈值、每轮加入上限、双视图互检来抑制,这才是自训练的核心风险点。