Generative与Discriminative的区别
一、概念介绍
1.1 概念定义
假设数据样本
X
X
X,数据标签为
Y
Y
Y,数据都来自一个真实分布
p
(
x
)
p(x)
p(x),现在我们需要通过这些观测数据
X
X
X拟合一个模型分布
q
(
x
)
q(x)
q(x),使其接近真实分布
p
(
x
)
p(x)
p(x).
-
生成(Generation):从真实分布生成数据
-
推断(Inference):从数据推断真实分布的参数或结构
-
Prior Knowledge:在Deep Generative Model中的先验
1. 损失函数(loss function):如最大似然函数
2. 参数形式(parametric form):如假设真实分布服从正态分布
3. 优化算法(optimization algorithm) -
判别式与生成式的区别:
- 判别式(Discriminative):对条件概率 p ( y ∣ x ) p(y|x) p(y∣x)建模,即在数据的真实分布空间中找出Decision Boundary,给定数据x属于标签y的概率
- 生成式(Generative):对联合概率 p ( x , y ) p(x,y) p(x,y)建模,即尝试拟合一个数据与label共存的空间,得同时给定数据x和标签y,才能知道概率
- 由Bayes有 p ( y ∣ x ) = p ( x , y ) p ( x ) p(y|x)=\frac{p(x,y)}{p(x)} p(y∣x)=p(x)p(x,y),Discriminative建模对象是 p ( y ∣ x ) p(y|x) p(y∣x)(假设了参数结构、loss、优化方式等prior knowledge),所以模型只能接受输入 x x x。但Generative是对 p ( x , y ) p(x,y) p(x,y)建模,假设了联合分布的prior knowledge,如果知道y,它可以输出 p ( x , y ) = p ( x ∣ y ) p ( y ) p(x,y)=p(x|y)p(y) p(x,y)=p(x∣y)p(y);如果知道x,它也可以输出 p ( x , y ) = p ( y ∣ x ) p ( x ) p(x,y)=p(y|x)p(x) p(x,y)=p(y∣x)p(x),所以更全面也更复杂。
- 于是Discriminative可以看作是一种Data Conditional Generative Model即 p ( y ∣ x ) p(y|x) p(y∣x),这区别于Class Conditional Generative Model即 p ( x ∣ y ) p(x|y) p(x∣y)
1.2Deep Generative Model的三大问题
- Representation:
如何对联合分布 p ( x , y ) p(x,y) p(x,y)进行建模,怎样表示这个模型? - Learning:
如何准确地度量真实分布与模型分布的距离?(从而使其更接近) - Inference:
如何从观测数据中推断出真实分布的结构或者参数?
二、基本问题
2.1 Naive Bayes for Classification
-
需求:一封邮件进行分类,用标签变量 Y Y Y描述,定义 Y = 1 Y=1 Y=1为垃圾邮件, Y = 0 Y=0 Y=0为正常邮件
-
建模思路:设定一个大小为 n n n的Vocabulary,令 x i ( i = 1 , 2 , . . . , n ) x_i(i=1,2,...,n) xi(i=1,2,...,n)表示随机变量,如果邮件存在Vocabulary中的第 i i i个词,则 x i = 1 x_i=1 xi=1。
-
生成模型:建模 p ( Y , x 1 , x 2 , . . . , x n ) p(Y,x_1,x_2,...,x_n) p(Y,x1,x2,...,xn)
-
加一个先验:
用一个箭头表示,条件独立性假设,如下图,受 Y Y Y的影响, x i x_i xi与 x j x_j xj条件独立,即 p ( x i , x j ∣ y ) = p ( x i ∣ y ) p ( x j ∣ y ) p(x_i,x_j|y)=p(x_i|y)p(x_j|y) p(xi,xj∣y)=p(xi∣y)p(xj∣y)
-
Representation:
p ( y , x 1 , . . . , x n ) = p ( y ) ∏ i = 1 n p ( x i ∣ y ) p(y,x_1,...,x_n)=p(y)\prod_{i=1}^n p(x_i|y) p(y,x1,...,xn)=p(y)i=1∏np(xi∣y) -
Inference:
p ( Y = 1 ∣ x 1 , . . . , x n ) = p ( Y = 1 , x 1 , . . . , x n ) p ( x 1 , . . . , x n ) = p ( Y = 1 ) ∏ i = 1 n p ( x i ∣ Y = 1 ) ∑ Y = 0 , 1 p ( Y = y ) ∏ i = 1 n p ( x i ∣ Y = y ) \begin{aligned} p(Y=1|x_1,...,x_n)&=\frac{p(Y=1,x_1,...,x_n)}{p(x_1,...,x_n)}\\ &=\frac{p(Y=1)\prod_{i=1}^n p(x_i|Y=1)}{\sum_{Y=0,1}p(Y=y)\prod_{i=1}^n p(x_i|Y=y)} \end{aligned} p(Y=1∣x1,...,xn)=p(x1,...,xn)p(Y=1,x1,...,xn)=∑Y=0,1p(Y=y)∏i=1np(xi∣Y=y)p(Y=1)∏i=1np(xi∣Y=1) -
Learning:
从数据集 { ( X 1 , Y 1 ) . . . ( X N , Y N ) } {\{(X_1,Y_1)...(X_N,Y_N)\}} {(X1,Y1)...(XN,YN)}中学习模型参数,此处相当于在数据集中统计得:- p ( x i ∣ Y = 1 ) , i = 1 , . . . n p(x_i|Y=1),i=1,...n p(xi∣Y=1),i=1,...n 垃圾邮件vocabulary词频
- p ( x i ∣ Y = 0 ) , i = 1 , . . . n p(x_i|Y=0),i=1,...n p(xi∣Y=0),i=1,...n 正常邮件vocabulary词频
所以,对于一个邮件 X n e w = ( x 1 , x 2 , . . . , x n ) X_{new}=(x_1,x_2,...,x_n) Xnew=(x1,x2,...,xn),用Inference中的 p ( Y = 1 ∣ x 1 , . . . , x n ) p(Y=1|x_1,...,x_n) p(Y=1∣x1,...,xn)推断属于垃圾邮件的概率。
这就是Naive Bayes从生成式的角度看,对
p
(
X
,
Y
)
p(X,Y)
p(X,Y)联合建模,引入假设,当然此处省略了实际实现中的平滑、加log等trick,只是简单从生成式角度描述朴素贝叶斯问题并进行建模。
上图可从朴素贝叶斯角度看生成式与判别式,上面描述了对生成式的建模
P
(
X
,
Y
)
P(X,Y)
P(X,Y),需要假设
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y)的条件独立性,而如果是判别式的话,只需要直接建模
p
(
Y
∣
X
)
p(Y|X)
p(Y∣X),如将X随便丢进一个分类器(Linear Regression),输出一个binary variable。
2.1 一般问题
上面从Generative角度解决在Naive Bayes的问题,假设了条件独立性;
如果不加这个假设的一般问题如上左图所示,描述一下:
p
(
Y
,
X
)
=
p
(
Y
)
p
(
X
1
∣
Y
)
p
(
X
2
∣
Y
,
X
1
)
⋯
p
(
X
n
∣
Y
,
X
1
,
.
.
.
,
X
n
−
1
)
p(Y,X)=p(Y)p(X_1|Y)p(X_2|Y,X_1)\cdots p(X_n|Y,X_1,...,X_{n-1})
p(Y,X)=p(Y)p(X1∣Y)p(X2∣Y,X1)⋯p(Xn∣Y,X1,...,Xn−1)
对于生成式,
p
(
Y
)
p(Y)
p(Y)很容易建模,但对于
p
(
X
i
∣
X
p
a
(
i
)
,
Y
)
p(X_i|X_{pa(i)},Y)
p(Xi∣Xpa(i),Y)应该怎么建模比较好?(
X
p
a
(
i
)
X_{pa(i)}
Xpa(i)指其它指向
X
i
X_i
Xi的所有结点施加的条件约束)
判别式描述如下:
p
(
Y
,
X
)
=
p
(
X
1
)
p
(
X
2
∣
X
1
)
⋯
p
(
Y
∣
X
1
,
X
2
,
.
.
.
,
X
n
)
p(Y,X)=p(X_1)p(X_2|X_1)\cdots p(Y|X_1,X_2,...,X_n)
p(Y,X)=p(X1)p(X2∣X1)⋯p(Y∣X1,X2,...,Xn)
因为
X
X
X是完全可观测的数据,因此只需要把其丢到一个分类器如Logistic Regression就好了,如
p
(
Y
=
1
∣
X
1
,
X
2
,
.
.
.
,
X
n
)
=
σ
(
α
0
+
∑
i
=
1
n
α
i
X
i
)
σ
(
z
)
=
1
1
−
e
−
z
p(Y=1|X_1,X_2,...,X_n)=\sigma(\alpha_0+\sum_{i=1}^n\alpha_iX_i)\\ \sigma(z)=\frac{1}{1-e^{-z}}
p(Y=1∣X1,X2,...,Xn)=σ(α0+i=1∑nαiXi)σ(z)=1−e−z1
那什么时候需要生成式模型?
当观测数据并非完全可观测的时候,即
X
=
(
X
1
,
X
2
,
.
.
.
,
X
n
)
X=(X_1,X_2,...,X_n)
X=(X1,X2,...,Xn)中可能有些维度如
X
h
X_h
Xh是隐藏的,观测不到的,就需要使用生成模型解决问题,只需要把
p
(
X
∣
Y
)
p(X|Y)
p(X∣Y)中观测不到的维度求积分或求和去掉就好。
三、不同类型的Network
3.1 Bayes Net
Bayesian Network 由一个有向无环图(Directed Acyclic Graph)确定,即G=(V,E)
- 一个结点node i ∈ V i\in V i∈V代表一个随机变量 X i X_i Xi
- 一个node受到有向edge的约束,其条件概率分布表示为 p ( x i ∣ x p a ( i ) ) p(x_i|x_{pa(i)}) p(xi∣xpa(i)),也称为BN factors
- 联合分布为:
p ( x 1 , . . . , x n ) = ∏ i ∈ V p ( x i ∣ x p a ( i ) ) p(x_1,...,x_n)=\prod_{i\in V}p(x_i|x_{pa(i)}) p(x1,...,xn)=i∈V∏p(xi∣xpa(i))
对于一个具体的有五个随机离散变量的Bayesian Network:
由 p ( x 1 , . . . , x n ) = ∏ i ∈ V p ( x i ∣ x p a ( i ) ) p ( x 1 , . . . , x n ) = p ( x 1 ) p ( x 2 ∣ x 1 ) ⋯ p ( x n ∣ x 1 , . . . , x n − 1 ) 得 p ( d , i , g , s , l ) = p ( d ) p ( i ) p ( g ∣ i , d ) p ( s ∣ i ) p ( l ∣ g ) p ( d , i , g , s , l ) = p ( d ) p ( i ∣ d ) p ( g ∣ d , i ) p ( s ∣ d , i , g ) p ( l ∣ d , i , g , s ) \begin{aligned} 由p(x_1,...,x_n)&=\prod_{i\in V}p(x_i|x_{pa(i)})\\ p(x_1,...,x_n)&=p(x_1)p(x_2|x_1)\cdots p(x_n|x_1,...,x_{n-1})\\ 得p(d,i,g,s,l)&=p(d)p(i)p(g|i,d)p(s|i)p(l|g)\\ p(d,i,g,s,l)&=p(d)p(i|d)p(g|d,i)p(s|d,i,g)p(l|d,i,g,s) \end{aligned} 由p(x1,...,xn)p(x1,...,xn)得p(d,i,g,s,l)p(d,i,g,s,l)=i∈V∏p(xi∣xpa(i))=p(x1)p(x2∣x1)⋯p(xn∣x1,...,xn−1)=p(d)p(i)p(g∣i,d)p(s∣i)p(l∣g)=p(d)p(i∣d)p(g∣d,i)p(s∣d,i,g)p(l∣d,i,g,s)
从而知道了Bayesian Network中的条件独立性,即 d ⊥ i , s ⊥ { d , g } ∣ i , l ⊥ { d , i , s } ∣ g d\bot i,s\bot\{d,g\}|i,l\bot\{d,i,s\}|g d⊥i,s⊥{d,g}∣i,l⊥{d,i,s}∣g
3.2 Neural Models
Logistic Regression看成对features的linear transformation,Neural Models看成对features的Nonlinear transformation,是一个判别式模型。假设现在有四个随机变量 X 1 , X 2 , X 3 , X 4 X_1,X_2,X_3,X_4 X1,X2,X3,X4从概率角度看:
- Chain Rule
p ( X 1 , X 2 , X 3 , X 4 ) = p ( X 1 ) p ( X 2 ∣ X 1 ) p ( X 3 ∣ X 1 , X 2 ) p ( X 4 ∣ X 1 , X 2 , X 3 ) p(X_1,X_2,X_3,X_4)=p(X_1)p(X_2|X_1)p(X_3|X_1,X_2)p(X_4|X_1,X_2,X_3) p(X1,X2,X3,X4)=p(X1)p(X2∣X1)p(X3∣X1,X2)p(X4∣X1,X2,X3)
链式法则是最General联合分布分解。
- Bayesian Network
p ( X 1 , X 2 , X 3 , X 4 ) ≈ p ( X 1 ) p ( X 2 ∣ X 1 ) p ( X 3 ∣ X 1 , X 2 ) p ( X 4 ∣ X 1 , X 2 , X 3 ) p(X_1,X_2,X_3,X_4)\approx p(X_1)p(X_2|X_1)p(X_3|\cancel{X_1},X_2)p(X_4|X_1,\cancel{X_2,X_3}) p(X1,X2,X3,X4)≈p(X1)p(X2∣X1)p(X3∣X1 ,X2)p(X4∣X1,X2,X3 )
贝叶斯网络是对随机变量之间进行了条件假设。
- Neural Models
p ( X 1 , X 2 , X 3 , X 4 ) ≈ p ( X 1 ) p ( X 2 ∣ X 1 ) p N e u r a l ( X 3 ∣ X 1 , X 2 ) p N e u r a l ( X 4 ∣ X 1 , X 2 , X 3 ) p(X_1,X_2,X_3,X_4)\approx p(X_1)p(X_2|X_1)p_{Neural}(X_3|X_1,X_2)p_{Neural}(X_4|X_1,X_2,X_3) p(X1,X2,X3,X4)≈p(X1)p(X2∣X1)pNeural(X3∣X1,X2)pNeural(X4∣X1,X2,X3)
神经网络则是对条件假设采取了特殊的函数形式近似。
3.3 连续变量的Generative Model
在3.1的Bayes Net中,构建了一个离散随机变量的Bayesian Network。
但当随机变量是连续的时候,就不能用一个表列举了,只能采用概率密度函数进行表示。
- 一个离散随机变量
Z
Z
Z与一个连续随机变量的联合分布
X
X
X
- Z ∼ B e r n o u l i ( p ) Z\sim Bernouli(p) Z∼Bernouli(p)
- X ∣ Z = 0 ∼ N ( u 0 , σ 0 ) , X ∣ Z = 1 ∼ N ( u 1 , σ 1 ) X|Z=0\sim N(u_0,\sigma_0),X|Z=1\sim N(u_1,\sigma_1) X∣Z=0∼N(u0,σ0),X∣Z=1∼N(u1,σ1)
- p(z,x)=p(z)p(x|z)
- 两个随机变量的联合分布(VAE的形式)
- Z ∼ N ( 0 , 1 ) Z\sim N(0,1) Z∼N(0,1)
- X ∣ Z = z ∼ N ( u θ ( z ) , σ ϕ ( z ) ) X|Z=z\sim N(u_\theta(z),\sigma_\phi(z)) X∣Z=z∼N(uθ(z),σϕ(z))