1、定义
从概率分布的角度考虑,对于一堆样本数据,每个均有特征
X
i
X_i
Xi对应分类标记
y
i
y_i
yi。
生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。(生成模型就是要学习x和y的联合概率分布
P
(
x
,
y
)
P(x,y)
P(x,y),然后根据贝叶斯公式来求得条件概率
P
(
y
∣
x
)
P(y|x)
P(y∣x),预测条件概率最大的y)
判别模型:学习得到条件概率分布P(y|x),即在特征x出现的情况下标记y出现的概率。(判别模型就是直接学习条件概率分布 P ( y ∣ x ) P(y|x) P(y∣x)。)
数据要求:生成模型需要的数据量比较大,能够较好地估计概率密度;而判别模型对数据样本量的要求没有那么多。
2 生成模型为啥叫生成模型?
生成模型之所以叫生成模型,是因为,它背后的思想是,x是特征,y是标签,什么样的标签就会生成什么样的特征。好比说,标签是大象,那么可能生成的特征就有大耳朵,长鼻子等等。
当我们来根据x来判断y时,我们实际上是在比较,什么样的y标签更可能生成特征x,我们预测的结果就是更可能生成x特征的y标签。
3 常见的判别模型与生成模型
常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机
常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场
3.1 生成模型:以统计学和Bayes作为理论基础
生成模型对联合概率 p ( x , y ) p(x, y) p(x,y)建模,根据它,我们可以得到类后验概率 p ( y ∣ x ) p(y|x) p(y∣x)。事实上,这种做法不仅仅局限于分类问题,如果将 x x x看做可以观测的变量, y y y看做不可观测到的变量,只要具有这种特征的问题,我们都可以建立生成模型。
3.1.1 朴素贝叶斯
通过学习先验概率分布
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck)和条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x|Y=c_k)
P(X=x∣Y=ck),得到联合概率分布,然后对相应分类时的后验概率为:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
k
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
\mathrm{P}\left(\mathrm{Y}=c_{\mathrm{k}} \mid \mathrm{X}=x\right)=\frac{P\left(X=x \mid Y=c_{k}\right) P\left(Y=c_{k}\right)}{\sum_{k}\left(X=x \mid Y=c_{k}\right) P\left(Y=c_{k}\right)}
P(Y=ck∣X=x)=∑k(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
使用极大似然估计(使用样本中的数据分布来拟合数据的实际分布概率) 得到先验概率。
3.1.2 混合高斯模型
P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) ϕ ( y ∣ θ k ) = 1 2 π σ k exp ( − ( y − μ k ) 2 2 σ k 2 ) \begin{array}{c} \mathrm{P}(\mathrm{y} \mid \theta)=\sum_{k=1}^{K} \alpha_{k} \phi\left(y \mid \theta_{k}\right) \\ \phi\left(y \mid \theta_{k}\right)=\frac{1}{\sqrt{2 \pi \sigma_{k}}} \exp \left(-\frac{\left(y-\mu_{k}\right)^{2}}{2 \sigma_{k}^{2}}\right) \end{array} P(y∣θ)=∑k=1Kαkϕ(y∣θk)ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2)
3.1.3 隐马尔可夫模型 (HMM)
由隐藏的马尔可夫链随机生成观测序列,是生成模型。HMM是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。包含三要素:初始状态概率向量pie,状态转移概率矩阵A,观测概率矩阵B。
3.1.4 受限玻尔兹曼机(RBM)
这是一种随机性的神经网络,由两类神经元组成(每一类为一个层),量个层之间有连接关系,第一种神经元为可见变量,即可以直接观测到的值v,如图像的每个像素。第二类为隐含变量h,是不能直接观测到的变量,如图像的特征。v和h的联合概率服从玻尔兹曼分布:
p
(
v
,
h
)
=
1
Z
θ
exp
(
−
E
θ
(
v
,
h
)
)
=
1
Z
θ
exp
(
v
T
W
h
+
b
T
v
+
d
T
h
)
p(\mathrm{v}, \mathrm{h})=\frac{1}{Z_{\theta}} \exp \left(-E_{\theta}(\mathrm{v}, \mathrm{h})\right)=\frac{1}{Z_{\theta}} \exp \left(\mathrm{v}^{\mathrm{T}} \mathrm{Wh}+\mathrm{b}^{\mathrm{T}} \mathrm{v}+\mathrm{d}^{\mathrm{T}} \mathrm{h}\right)
p(v,h)=Zθ1exp(−Eθ(v,h))=Zθ1exp(vTWh+bTv+dTh)
根据这个联合概率,我们可以很容易得到条件概率
p
(
x
∣
y
)
p(x|y)
p(x∣y)和
p
(
y
∣
x
)
p(y|x)
p(y∣x)。例如为了得到
p
(
y
∣
x
)
p(y|x)
p(y∣x),可以先求边缘概率
p
(
x
)
p(x)
p(x),对于离散型随机变量,对
y
y
y的概率求和,对于连续型随机变量,则为求积分,然后有:
p
(
y
∣
x
)
=
p
(
x
,
y
)
p
(
x
)
p(y \mid \mathrm{x})=\frac{p(x, y)}{p(\mathrm{x})}
p(y∣x)=p(x)p(x,y)
生成模型最显著的一个特征是假设样本向量x服从某种概率分布,如正态分布,均匀分布。
3.2 判别模型
已知输入变量
x
x
x,它直接对目标变量y的条件概率
p
(
y
∣
x
)
p(y|x)
p(y∣x)建模。即计算样本
x
x
x属于 每一类的概率。注意,这里和生成模型有一个本质的区别,那就是没有假设
x
x
x服从何种概率分布,而是直接估计出条件概率
p
(
y
∣
x
)
p(y|x)
p(y∣x)。
这类模型的典型代表是logistic回归和softmax回归,它们直接对
p
(
y
∣
x
)
p(y|x)
p(y∣x)建模,而不对
p
(
x
,
y
)
p(x, y)
p(x,y)建模,即每一假设
x
x
x服从何种概率分布。logistic回归用于二分类问题,它直接根据样本
x
x
x估计出它是正样本的概率:
3.2.1 逻辑斯蒂回归模型(logistic回归)
使用条件概率分布表示:
P
(
Y
=
1
∣
x
)
=
exp
(
w
x
+
b
)
1
+
exp
(
w
x
+
b
)
P
(
Y
=
0
∣
x
)
=
1
1
+
exp
(
w
x
+
b
)
\begin{array}{l} P(Y=1 \mid x)=\frac{\exp (w x+b)}{1+\exp (w x+b)} \\ P(Y=0 \mid x)=\frac{1}{1+\exp (w x+b)} \end{array}
P(Y=1∣x)=1+exp(wx+b)exp(wx+b)P(Y=0∣x)=1+exp(wx+b)1
可以使用极大似然估计估计模型参数,对优化目标使用梯度下降法或者牛顿法。
注意,这里只是直接猜测出了这个概率,而没有假设每个类的样本服从何种概率分布,即没有对
p
(
x
∣
y
)
p(x|y)
p(x∣y)或者
p
(
x
,
y
)
p(x, y)
p(x,y)建模。
3.2.2 softmax回归
softmax回归是logistic回归的多分类版本,它直接估计出一个样本向量x属于k个类中每一个类的概率:
h
θ
(
x
)
=
1
∑
i
=
1
k
e
θ
i
T
x
[
e
θ
1
T
x
…
e
θ
k
T
x
]
h_{\theta}(\mathrm{x})=\frac{1}{\sum_{i=1}^{k} e^{\theta_{i}^{\mathrm{T}} \mathrm{x}}}\left[\begin{array}{c} e^{\theta_{1}^{\mathrm{T}} \mathrm{x}} \\ \ldots \\ e^{\theta_{k}^{\mathrm{T}} \mathrm{x}} \end{array}\right]
hθ(x)=∑i=1keθiTx1⎣⎡eθ1Tx…eθkTx⎦⎤
这里预测出的是一个向量,每个分量为样本属于每个类的概率。和logistic回归一样,它是直接预测出了这个条件概率,而没有假设每个类的样本
x
x
x所服从的概率分布。
3.3 第三类(是非概率模型,也称为判别模型)
第三种做法最直接,分类器根本就不建立概率模型,而是直接得到分类结果,这种是非概率模型,也称为判别模型。它直接根据样本向量x预测出类别编号y。
这类模型的典型代表是决策树,支持向量机,随机森林,kNN算法,AdaBoost算法,xgboost,标准的人工神经网络(包括全连接神经网络,卷积神经网络,循环神经网络等)。如果神经网络的最后一层是softmax变换,即softmax回归,则可以归到第二种情况里,如果没有使用,则是这第三种情况。
3.3.1 感知机 (线性分类模型)
输入空间为
X
X
X, 输出空间为
y
∈
{
+
1
,
−
1
}
,
\mathrm{y} \in\{+1,-1\},
y∈{+1,−1}, 使用的映射函数为
f
(
x
)
=
sign
(
w
⋅
x
+
b
)
\mathrm{f}(\mathrm{x})=\operatorname{sign}(w \cdot x+b)
f(x)=sign(w⋅x+b), 其中sign为符号函数 (输入大 于等于1时输出为1; 否则为0)。使用的损失函数为误分类点到超平面的总距离,即:
−
1
∥
w
∥
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{\|w\|} \sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right)
−∥w∥1xi∈M∑yi(w⋅xi+b)
其中
M
M
M为所有误分类点的集合, ||w||可以不考虑。可以使用随机梯度下降得到最后的分类超平面。
3.3.2 k近邻法
基于已知样本,对未知样本进行预测时,找到对应的K个最近邻,通过多数表决进行预测。没有显式的学习过程。
3.3.3 决策树
决策树在每个单元定义一个类的概率分布,形成一个条件概率分布。决策树中递归地选择最优特征,所谓最优特征即分类 效果最好的特征, 算法中使用信息增益 (information gain)来衡量, 对应公式为:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
\mathrm{g}(\mathrm{D}, \mathrm{A})=\mathrm{H}(\mathrm{D})-\mathrm{H}(\mathrm{D} \mid \mathrm{A})
g(D,A)=H(D)−H(D∣A)
其中
D
D
D为训练集,
A
A
A为待测试的特征,
H
(
D
)
H(D)
H(D)为熵(经验熵),
H
(
D
∣
A
)
H(D|A)
H(D∣A)为条件熵, 两者的计算为
H
(
D
)
=
−
∑
i
=
1
n
p
i
log
2
p
i
,
H
(
D
∣
A
)
=
∑
i
=
1
n
p
i
H
(
D
∣
A
=
a
i
)
\mathrm{H}(\mathrm{D})=-\sum_{i=1}^{n} p_{i} \log _{2} p_{i}, \mathrm{H}(\mathrm{D} \mid \mathrm{A})=\sum_{i=1}^{n} p_{i} H\left(D \mid A=a_{i}\right)
H(D)=−i=1∑npilog2pi,H(D∣A)=i=1∑npiH(D∣A=ai)
但是以信息增益为划分,存在偏向于选择取值较多的特征,因此使用信息增益比来校正,
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
A
(
D
)
,
H
A
(
D
)
=
−
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
log
2
∣
D
i
∣
∣
D
∣
\mathrm{g}_{\mathrm{R}}(D, A)=\frac{g(D, A)}{H_{A}(D)}, H_{A}(D)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \log _{2} \frac{\left|D_{i}\right|}{|D|}
gR(D,A)=HA(D)g(D,A),HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣
其中n为特征A的取值个数。
3.3.5 最大熵模型
原理:概率模型中,熵最大的模型是最好的模型,可以使用拉格朗日函数求解对偶问题解决。
3.3.6 支持向量机 (SVM)
SVM分为线性可分支持向量机 (硬间隔最大化)、线性支持向量机 (软间隔最大化)、非线性支持向量机 (核函数)三种。目的是最大化间隔,这是和感知机最大的区别。
3.3.7 boosting方法 (AdaBoost等)
通过改变训练样本的权重,训练多个分类器,将分类器进行线性组合,提升分类性能。AdaBoost采用加权多数表决的方法。
3.3.8 条件随机场 (conditional random field, CRF)
给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。可应用于标注问题。
3.3.9 CNN
训练过程中,每一个中间层都有其功能,但其具体的功能无法知道。
4 对两种模型的另一种理解
- 生成模型是已知样本的标签值 y y y,对样本的特征向量 x x x的条件概率进行建模,即对条件概率 p ( x ∣ y ) p(x|y) p(x∣y)建模,它研究的是每种样本服从何种概率分布。
- 判别模型则刚好相反,已知样本的特征向量 x x x,对样本的标签值 y y y的概率进行建模,即对条件概率 p ( y ∣ x ) p(y|x) p(y∣x)建模,这种一般用于分量,即给定样本 x x x,计算它属于每个类的概率。
根据这种定义,生成模型可以用来根据标签值y生成随机的样本数据x。生成对抗网络(GAN)就是典型的例子,它可以生成服从某种概率分布的随机变量,即拟合类条件概率密度函数p(x|y),而此时它的目的不是分类,而是生成样本。事实上,如果我们知道了 p ( x ∣ y ) p(x|y) p(x∣y)或者 p ( x , y ) p(x, y) p(x,y),无论是用来做分类,还是用来做数据生成,都是可以的。
而判别模型以及不使用概率模型的判别型分类器则根据样本特征向量 x x x的值判断它的标签值 y y y,即用于判断样本的标签值 y y y。