想象你经营一家大酒楼,后厨需要两位高手。第一位是品菜师:菜一端上来,尝一口,他立刻能说出“这是川菜,辣度七分”“这道火候过了”——他精于判断,却从不亲自下厨。第二位是大厨:他满脑子装的是“什么食材配什么调料、什么火候出什么味”的完整配方,他不但能品出菜的来历,还能凭空设计出一道前所未见的新菜。 机器学习的世界里,恰好就有这两类角色:判别式模型(Discriminative Model)像品菜师,只学“看到输入、给出结论”之间的那条边界;生成式模型(Generative Model)像大厨,学的是“输入和输出如何共同出现”的完整规律。品菜师知道“吃了什么”,大厨知道“怎么做的”。本文就带你走进这两间厨房,看懂他们的区别、代表算法,以及何时该“聘请”谁。

岗位关联

搞懂两派模型的分工与权衡,是搭建分类、生成、风控系统的第一步——认清适用边界,才能为真实任务选对模型,这是机器学习工程师的核心判断力。

目录
  1. 可视化演示
  2. 基本概念:厨房里的两种人
  3. 核心差异:思路的分岔路口
  4. 生成式算法:大厨的看家本领
  5. 判别式算法:品菜师的看家本领
  6. 性能对比:数据与误差的权衡
  7. 适用场景:任务决定分工
  8. 实战选型:从需求到模型
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示生成式与判别式模型的建模路径差异、代表算法族对比,以及在小样本与大样本下的准确率交叉现象。

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

建模路径对比 生成式:建模P(X,Y)=P(X)P(Y|X),可生成数据 判别式:直接建模P(Y|X),专注分类边界 P(X,Y) vs P(Y|X) 生成式建模联合概率,判别式建模条件概率

基本概念:厨房里的两种人

你开了一间大酒楼,后厨需要两位高手。第一位是品菜师:菜端上来,尝一口,他立刻告诉你“这是川菜,够辣”“这盘火候过了”——他精于判断,却从不亲自下厨。第二位是大厨:他满脑子都是“什么食材配什么调料、什么火候出什么味”,他不但能品出菜系的来历,还能凭空设计出一道新菜。机器学习的世界里,这两类角色被称作生成式模型与判别式模型:前者像大厨,后者像品菜师。

我们把“端上来的一道菜”写成 X,“这道菜属于哪个菜系”写成 Y。品菜师学习的是条件概率 P(Y|X):已经看见了菜,判断它是哪个菜系的概率。大厨学习的则是联合概率 P(X,Y):这道菜的样貌和它的菜系标签,在现实中是怎样成对出现的。前者只对“边界”负责,后者对“整个配方”负责。这就是理解两派模型的第一块基石。

联合概率 P(X,Y) 并不是一个孤立的数字,它可以拆成两块的乘积:先验 P(Y) 和似然 P(X|Y)。先验回答“这家店本来就川菜多还是粤菜多”,似然回答“如果这是一道川菜,它有多大概率长这样”。两者相乘,就是“又见川菜、又见这盘红油菜”同时发生的概率。这种拆解在数学上称为概率的乘法法则。

品菜师只学“看见菜 → 报菜系”这一段,也就是 P(Y|X);大厨却把 P(X|Y) 和 P(Y) 都记下来,组合成完整的 P(X,Y)。所以大厨既能回答“这菜是什么”,也能回答“这菜怎么做”;品菜师只能回答前者。这就是两派模型分道扬镳的起点。

P(X,Y)=P(X∣Y)×P(Y)\displaystyle P(X,Y) = P(X \mid Y) \times P(Y)
联合概率等于“在 Y 前提下 X 的概率”乘以“Y 本身的概率”,是生成式模型一切计算的起点。
  1. 联合概率 P(X,Y)表示 X 与 Y 同时出现的概率,类比“这盘菜长这样”和“它属于川菜”两件事同时成立。
    P(X,Y)\displaystyle P(X,Y)
  2. 条件概率 P(X|Y)在已知 Y 的条件下 X 出现的概率,类比“已知是川菜,它长成红油状”的匹配度。
    P(X∣Y)\displaystyle P(X \mid Y)
  3. 边缘概率 P(Y)不考虑 X 时 Y 本身出现的概率,类比“店里所有菜中川菜占比”。
    P(Y)\displaystyle P(Y)

核心差异:思路的分岔路口

品菜师和小徒弟打赌:徒弟把菜端上来,品菜师只需说出“辣 / 不辣”。他不需要知道花椒放了多少、油温几成,他练就的只是舌尖上的那道分界线。大厨想回答同样的问题,却必须先翻自己的配方本:这盘菜长这样,更可能出自哪一类的配方?两人最后都能回答“这是什么菜”,但大脑里的知识结构完全不同。

在数学上,这道分界线正是判别式模型的全部:直接拟合 P(Y|X),把输入 X 映射到标签 Y 的概率,对联合分布 P(X,Y) 一无所知也无所谓。生成式模型则绕了个弯:它先学 P(X|Y) 和 P(Y),再用贝叶斯定理把分子搭起来,得到 P(Y|X)。殊途同归的分类结果,背后是截然不同的学习路线。

两派差异可归纳为四点:其一,建模对象不同——生成式建模联合概率,判别式建模条件概率;其二,训练目标不同——生成式要让“整盘菜出现的似然”最大,判别式只要让“分类边界”最准;其三,边界求法不同——生成式通过贝叶斯定理间接换算,判别式直接优化决策面;其四,数据需求不同——生成式要估计更多参数,通常需要更多数据支撑。

粗略地说,判别式模型是“直接考试”,生成式模型是“先复习整本教材再考试”。冲刺阶段,直接考试的往往更快更准;但教材齐全时,复习过的考生能答出更多超纲题——比如凭空画一道新菜。

P(Y∣X)=P(X∣Y)×P(Y)P(X)\displaystyle P(Y \mid X) = \frac{P(X \mid Y) \times P(Y)}{P(X)}
贝叶斯定理让“配方知识”能反推出“判断结果”,这是生成式模型用于分类的核心桥梁。
  1. 后验概率 P(Y|X)看了 X 之后 Y 的概率,也就是品菜师最后报出的那句话。
    P(Y∣X)\displaystyle P(Y \mid X)
  2. 分子 P(X|Y) × P(Y)大厨从配方本上查到的“这盘菜配这个菜系”的联合概率。
    P(X∣Y)×P(Y)\displaystyle P(X \mid Y) \times P(Y)
  3. 分母 P(X)X 出现的总概率,对所有菜系求和得到,起归一化作用,保证概率加起来等于 1。
    P(X)\displaystyle P(X)

生成式算法:大厨的看家本领

大厨流派里师门众多。有的师傅靠“看配料表”猜菜系:扫一眼花椒、辣椒、豆瓣酱的用量,心里大致有数——这就是朴素贝叶斯的哲学。有的师傅给每类菜画一张“味道分布图”,记录平均辣度和波动范围——这就是高斯混合模型的思路。还有的师傅记的是上菜顺序、行文顺序——隐马尔可夫模型和 GPT 语言模型都是这个路数。

朴素贝叶斯为什么叫“朴素”?因为它做了一个大胆假设:特征之间彼此独立。做麻婆豆腐时,花椒用量和辣椒用量被假设互不影响,于是可以把每个特征单独拿出来乘起来。代价是假设有时并不真实,收益是计算量极小、小样本也能训练。它是生成式家族中最容易上手的入门代表。

用公式表达朴素贝叶斯的分类决策:对所有候选标签比较后验大小,取最大者。因为分母 P(X) 对所有标签都一样大,可以省略,只剩下先验与各特征似然的连乘。

GPT 这类大模型同样属于生成式家族,只是它把“配料”换成了“文字”,把“菜系”换成了“下一个词”。它记住的是亿万语料中词与词共同出现的规律,所以既能续写文章,也能“创作”从未存在的句子——这正是生成式的看家本领。

y^=arg⁡max⁡y(P(y)×∏i=1nP(xi∣y))\displaystyle \hat{y} = \arg\max_{y} \left( P(y) \times \prod_{i=1}^{n} P(x_i \mid y) \right)
朴素贝叶斯把“猜菜系”拆成“先验上座率 × 每项配料单独的证据”,连乘后取最大者。
  1. 预测标签 ŷ大厨最终报出的菜系。
    y^\displaystyle \hat{y}
  2. argmax 运算从所有候选 y 中挑出让括号内算式最大的那一个。
    arg⁡max⁡y\displaystyle \arg\max_{y}
  3. 先验 P(y)平时店里哪个菜系上座率更高。
    P(y)\displaystyle P(y)
  4. 连乘符号把每个特征各自的证据累乘起来,对应“各配料独立贡献”的假设。
    ∏i=1nP(xi∣y)\displaystyle \prod_{i=1}^{n} P(x_i \mid y)

判别式算法:品菜师的看家本领

品菜师流派同样高手如云。逻辑回归像一位打分老师:他给每道菜的若干特征分别配一个权重——辣度占 3 分、麻度占 2 分、甜度倒扣 1 分,加权求和后再经过一个“挤压”操作,变成 0 到 1 的概率。这位老师不关心菜怎么做的,只关心分数能不能把川菜和粤菜分开。

逻辑回归的“挤压”函数叫 sigmoid,它像一把漏斗,把任意实数打分压缩到 (0,1) 区间,正好当概率用。支持向量机(SVM)则是另一位讲究的品菜师:他不满足于“差不多分开”,而是要在两个菜系之间找到一条最宽的分隔带,让边界更稳健。决策树则像连珠炮式提问:“辣吗?麻吗?先炸后蒸?”逐条筛选出结论。

以逻辑回归为例:设 X 为特征向量,W 为权重,b 为偏置。线性打分 W·X + b 越大,P(Y=1|X) 越接近 1;打分越小,越接近 0。训练时通过最大似然让“真实标签对应的概率”尽可能大。整个过程只需优化 W 和 b,参数数量与特征维度成正比,训练非常轻量。

品菜师的看家本领就是把“判断”这件事做到极致:不需要会做菜,不需要懂食材原理,只要边界划得好。因此在数据充足、任务单一(只要分类标签)时,判别式模型往往又快又准——这也是它在工业界长期占据主力位置的原因。

P(Y=1∣X)=11+e−(W⋅X+b)\displaystyle P(Y=1 \mid X) = \frac{1}{1 + e^{-(W \cdot X + b)}}
逻辑回归把“加权打分 + 挤压变换”合二为一,直接输出分类概率,是判别式模型的经典代表。
  1. 线性打分 W·X + b品菜师对这道菜给出的原始加权分数。
    W⋅X+b\displaystyle W \cdot X + b
  2. 自然指数 e把打分映射到指数尺度,放大分数间的差距。
    e−(W⋅X+b)\displaystyle e^{-(W \cdot X + b)}
  3. 分母 1 + e⁽⁻……⁾sigmod 的挤压过程,无论打分多大或多小,最终都落在 0 与 1 之间。
    1+e−(W⋅X+b)\displaystyle 1 + e^{-(W \cdot X + b)}
  4. 条件概率 P(Y=1|X)输出“这是川菜”的概率,可直接用于分类决策。
    P(Y=1∣X)\displaystyle P(Y=1 \mid X)

性能对比:数据与误差的权衡

一场盲测:数据是两桌菜,一桌只有 30 份样本,另一桌有 3000 份。品菜师(判别式)在 3000 份时表现神勇,大量数据让边界学得清清楚楚;可只有 30 份时,他只能靠经验和猜,容易过拟合。大厨(生成式)在样本少时反而淡定——他脑子里有“菜系一般长什么样”的先验知识,能帮他把缺失的信息补上。

模型的误差可以拆成三块:偏差(Bias)、方差(Variance)和噪声(Noise)。偏差像大厨的固定手艺缺陷——无论做多少次,味道总偏咸一点;方差像大厨发挥的波动——今天咸明天淡;噪声则是食材本身的不确定性,谁也无法消除。判别式模型更灵活、偏差低但方差高;生成式模型加了结构假设,偏差可能高但方差更稳。

数据充足时,判别式直接优化目标,往往逼近甚至超过生成式;数据稀缺时,生成式借助先验分布做“脑补”,鲁棒性更好。此外,生成式要估计高维联合分布,参数多、训练慢;判别式只估计边界,计算开销小得多。选谁取决于你的厨房条件:食材管够,品菜师是性价比之王;食材珍贵,大厨的先验知识就是救命稻草。

E=Bias2+Variance+Noise\displaystyle E = \text{Bias}^2 + \text{Variance} + \text{Noise}
泛化误差 = 系统性偏差 + 发挥波动 + 数据噪声,是理解两类模型在不同数据规模下表现的万能视角。
  1. 期望误差 E模型在没见过的新菜上的平均失误率。
    E\displaystyle E
  2. 偏差平方 Bias²系统性偏差,好比大厨手艺本身就偏了。
    Bias2\displaystyle \text{Bias}^2
  3. 方差 Variance不同训练集上模型的发挥波动程度。
    Variance\displaystyle \text{Variance}
  4. 噪声 Noise数据本身的随机性,是无法消除的性能下限。
    Noise\displaystyle \text{Noise}

适用场景:任务决定分工

大酒楼里,品菜师和大厨各守一摊:门口接待与菜品品鉴交给品菜师,研发新菜与复刻失传菜谱交给大厨。机器学习也一样,任务要“结论”还是“作品”,决定了两类模型的分工。判别式的主场是“只要一个标签”的任务:垃圾邮件识别、情感分类、点击率预估、图像分类——用户只关心“是/否”或“哪一类”。

生成式的主场则是“要新东西”的任务:图像生成、文本续写、语音合成——它必须掌握数据的完整分布,才能凭空采样出新样本。异常检测也是生成式的拿手好戏:大厨太清楚正常菜长什么样,端上来一盘奇怪的菜,他立刻能察觉异样。在语音识别中,生成式同样有传统优势:声学模型建模 P(音频|文本) 与 P(文本),再用贝叶斯公式组合出最可能的句子。

现代大模型时代,两派常联手作战:生成式负责产数据、产草稿,判别式负责审核、过滤、打分。它们不是敌人,而是搭档。生成式能新建样本的数学表达就是在类别条件下采样。

判断清楚任务后,“造物”交给大厨(生成式),“判物”交给品菜师(判别式)。谁也别越界,效率与效果才会同时拉满。

Xnew∼P(X∣Y=c)\displaystyle X_{\text{new}} \sim P(X \mid Y = c)
采样符号"∼"表示从分布中随机抽取,这代表大厨照着类别画像凭空创造新样本。
  1. 指定类别 c例如“川菜”这个固定标签。
    c\displaystyle c
  2. 条件分布 P(X|Y=c)该类别的完整“味道画像”,生成式模型学到的核心知识。
    P(X∣Y=c)\displaystyle P(X \mid Y = c)
  3. 采样符号 ∼从该分布中随机摸出一个新样本,等价于大厨做出一道新菜。
    ∼\displaystyle \sim

实战选型:从需求到模型

客人点菜时,服务员要给不同人推荐不同菜:赶时间的商务客要快菜,宴请贵宾要招牌硬菜,预算有限的学生要实惠套餐,美食家要创意新菜。模型选型也是同样的“看人下菜碟”,四把尺子依次量。

第一看任务类型:需要输出新样本(写文案、画图、配音)→ 生成式;只需要输出标签(分类、排序)→ 判别式。第二看数据规模:样本充足,判别式省时省力;样本稀缺,生成式的先验结构更能扛。第三看资源约束:算力内存紧张,判别式轻量上线;条件宽裕,生成式大模型能带来更强能力。第四看可解释性:逻辑回归、决策树容易解释、便于审计,在金融风控、医疗场景更受欢迎;生成式大模型能力强但推理成本高、行为难预测,需要配合对齐与审核。

无论选择哪一派,分类决策最终都能统一成同一个贝叶斯最优规则:在所有类别里挑后验概率最大的那个。判别式直接估计后验,生成式通过先验和似然间接计算,两条路径指向同一个决策公式——这正是“范式不同、目标相通”的注脚。

品菜师和大厨的故事讲到这里。记住一句话:品菜师知道“吃了什么”,大厨知道“怎么做的”。下次接到任务,先问自己——你要的是一句鉴定,还是一道新菜?答案会带着你走到正确的模型面前。

c^=arg⁡max⁡cP(c∣X)\displaystyle \hat{c} = \arg\max_{c} P(c \mid X)
最终决策都是在比较“这道菜属于哪一类的概率”,两派模型殊途同归。
  1. 输入样本 X端上来的一道新菜。
    X\displaystyle X
  2. 候选类别 c川菜、粤菜、湘菜等所有可能的菜系。
    c\displaystyle c
  3. 后验概率 P(c|X)这道菜属于 c 类的概率,判别式直接估计它,生成式通过贝叶斯公式间接算它。
    P(c∣X)\displaystyle P(c \mid X)
  4. argmax 决策挑出概率最大的一类,作为最终答案。
    arg⁡max⁡c\displaystyle \arg\max_{c}

AI 应用场景

智能客服:品菜师接单,大厨写回信

阶段:模型选型与任务编排

解决的问题:传统客服靠人工关键词规则,意图判断不准、回复模板生硬。判别式文本分类模型先判断用户意图(退换货?查物流?),生成式大模型再根据意图与上下文生成自然回复。前者快且稳,后者会“说人话”,正好各司其职。

具体案例:某电商平台每天处理 20 万条客服消息。判别式意图模型将“我的快递到哪了”准确分流到物流意图,准确率达 96%;GPT 类生成模型基于工单信息生成拟人化回复,人工介入率下降 45%。

工业质检:生成式知道“正常”长什么样

阶段:异常检测与数据增强

解决的问题:工厂中缺陷样本极少且形态各异,直接训练判别式分类器容易把稀有缺陷当噪声。先用生成式模型(高斯混合模型、VAE)拟合正常产品的分布,离分布太远的样本判为异常;再用生成式合成缺陷样本,扩充判别式模型的训练集。

具体案例:某电子元件产线用高斯混合模型对 10 万张正常外观建模,成功检测出 37 种标注集中从未出现过的缺陷类型,漏检率降低 30%。

AI 内容审核:生成式造草稿,判别式把关

阶段:内容生成与安全审核

解决的问题:大模型生成的内容可能存在违规风险,纯人工审核成本高、速度慢。判别式审核模型对生成结果做“违规/安全”二分类,生成式负责创造性产出。一攻一守,组合出安全可控的 AIGC 系统。

具体案例:某营销公司用生成式大模型批量产出广告文案,线上部署判别式分类器与规则引擎实时拦截敏感词和虚假宣传,内容过审率从 60% 提升至 92%。

Python 演示

python71 行
import numpy as npfrom sklearn.datasets import make_classificationfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score  class GaussianGenerativeModel:    """A tiny generative classifier: fits P(y) and P(X|y) as Gaussians."""     def __init__(self):        self.means_list = []        self.covs_list = []        self.priors_list = []        self.classes = None     def fit(self, X, y):        self.classes = np.unique(y)        for c in self.classes:            Xc = X[y == c]            self.means_list.append(Xc.mean(axis=0))            cov = np.cov(Xc.T) + 1e-6 * np.eye(X.shape[1])            self.covs_list.append(cov)            self.priors_list.append(len(Xc) / len(X))        self.means_list = np.array(self.means_list)        self.priors_list = np.array(self.priors_list)     def log_likelihood(self, X):        scores = np.zeros((len(self.classes), len(X)))        for c in range(len(self.classes)):            diff = X - self.means_list[c]            inv_cov = np.linalg.inv(self.covs_list[c])            log_det = np.log(np.linalg.det(self.covs_list[c]))            scores[c] = (-0.5 * np.sum(diff @ inv_cov * diff, axis=1)                         - 0.5 * log_det                         + np.log(self.priors_list[c]))        return scores     def predict(self, X):        return self.classes[np.argmax(self.log_likelihood(X), axis=0)]     def sample(self, n, c):        idx = list(self.classes).index(c)        return np.random.multivariate_normal(self.means_list[idx],                                            self.covs_list[idx], n)  def main():    X, y = make_classification(n_samples=500, n_features=6,                               n_informative=4, n_redundant=1,                               n_clusters_per_class=1, random_state=42)    X_train, X_test, y_train, y_test = train_test_split(        X, y, test_size=0.3, random_state=1)     gen_model = GaussianGenerativeModel()    gen_model.fit(X_train, y_train)    gen_score = accuracy_score(y_test, gen_model.predict(X_test))     dis_model = LogisticRegression(max_iter=1000)    dis_model.fit(X_train, y_train)    dis_score = accuracy_score(y_test, dis_model.predict(X_test))     print("generative  Gaussian classifier :", round(gen_score, 4))    print("discriminative logistic regression:", round(dis_score, 4))    fake = gen_model.sample(3, 0)    print("chef invents 3 new samples:\n", np.round(fake, 3))    print("critic cannot invent samples: no P(X) learned")  if __name__ == "__main__":    main()
目的:用同一份数据对比生成式(高斯判别分析)与判别式(逻辑回归)的分类准确率,并演示生成式独有能力——凭空采样新样本。
  1. make_classification(n_samples=500, ...)生成一份带标签的合成数据,模拟“两桌菜各有若干样本”。
  2. for c in self.classes:遍历每个类别(菜系),分别统计均值、协方差与先验,对应大厨记配方。
  3. cov = np.cov(Xc.T) + 1e-6 * np.eye(X.shape[1])计算该类样本的协方差矩阵并加微小正则,防止求逆时数值退化。
  4. scores[c] = ... + np.log(self.priors_list[c])按“对数似然 + 对数先验”给每类打分,正是贝叶斯公式的分子部分。
  5. def predict(self, X): return self.classes[np.argmax(...)]挑得分最高的类别作为预测,对应 argmax 决策规则。
  6. def sample(self, n, c):大厨从学到的分布中凭空采出新样本,逻辑回归这样的判别式模型做不到。
  7. dis_model = LogisticRegression(max_iter=1000)品菜师直接学条件概率 P(Y|X),只优化决策边界,参数更少。
  8. accuracy_score(y_test, ...)用准确率直观对比两派在分类任务上的表现。

常见误区

误区我在网上看到 GPT 能写诗画画,觉得生成式模型是进化版,判别式是老古董。学的时候总觉得生成式一定更准、更强大,选模型无脑选生成式就行。

正解两种范式解决不同的问题。只要分类标签,判别式直接优化 P(Y|X),在数据充足时往往更准更省;生成式要估计完整的 P(X,Y),参数多、训练慢,用它做纯分类常是杀鸡用牛刀。能力强不等于分类准,大厨会做满汉全席,但快餐店里要的是出餐快的品菜师。

为何常见:大模型产品存在感太强,容易让人把“能力全面”等同于“性能更好”,忽略了任务匹配度。

误区逻辑回归能输出 0.8 的概率,SVM 也能做概率校准,那它们应该都算生成式模型吧?

正解能不能输出概率,不是判别式与生成式的分界线。区分标准是是否建模联合概率 P(X,Y)。逻辑回归直接建模 P(Y|X),属于判别式;即便 SVM 做了概率校准,它仍然没有学到输入 X 的分布,无法生成新样本。品菜师尝一口能报出“八成是川菜”,但他依然不知道这道菜怎么做。

为何常见:初学时容易把“输出形式”当成分类依据,而没抓住“建模对象”这个本质。

误区贝叶斯公式算的是后验概率 P(Y|X),朴素贝叶斯用了贝叶斯公式,那它肯定是判别式模型。

正解朴素贝叶斯建模的是 P(X|Y) 和 P(Y),也就是联合概率 P(X,Y),再通过贝叶斯公式反推后验,因此是标准的生成式模型。它“用”贝叶斯公式,不等于“直接建模”后验。打个比方:大厨也查公式,但查公式的目的是先把配方学全,再倒推出结论。

为何常见:名字里有“贝叶斯”,容易被误以为和“贝叶斯判别分析”是同一类,实际后者才是判别式思路。

误区听说生成式能借助先验知识,那我在小数据集上无脑选生成式准没错。

正解生成式的先验优势要在“先验假设符合真实数据”时才能兑现。如果假设(如高斯分布、特征独立)错了,小样本下反而偏差很大;反之,正则化做得好的判别式在小样本上也能表现出色。能不能靠先验“脑补”,取决于大厨脑中的配方是否符合现实,必须实验验证。

为何常见:把课本里的定性结论当成无条件真理,忽略了假设前提。

误区GAN 里有个判别器,所以我以为 GAN 属于判别式;VAE 用编码器解码器,看不懂它算什么流派。

正解GAN 的核心是生成器建模数据的生成过程,判别器只是辅助训练的“裁判”;VAE 用隐变量建模联合分布,两者都属于生成式家族。判断标准是“模型最终能不能产出新样本”,而不是“名字里带不带判别”。裁判再厉害,也不能说他就是做菜的人。

为何常见:被 GAN 的名字和双网络结构迷惑,忘了看建模目标和输出能力。

面试题

Q1. 生成式模型与判别式模型最本质的区别是什么?

单选题 · easy

  • A.能否输出分类概率
  • B.是否建模联合概率← 正确答案
  • C.是否使用神经网络
  • D.是否需要大量数据

答案:B。判别式直接建模条件概率 P(Y|X),生成式建模联合概率 P(X,Y)。能否输出概率(逻辑回归能输出 0.8)与是否用神经网络都不是分界线;是否建模联合概率才是本质,就像“会不会做菜”才是区分大厨与品菜师的关键。

Q2. 以下哪个模型属于判别式模型?

单选题 · easy

  • A.朴素贝叶斯分类器
  • B.高斯混合模型 GMM
  • C.支持向量机 SVM← 正确答案
  • D.隐马尔可夫模型 HMM

答案:C。SVM 直接寻找分类边界,属于判别式。朴素贝叶斯建模联合概率,高斯混合模型与隐马尔可夫模型都在建模数据的生成分布,均属生成式家族。记住“能不能造新样本”即可快速判断。

Q3. 朴素贝叶斯中的“朴素”指的是什么?

单选题 · easy

  • A.假设特征之间相互独立← 正确答案
  • B.假设样本之间相互独立
  • C.假设标签服从高斯分布
  • D.假设数据不需要预处理

答案:A。“朴素”体现在特征条件独立假设:大厨认为花椒用量和辣椒用量互不影响,于是可以把每个特征单独拿出来相乘。这个假设简化了计算,但也可能偏离真实,是一种“以简换快”的取舍。

Q4. 生成式模型通过哪条路径获得分类结果?

单选题 · mid

  • A.直接拟合决策边界的函数
  • B.用贝叶斯公式换算后验概率← 正确答案
  • C.用神经网络逼近条件概率
  • D.特征加权求和后再做阈值

答案:B。生成式先学 P(X|Y) 与 P(Y),再通过贝叶斯定理换算出 P(Y|X)。A 与 D 是判别式的典型操作(如逻辑回归、SVM),C 也可以用于判别式。只有 B 描述了大厨“先记配方、再倒推结论”的完整路径。

Q5. 数据量充足时,判别式模型通常更占优势的原因是?

单选题 · mid

  • A.直接优化分类用途的目标函数← 正确答案
  • B.不需要调整任何超参数
  • C.训练所需的数据量必须更少
  • D.能够自动生成新的训练数据

答案:A。判别式直接针对分类目标(如条件似然、间隔最大化)优化,数据充足时边界学得更准、更省算力。它同样需要调超参,训练数据少反而容易过拟合,且无法生成新数据——品菜师只在数据量大时最风光。

Q6. 逻辑回归输出分类概率时使用的函数是?

单选题 · hard

  • A.线性整流函数 ReLU
  • B.S 型压缩函数 sigmoid← 正确答案
  • C.双曲正切函数 tanh
  • D.归一化指数函数 softmax

答案:B。逻辑回归用 sigmoid 将线性打分压缩到 (0,1) 区间作为概率;ReLU 是激活函数不输出概率;tanh 输出区间是 (-1,1);softmax 用于多分类归一化。sigmoid 就像品菜师的“漏斗”,把辣度打分变成“是川菜”的把握。

Q7. 在特征缺失或含噪的数据上,生成式模型往往表现更好的原因是?

单选题 · hard

  • A.利用联合分布做概率补全← 正确答案
  • B.将缺失值直接置零处理
  • C.参数量远比判别式更小
  • D.不需要训练即可预测结果

答案:A。生成式学到了完整的 P(X,Y),缺失特征时可以通过其他特征与标签的关系做概率推断补全,就像大厨凭配方知识脑补出少了哪味料。B 是粗暴处理方式,C 说法错误(生成式参数通常更多),D 不可能成立。

Q8. 以下关于生成式与判别式训练目标的说法,正确的是?

单选题 · extreme

  • A.生成式最大化联合对数似然← 正确答案
  • B.判别式最大化数据的全概率
  • C.生成式只优化决策边界间隔
  • D.判别式学习输入的边缘分布

答案:A。生成式的训练目标是让联合对数似然 log P(X,Y) 最大,即“整盘菜与菜系一起出现的概率”最大;判别式优化的是条件概率或边界间隔,B 与 D 描述的都是生成式才关心的事。抓住训练目标就能分清两派。

Q9. 以下哪些属于生成式模型的代表算法?

多选题 · mid

  • A.朴素贝叶斯算法← 正确答案
  • B.GPT 语言模型← 正确答案
  • C.逻辑回归算法
  • D.高斯混合模型← 正确答案

答案:ABD。朴素贝叶斯建模 P(X|Y) 与 P(Y),GPT 建模文本序列的联合分布,高斯混合模型建模数据的混合分布,三者都能生成新样本,同属生成式。逻辑回归只建模条件概率,是判别式代表。

Q10. 关于生成式与判别式模型的对比,以下说法正确的有哪些?

多选题 · hard

  • A.生成式可以生成新样本← 正确答案
  • B.判别式直接建模条件概率← 正确答案
  • C.判别式计算开销通常更小← 正确答案
  • D.生成式在分类上永远更准

答案:ABC。生成式掌握联合分布所以能采样新样本;判别式直接学 P(Y|X);判别式只估计边界、参数少,通常计算开销更小。D 是常见误解——纯分类任务上判别式往往更准,“永远更准”显然是错的。没有万能的模型,只有合适的任务。