查看全课大纲(第 87 / 93 节)
  1. 1.计算机视觉概述
  2. 2.计算机视觉应用场景
  3. 3.困难与挑战
  4. 4.开源库介绍
  5. 5.图像显示与存储
  6. 6.CLAHE
  7. 7.腐蚀膨胀与开闭运算
  8. 8.滤波与边缘填充
  9. 9.各种滤波
  10. 10.图像金字塔
  11. 11.傅里叶变换
  12. 12.短时傅里叶变换与小波变换
  13. 13.颜色特征与颜色直方图
  14. 14.几何特征_边缘
  15. 15.几何特征-角点与斑点
  16. 16.局部特征-SIFT特征描述子
  17. 17.局部特征-SURF特征描述子
  18. 18.局部特征-ORB特征描述子
  19. 19.其他特征描述子
  20. 20.传统图像分割技术
  21. 21.GraphCut
  22. 22.GrabCut
  23. 23.人脸检测的传统方法
  24. 24.行人检测的传统方法HOG+SVM
  25. 25.行人检测DPM
  26. 26.人工神经网络的架构
  27. 27.目标函数与梯度下降
  28. 28.误差反向传播
  29. 29.可手算的神经网络
  30. 30.改进目标函数与克服梯度消散
  31. 31.神经网络之传统神经网络与深度网络的差异
  32. 32.各种梯度下降算法
  33. 33.如何选择合适的梯度下降算法
  34. 34.避免过适应
  35. 35.CNN的架构
  36. 36.CNN的误差反向传播_卷积层
  37. 37.CNN的误差反向传播_池化层
  38. 38.分类所用的数据集
  39. 39.Alexnet详解
  40. 40.VGG详解
  41. 41.GoogLeNet_v1
  42. 42.BatchNormalization
  43. 43.GoogLeNet_v3v4
  44. 44.ResNet
  45. 45.ResNeXt
  46. 46.CNN设计准则
  47. 47.图像检索与推土机距离
  48. 48.基于颜色相似性
  49. 49.基于形状相似性
  50. 50.基于纹理相似性
  51. 51.基于局部特征相似性
  52. 52.DL的二值哈希编码
  53. 53.高维空间中检索KDTree
  54. 54.高维空间中检索LSH
  55. 55.目标识别任务综述
  56. 56.RCNN
  57. 57.SPP-Net
  58. 58.Fast R-CNN
  59. 59.Faster R-CNN
  60. 60.R-CNN系列模型回顾
  61. 61.R-FCN的设计思路
  62. 62.R-FCN的实现
  63. 63.YOLOv1
  64. 64.YOLOv2_9000
  65. 65.YOLOv3
  66. 66.图像分割应用场景与数据集
  67. 67.上采样的实现方式
  68. 68.FCN网络架构的由来
  69. 69.FCN构建细节
  70. 70.DeepLabv1
  71. 71.CRF
  72. 72.DeepLabv2
  73. 73.DeepLabv3
  74. 74.特定的医学影像分割任务
  75. 75.U-Net
  76. 76.3D U-Net
  77. 77.V-Net
  78. 78.DenseNet
  79. 79.病理切片分析任务及数据集
  80. 80.病理切片分析
  81. 81.图说任务及其传统处理方法
  82. 82.深度语言模型与RNN
  83. 83.LSTM及其变种
  84. 84.NIC模型
  85. 85.SAT模型
  86. 86.图说的性能指标
  87. 87.判别模型与生成模型
  88. 88.KL散度与JS散度
  89. 89.VAE
  90. 90.GAN的基本原理
  91. 91.DCGAN与CGAN
  92. 92.Wasserstein GAN
  93. 93.SRGAN

判别模型与生成模型

小象实战讲义 · 基于深度学习的计算机视觉

在计算机视觉的广阔领域中,我们已掌握了如何让模型“看懂”世界——识别物体、分割场景、描述画面。现在,我们将进入一个更具创造性的领域:让模型“创造”世界。本节是开启图像生成技术大门的钥匙,我们将深入理解生成式模型(Generative Model)与判别式模型(Discriminative Model)的根本区别与联系,并了解生成模型的核心思想——极大似然估计(MLE)。掌握这些基础,是理解后续变分自编码器(VAE)和生成对抗网络(GAN)等深度学习时代代表性生成模型的关键。

💡 核心导读

  • 判别 vs 生成:判别模型学习“区分”数据(如分类),建模 P(类别|图像);生成模型学习“创造”数据,建模 P(图像|类别)。
  • 生成模型的目标:学习训练数据的分布,并生成服从该分布的新样本。
  • 核心工具:极大似然估计(MLE):通过最大化观测数据出现的概率来估计模型参数,是生成模型的理论基石。
  • 从简单到复杂:从单高斯模型到高斯混合模型(GMM),再到以“近似显式密度”(VAE)和“隐式密度”(GAN)两条路线应对复杂分布的深度生成模型,生成模型在处理高维数据上不断演进。

判别式模型与生成式模型

在深度学习应用于计算机视觉的绝大多数任务中,如我们之前学习的图像分类、目标检测,我们主要使用的是判别式模型。

判别式模型(Discriminative Model) 直接对条件概率 P(z|X) 进行建模。其中,X 代表观察到的变量,例如一张图像;z 代表隐含的变量,例如图像的类别标签。模型的目标是:给定输入 X,判断它最可能属于哪个类别 z。其学习过程是直接寻找数据特征与标签之间的决策边界。

用数学公式表示,判别模型学习的是: P(z|X)

生成式模型(Generative Model) 则恰恰相反。它对联合概率 P(X, z) 进行建模,即 P(X, z) = P(z) · P(X|z):既要刻画隐含变量 z(例如类别)本身出现的先验,也要刻画在给定 z 的条件下观察变量 X(例如一张图像)的分布。模型的目标是:给定一个隐含变量 z(例如一个类别或一个隐空间向量),生成一个符合该条件的观察变量 X(例如一张图像)。其学习过程是理解数据本身的分布规律。

用数学公式表示,生成模型学习的是: P(X, z) = P(z) · P(X|z)

其中刻画“给定类别生成图像”的核心部分是条件分布 P(X|z),因此也常把生成模型的目标简写为学习 P(X|z)。

为了更直观地理解两者的区别,我们用一个语言识别的例子来说明:

  • 生成式模型做法:假设我们要区分日语和韩语。生成式模型会分别对日语和韩语建立完整的语言模型,包括语法、词汇分布等。当听到一段新语音时,模型会计算这段语音分别由日语模型和韩语模型生成的概率,哪个概率大,就判断为哪种语言。这需要完整地“理解”每种语言。
  • 判别式模型做法:判别式模型则不去完整建模每种语言,而是直接寻找最能区分两种语言的特征。例如,它可能发现韩语中常出现“思密达”结尾,而日语中常出现“です”结尾。模型就专注于学习这些区分性特征,并基于此做判断。这种方法通常更直接高效。

两者的联系在于:生成模型建模的联合分布 P(X, z) 一旦学得,就可以用贝叶斯公式推出 P(z|X),因而同样能拿来做分类(朴素贝叶斯就是一例),只是必须把每个类别的完整分布都学出来,代价更高。

对于分类任务,判别式模型往往更胜一筹,因为它直接针对分类边界进行优化。然而,生成式模型拥有其不可替代的独特价值,尤其是在需要刻画高维、复杂概率分布,或需要模型具备“创造力”的领域,例如:

  • 图像生成:根据文字描述或随机噪声生成新的图像。
  • 数据补全:在数据缺失的情况下,生成合理的完整数据。
  • 多模态输出:对于同一输入,可以生成多种多样但都合理的输出(它们都是背后规律的某种采样,服从同一个分布)。
  • 真实输出与预测:如对未来数据进行预测等真实输出任务。

常见的生成式模型包括朴素贝叶斯、高斯混合模型(GMM)、隐马尔可夫模型(HMM)、贝叶斯网络、马尔可夫随机场,以及由多层受限玻尔兹曼机堆叠而成的深度信念网络(DBN)等。而我们接下来要深入学习的变分自编码器(VAE)和生成对抗网络(GAN),则是专门为了处理图像这类高维、复杂分布数据而诞生的强大生成模型。

生成模型的核心:极大似然估计

生成模型的根本目标是让模型学习到的数据分布 P_model(X) 尽可能接近真实数据的分布 P_train(X)。如何让这两个分布“接近”呢?最经典的理论工具是极大似然估计。

极大似然估计(Maximum Likelihood Estimation, MLE) 的核心思想是:既然我们观测到了一组数据,那么我们就去寻找一组模型参数,使得这组数据在该模型参数下出现的概率最大。这是一种“既然发生了,就假设它是最大可能”的估计原则。

假设我们有一个由 N 个独立同分布样本组成的数据集 D = {x_1, x_2, ..., x_N},模型参数为 θ。那么,所有样本同时出现的联合概率(即似然函数)为: L(θ) = P(D|θ) = Π_{i=1}^{N} P(x_i|θ)

我们的目标是找到使似然函数 L(θ) 最大的参数 θ*: θ* = argmax_θ L(θ) = argmax_θ Π_{i=1}^{N} P(x_i|θ)

由于连乘容易导致数值下溢,且不便求导,我们通常对其取自然对数,将连乘变为连加,得到对数似然函数: log L(θ) = Σ_{i=1}^{N} log P(x_i|θ)

最大化对数似然函数等价于最大化似然函数。

举例说明:假设你在街上遇到一个人,皮肤是黑色的,并且讲法语。我们想判断他最可能来自哪里(参数 θ 代表国家)。我们考虑几个可能:法国(欧洲)、美国、巴西、某个非洲法语区国家。

  • P(皮肤黑 | 来自法国) 概率较低。
  • P(讲法语 | 来自美国) 概率较低。
  • P(皮肤黑 | 来自巴西) 概率中等,但 P(讲法语 | 来自巴西) 概率较低。
  • P(皮肤黑 | 来自非洲法语区) 概率很高,且 P(讲法语 | 来自非洲法语区) 概率也很高。

根据极大似然估计,我们计算每个国家下“皮肤黑且讲法语”这个联合事件的概率(似然)。最终,来自“非洲法语区”这个参数 θ 会使我们观测到的现象(皮肤黑、讲法语)的似然值最大,因此我们判断他最可能来自非洲法语区。这就是“最可能”的原则。

从简单分布到复杂分布

基于MLE,我们可以对已知形式的简单分布进行参数估计。

单高斯分布

假设数据服从一个单一的高斯(正态)分布 N(μ, σ^2),参数 θ = (μ, σ^2)。我们可以直接构造对数似然函数,对其求导并令导数为零,解析地求出最优参数 μ(样本均值)和 σ^2(除以 N 的极大似然方差估计,而非除以 N-1 的无偏估计)。

高斯混合模型

现实中的数据往往更复杂。例如,一组数据可能实际上来自两个不同的群体,分别服从不同的高斯分布,这就是高斯混合模型。用单个高斯去拟合这类数据,效果往往很差;用多个高斯的混合才能贴合。 P(x) = Σ_{k=1}^{K} π_k N(x | μ_k, Σ_k) 其中,π_k 是混合权重,Σ π_k = 1。

这时问题变复杂了:我们不仅要知道每个高斯分布的参数 (μ_k, Σ_k),还要知道每个样本 x_i 究竟属于哪个高斯分量(这是一个隐变量)。而这两个问题是循环依赖的:不知道样本属于哪个分布,就无法准确估计分布参数;不知道分布参数,也无法判断样本属于哪个分布。

解决这个“鸡生蛋、蛋生鸡”问题的经典方法是期望最大化算法。它从一个初始的参数猜测开始,然后交替执行两步:

  1. E步(期望):基于当前参数,计算每个样本属于每个高斯分量的“责任度”(概率)。
  2. M步(最大化):基于E步计算出的“责任度”,更新每个高斯分量的参数 (μ_k, Σ_k) 和混合权重 π_k,使得对数似然函数增大。 反复迭代,直至收敛。

面对图像的复杂分布

然而,图像数据的分布极其复杂,我们根本无法用有限个简单高斯分布的混合来精确描述。一张猫的图片所服从的概率分布,我们无法写出其解析形式。

这正是深度生成模型要解决的挑战。根据对概率密度函数的处理方式,生成模型主要分为两大类:

  1. 显式密度模型:明确地定义并试图逼近真实数据的概率密度函数 P(X)。

    • 可解密度模型:如我们刚才讨论的GMM,密度函数有解析解。
    • 近似密度模型:密度函数形式可知但难以精确求解,需要近似。变分自编码器是这类模型的代表,它通过引入一个易处理的近似分布来逼近真实的后验分布。
  2. 隐式密度模型:不显式定义密度函数,而是提供一个直接从分布中采样的机制。生成对抗网络是这类模型的典范,它通过一个生成器网络直接将随机噪声映射为数据样本,并通过一个判别器网络来驱动生成器学习到真实数据分布。

VAE和GAN构成了 2014 年前后深度学习图像生成的两大支柱,我们将在后续章节中详细展开。

📝 动手练一练

  1. 概念辨析:假设我们有一个模型,输入是“猫”或“狗”的文本标签,输出是相应的动物图片。这个模型更可能是判别式模型还是生成式模型?为什么?
👉 点击查看参考答案

这是一个典型的生成式模型。

  • 判别式模型建模的是 P(标签 | 数据),即给定一张图片,判断它是猫还是狗。
  • 而题目中的模型是给定一个标签(“猫”),生成一张图片。这正是在建模 P(数据 | 标签),即给定类别的条件下,数据(图片)出现的概率分布,因此属于生成式模型。
  1. 手算MLE(单高斯):假设我们观测到3个一维数据点:[1.0, 2.0, 3.0],且我们假设它们来自一个高斯分布 N(μ, σ^2)。请使用极大似然估计的原理,手算该高斯分布的参数 μ 和 σ^2 的估计值。
👉 点击查看参考答案

对于单高斯分布,其极大似然估计的解就是样本均值和样本方差(注意是除以N,而非N-1)。

  1. 计算样本均值 μ: μ = (1.0 + 2.0 + 3.0) / 3 = 6.0 / 3 = 2.0

  2. 计算样本方差 σ^2: σ^2 = [(1.0-2.0)^2 + (2.0-2.0)^2 + (3.0-2.0)^2] / 3 = [1.0 + 0.0 + 1.0] / 3 = 2.0 / 3 ≈ 0.6667

因此,估计出的高斯分布为 N(2.0, 0.6667)。

本章小结

本节我们奠定了图像生成技术的理论基础。我们首先清晰地区分了判别式模型与生成式模型:前者精于“区分”,是分类任务的利器;后者善于“创造”,是生成任务的基石。生成模型的根本目标是让模型学到的分布逼近真实数据分布,而实现这一目标的核心数学工具是极大似然估计。我们从简单的单高斯分布参数估计,讲到用EM算法解决高斯混合模型中的循环依赖问题,最后指出图像数据的分布极其复杂,引出了需要借助深度神经网络进行近似或隐式建模的两条路线——变分自编码器和生成对抗网络。

需要说明的是,朴素贝叶斯、HMM、DBN 等属于更早的经典生成模型,VAE(2013)与 GAN(2014)则是 2014—2020 年前后的主流方案,它们共同构成本节的历史坐标;2020 年以后,图像生成的主流已转向扩散模型,近年来又出现自回归的多模态大模型,但“显式密度 / 隐式密度”这一划分仍是理解这些新方法的坐标系。

📋 行动清单

  • 清晰复述判别式模型与生成式模型在建模目标上的根本区别(P(z|X) vs 联合分布 P(X, z),其核心为 P(X|z))。
  • 理解极大似然估计“最大化观测数据出现概率”的核心思想,并能解释其直观含义。
  • 了解高斯混合模型(GMM)和期望最大化(EM)算法解决“隐变量”问题的基本思路。
  • 明确VAE和GAN在生成模型谱系中所处的位置(显式近似密度 vs 隐式密度)。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第14章《图像生成技术》配套课件(PDF)
    PDF · 1.6MB · 原课教辅
    下载
  • 第14章《图像生成技术》配套代码包
    ZIP · 13.6MB · 原课教辅
    下载