PR学习笔记 #5 判别式 vs. 生成式

本文最后更新于:2022年11月14日 晚上

在机器学习中,我们可以将有监督学习可以将其分为两类模型:判别式模型(Discriminative Model)和生成式模型(Generative Model)。二者的建模对象不同,但最终目标都是使测试集正确标签的后验概率(在训练集的先验上)最大化。下面我们以简单的分类问题为背景,探讨二者的区别。

问题描述

首先简单地定义训练集为 \((X,Y)\),其中 \(X\) 为特征集合,\(Y\) 为标签集合,每一个样本的特征与标签一一对应。现在我们获取了一个新的样本 \(x\),我们的目标是预测其标签 \(y\) 属于类别 $i=1,2,,N $ 中的哪一类。

换句话说,我们想要通过已有的训练数据,计算出后验概率 \(P\left( y ^{\left( i \right)} \mid x \right)\),使之满足: \[ i =\underset{i=1,\cdots ,N}{\mathrm{arg}\max}\;P\left( y ^{\left( i \right)} \mid x \right) \] 下面介绍两种模型针对此目标的思路:

判别式模型 vs. 生成式模型

判别式 | Discriminative

如左图所示,判别式模型首先根据训练集数据,得到一个超平面将不同类别区分开,并且使得训练集上的分类效果最好,也就是分类错误的「代价」最小化!

逻辑回归 算法为例,我们假设边界函数为: \[ h_{\theta}\left( x \right) =\mathrm{sigmoid}\left( \theta _0+\theta _1x_1+\theta _2x_2+\theta _3x_1x_2+\cdots \right) \]\(Cost()\) 为交叉熵损失,则有代价函数: \[ J(\theta)=\frac{1}{m}\sum_{i=1}^m\text{Cost}\left(h_\theta(x^{(i)}),y^{(i)}\right) \] 通过梯度下降,我们可以求解 \(\underset{\theta}{\arg\min }J\left( \theta \right)\) ,找到训练集上最优的 \(\theta\),刻画出最佳的决策边界。当我们遇到一个新的样本时,只需将其输入 \(h_{\theta}\left( x \right)\),就能得到一个预测值,当预测值超过一定的阈值(在 \(\mathrm{sigmoid}\) 中是 \(0.5\))时,样本被预测为某一类。而这个预测值就可以用后验概率解释为: \[ h_{\theta}\left( x \right) = P\left( y = 1 \mid x \right) \]

生成式 | Generative

如右图所示,生成式模型会对每一个类别建立一个模型——有多少个类别,就建立多少个模型。当获得一个新样本时,计算该样本与每一个类别的模型的联合概率分布,将样本归为联合概率最大的一类即可。

朴素贝叶斯 算法为例,从训练集可以学习到:

  • 先验概率:\(P\left( \omega ^{\left( j \right)} \right)\),表示对任意未知测试样例,将其归为类别 \(\omega ^{\left( j \right)}\) 的概率。
  • 似然概率:\(P\left( x \mid \omega ^{\left( j \right)} \right)\),表示在类别 \(\omega ^{\left( j \right)}\) 中,出现属性等同于测试样例的训练样例的概率。

以上两个概率构成类别 $ ^{( j )}$ 的模型,利用概率乘法公式得到联合概率分布: \[ P(x, \omega ^{\left( j \right)})=P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right) \] 当然,也可以再算出后验概率: \[ P\left( \omega ^{\left( j \right)} \mid x \right) =\frac{P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right)}{P\left( x \right)}=\frac{P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right)}{\sum_{i=1}^N{P\left( x \mid \omega ^{\left( i \right)} \right) P\left( \omega ^{\left( i \right)} \right)}} \] 选择所有类别中最大的 \(P\left( \omega ^{\left( j \right)} \mid x \right)\) 作为样本的分类。

小结

简单地说,判别式模型是直接对后验概率建模,而生成式模型则先对联合概率进行建模。但不管是哪种模型,在分类任务中最终还是使用后验概率进行类别选择

显然,判别式模型更直接、更简单;而生成式模型多了联合概率的计算,更具有普适性,生成的联合概率分布还可以应用到其他场景,不局限于分类。

由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。

案例分析

假设有四个 samples:

sample 1sample 2sample 3sample 4
\(x\)\(0\)\(0\)\(1\)\(1\)
\(y\)\(0\)\(0\)\(0\)\(1\)

判别式模型的视角下:\(\sum_y{P\left( y\mid x \right) =1}\)

\(y=0\)\(y=1\)
\(x=0\)\(1\)\(0\)
\(x=1\)\(\frac{1}{2}\)\(\frac{1}{2}\)

生成式模型的视角下:\(\sum{P\left( x,y \right) =1}\)

\(y=0\)\(y=1\)
\(x=0\)\(\frac{1}{2}\)\(0\)
\(x=1\)\(\frac{1}{4}\)\(\frac{1}{4}\)

分析

判别式模型特点:

  • 直接学习决策函数 \(y=f(x)\) 或条件概率 \(P\left( y\mid x \right)\)
  • 捕捉不同类别特征的差异信息,不学习本身分布信息,无法反应数据本身特性;
  • 学习成本较低,需要的计算资源较少;
  • 需要的样本数可以较少,少样本也能很好学习、推断;
  • 无法转换成生成式。

生成式模型的特点:

  • 学习联合概率分布 \(P(x,y)\)
  • 学习到的数据本身信息更多,能反应数据本身特性;
  • 学习成本较高,需要更多的计算资源;
  • 需要的样本数更多,样本较少时学习效果较差,无法对每一类准确建模;
  • 一定条件下能转换成判别式。

二者所包含的算法

判别式模型:

  1. K 近邻(K-Nearest Neighbor,KNN)
  2. 线性回归(Linear Regression)
  3. 逻辑回归(Logistic Regression,LR)
  4. 神经网络(Neural Network,NN)
  5. 支持向量机(Support Vector Machines,SVM)
  6. 高斯过程(Gaussian Process)
  7. 条件随机场(Conditional Random Field,CRF)
  8. CART(Classification and Regression Tree)

生成式模型:

  1. 朴素贝叶斯(Naive Bayes)
  2. 高斯混合模型(Gaussian Mixture Model,GMM)
  3. 隐马尔可夫模型(Hidden Markov Model,HMM)
  4. 贝叶斯网络(Bayesian Network),也称深度信念网络(Deep Belief Network)
  5. 马尔可夫随机场(Markov Random Fields)

PR学习笔记 #5 判别式 vs. 生成式
https://hwcoder.top/PR-Note-5
作者
Wei He
发布于
2021年11月9日
许可协议