生成模型的一些基础概念
1 无监督学习与生成模型
1.1 监督学习与无监督学习
监督学习的任务是学习一个生成模型(也可以理解为一个映射函数),使模型能对给定的输入生成相应的输出。3种常见的监督学习任务——回归、分类和标注,它们主要的区别在于变量的取值类型不同。
-
当输入变量和输出变量均为连续值变量时对应回归任务,主要用于学习输入变量与输出变量之间的数值映射关系。
- 常见的处理回归任务的机器学习模型有最小二乘回归、非线性回归等
-
无论输入变量是离散值还是连续值,当输出变量为有限个离散值时对应分类任务。
- 常见的处理分类任务的机器学习模型有 k 近邻、朴素贝叶斯、决策树、逻辑回归、支持向量机、神经网络等
-
当输入变量和输出变量均为变量序列时对应标注任务,它是分类问题的一种推广,用于学习输入和输出序列的映射关系。
- 常见的处理标注任务的机器学习有模型有隐马尔可夫模型和条件随机场等
无监督学习和监督学习最大的区别在于有无标签信息。在监督学习中,训练模型的任务是学习输入特征 x \mathbf x x 到标签 y \mathbf y y 的映射,而无监督学习的任务是对数据进行深入挖掘,其本质是学习数据中的统计规律或潜在结构。3种常见的无监督学习——降维、聚类、概率模型估计。
-
降维任务主要用于处理数据的高维度问题。通过降维算法对高维度数据进行“压缩”,使之变成低维度向量,从而提高数据的可用性。常用的算法有主成分分析、因子分析、隐含狄利克雷分布等。
-
聚类任务主要用于将样本依据一定的规则进行类别分配,即通过衡量样本之间的距离、密度等指标,将关系“近”的样本聚为同一类,以此实现样本的自动分类。
-
在概率模型估计任务中,对于一个可以生成样本的概率模型,使用样本对概率模型的结构、参数进行学习,使得概率模型生成的样本与训练样本最相似。其中概率密度估计任务是对随机变量X的概率密度函数 p ( X ) p(X) p(X) 进行学习,常用的算法有极大似然估计、生成对抗网络、变分自编码器等。
与无监督学习相比,监督学习除了拥有客外的标签信息外,还需要有测试样本。即机器学习模型在训练集中学习“规律”,然后对没测试集使用这种“规律”来评价模型的效果。
1.2 有监督判别模型与生成模型
对于监督学习问题,将模型写成函数形式 Y = f ( x ) Y=f(\mathbf x) Y=f(x) 或条件概率分布形式 p ( Y ∣ X ) p(Y|X) p(Y∣X) ,并根据条件概率分布的计算方式分为判别模型与生成模型。
-
在判别模型中,直接对 p ( Y ∣ X ) p(Y|X) p(Y∣X) 进行建模,试图描述在给定输入特征 X X X 的情况下标签信息 Y Y Y 的分布。典型的判别模型包括 k k k 近邻法、感知机、决策树、逻辑回归和条件随机场等。判别模型对条件概率模型直接建模,无法反映训练数据本身的概率特性。但另一方面,判别模型可以对数据进行各种程度上的抽象、降维,因此可以简化学习问题,提高学习准确率。
-
在有监督生成模型中,对数据特征 X X X 和标签 Y Y Y 的联合分布 p ( X , Y ) p(X,Y) p(X,Y) 进行建模,然后利用条件概率公式,即可计算 p ( Y ∣ X ) p(Y|X) p(Y∣X) ,即: 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),实际处理时通常将联合分布变换成易于求解的形式: p ( Y ∣ X ) = p ( X ∣ Y ) p ( Y ) p ( X ) p(Y|X)=\frac {p(X|Y)p(Y)}{p(X)} p(Y∣X)=p(X)p(X∣Y)p(Y) ,其中 p ( Y ) p(Y) p(Y) 为标签 Y Y Y 的先验概率,描述在对样本特征 X X X 一无所知的情况下 Y Y Y的概率分布。典型的生成模型有朴素贝叶斯方法和隐马尔可夫模型。
-
在实践中,生成模型的计算开销一般比较大,而且多数情况下其效果不始判别模型。
1.3 无监督生成模型
对于有监督学习问题,生成模型意味着对输入特征 X X X 和标签信息 Y Y Y 的联合分布进行建模。而无监督学习意味着不存在标签信息,所以无监督生成模型是对输入特征 X X X 的概率密度函数 p ( X ) p(X) p(X) 建模。
-
假设存在一个由 N N N 个训练样本 { x ( 1 ) , x ( 2 ) , ⋯ , x ( N ) } \{x^{(1)}, x^{(2)}, \cdots,x^{(N)} \} {x(1),x(2),⋯,x(N)} 构成训练集( N N N足够大),则可以使用一个训练集训练一个概率模型 p ^ ( X ) \hat p(X) p^(X) ,训练完成后,概率模型 p ^ ( X ) \hat p(X) p^(X) 应接近于 X X X 的概率密度函数 p ( X ) p(X) p(X) ,接着就可以从概率模型 p ^ ( X ) \hat p(X) p^(X) 中采样来“生成”高质量样本了。
-
在经典的统计机器学习中,对生成模型的主要问题——概率密度函数的估计有着丰富的讨论。概率密度函数的估计方法主要分为参数估计和非参数估计。参数估计通常对研究的问题已知某种数学模型(如混合高斯分布、伯努利分布等),然后利用样本估计模型中未知参数,常用的估计方法包括极大似然估计、贝叶斯估计、最大后验估计等;而非参数估计对数学模型没有先验知识,直接使用样本估计数学模型,常见的方法有直方图估计、核概率密度估计、k近邻估计等。
2 显式与隐式生成模型
- 按照概率密度函数的处理方式对生成模型进行分类。其中,把对概率密度函数进行显式处理的模型称为显式生成模型,而把隐式处理概率密度函数的模型称为隐式生成模型。
- 显式生成模型出于训练模型的原因,需要精确或者近似给出样本的似然函数表达式,而隐式生成模型通过样本间接控制概率分布,训练过程不出现似然函数,是一种间接控制概率密度的方式。
- 无论是显式还是隐式生成模型,其核心均是对 p ( x ) p(\mathbf x) p(x) 进行建模,只是显式生成模型直接优化 p ( x ) p(\mathbf x ) p(x) ,其建模难度较大,而隐式生成模型避开了直面 p ( x ) p(\mathbf x) p(x) 的困难,通过 p ( x ) p(\mathbf x) p(x) 生成样本间接优化 p ( x ) p(\mathbf x) p(x)。
- 在生成模型中,概率密度函数 p ( x ) p(\mathbf x) p(x) 一直处于核心的位置。对于一批从 p d a t a ( x ) p_{data}(\mathbf x) pdata(x) 中独立采样得到的训练样本集 { x ( 1 ) , x ( 2 ) , ⋯ , x ( n ) } \{\mathbf x^{(1)},\mathbf x^{(2)},\cdots , \mathbf x^{(n)} \} {x(1),x(2),⋯,x(n)}(独立同分布),我们希望用训练数据来训练一个生成模型 p g ( x ) p_g(\mathbf x) pg(x),这个生成模型可以显式或隐式地学习数据的分布 p d a t a ( x ) p_{data}(\mathbf x) pdata(x) 或者获得 p d a t a ( x ) p_{data}(\mathbf x) pdata(x) 的近似表达式。
2.1 显式生成模型与极大似然估计法
极大似然估计法是对概率模型参数进行估计的一种方法,例如有一个包含
N
N
N 个样本的数据集
{
x
(
1
)
,
x
(
2
)
,
⋯
,
x
(
N
)
}
\{\mathbf x^{(1)},\mathbf x^{(2)}, \cdots, \mathbf x^{(N)}\}
{x(1),x(2),⋯,x(N)},数据集中每个样本都是从某个未知的概率分布
p
d
a
t
a
(
x
)
p_{data}(\mathbf x)
pdata(x) 中独立采样获得的。若我们已经知道
p
g
(
x
)
p_g(\mathbf x)
pg(x) 的形式,但是
p
g
(
x
)
p_g(\mathbf x)
pg(x) 的表达式里仍包含未知参数
θ
\theta
θ ,则问题转变为如何使用数据集来估算
p
g
(
x
)
p_g(\mathbf x)
pg(x) 的未知参数
θ
\theta
θ 。以
p
g
(
x
)
p_g(\mathbf x)
pg(x) 是一个均值和方差参数还未确定的正态分布为例,采用极大似然估计法,所有样本的似然函数为:
L
(
θ
)
=
∏
i
=
1
N
p
g
(
x
(
i
)
;
θ
)
(1)
L(\theta)=\prod_{i=1}^N p_g(\mathbf x^{(i)};\theta) \tag{1}
L(θ)=i=1∏Npg(x(i);θ)(1)
似然函数是一个关于模型参数
θ
\theta
θ的函数,它描述了在当前参数
θ
\theta
θ下,使用模型分布
p
g
(
x
;
θ
)
p_g(\mathbf x;\theta)
pg(x;θ)产生数据中所有样本的概率。 则产生数据集中的所有样本的概率最大时,对应最好的模型参数为:
θ
M
L
=
a
r
g
m
a
x
L
(
θ
)
(2)
\theta_{ML}=argmax \ L(\theta) \tag{2}
θML=argmax L(θ)(2)
在计算机中,多个概率的乘积结果不方便存储,计算过程中可能会现数值下溢的问题。因此对似然函数取对数,即:
θ
M
L
=
a
r
g
m
a
x
l
o
g
[
L
(
θ
)
]
=
a
r
g
m
a
x
∑
i
=
1
N
l
o
g
p
g
(
x
(
i
)
;
θ
)
(3)
\theta_{ML}=argmax \ log[L(\theta)]=argmax \sum_{i=1}^Nlog \ p_g(\mathbf x^{(i)};\theta) \tag{3}
θML=argmax log[L(θ)]=argmaxi=1∑Nlog pg(x(i);θ)(3)
可以发现,使用极大似然函数估计法时,每个样本
x
(
i
)
\mathbf x^{(i)}
x(i) 时都希望它所对应的模型的概率值
p
g
(
x
(
i
)
;
θ
)
p_g(\mathbf x^{(i)};\theta)
pg(x(i);θ) ,但是由于所有样本的密度函数的总和必须为1 ,所以不可能将所有样本点都拉高到最大的概率。一个样本点的概率密度函数值被拉高将不可避免地使其他点的函数值被拉低,最终达到一个平衡态。
将式(3)作变形:
θ
M
L
=
a
r
g
m
a
x
∑
i
=
1
N
(
1
N
l
o
g
p
g
(
x
(
i
)
,
θ
)
≈
a
r
g
m
a
x
E
p
^
d
a
t
a
[
l
o
g
p
g
(
x
;
θ
)
]
(4)
\theta_{ML}=argmax \sum _{i=1}^N (\frac {1}{N}log \ p_g(\mathbf x^{(i)},\theta) \approx argmax \ \mathbb E_{\hat p_{data}}[log\ p_g(\mathbf x; \theta)] \tag {4}
θML=argmaxi=1∑N(N1log pg(x(i),θ)≈argmax Ep^data[log pg(x;θ)](4)
由上式得到另一种对极大似然估计的理解:极大似然函数估计本质是最小化训练集上的经验分布
p
^
d
a
t
a
(
x
)
\hat p_{data}(\mathbf x)
p^data(x) t和模型分布
p
g
p_g
pg 之间的KL散度值,即:
θ
M
L
=
a
r
g
m
i
n
D
K
L
(
p
^
d
a
t
a
∥
p
g
)
(5)
\theta_{ML}=argmin\ D_{KL}(\hat p_{data} \Vert p_g) \tag{5}
θML=argmin DKL(p^data∥pg)(5)
其中,KL散度的表达式为:
D
K
L
(
p
^
d
a
t
a
∥
p
g
)
=
∫
p
^
d
a
t
a
(
x
)
l
o
g
p
^
d
t
a
a
(
x
)
p
g
(
x
)
d
x
=
E
p
^
d
a
t
a
[
l
o
g
p
^
d
a
t
a
(
x
)
−
l
o
g
p
g
(
x
;
θ
)
]
(6)
D_{KL}(\hat p_{data}\Vert p_g)=\int \hat p_{data}(\mathbf x)log \frac {\hat p_{dtaa}(\mathbf x)}{p_g(\mathbf x)}d\mathbf x=\mathbb E_{\hat p_{data}}[log \ \hat p_{data}(\mathbf x)-log \ p_g(\mathbf x; \theta)] \tag{6}
DKL(p^data∥pg)=∫p^data(x)logpg(x)p^dtaa(x)dx=Ep^data[log p^data(x)−log pg(x;θ)](6)
极大似然估计就是希望
p
g
(
x
;
θ
)
p_g(\mathbf x;\theta)
pg(x;θ) 和
p
d
a
t
a
(
x
)
p_{data}(\mathbf x)
pdata(x) 尽量相似,最好无任何差异(KL散度值为0),这与生成模型的思想一致。实际的生成模型一般不可能提前知道
p
g
(
x
;
θ
)
p_g(\mathbf x; \theta)
pg(x;θ) 的表达形式,只需要估计表达式中的参数,因为实际样本数据非常复杂,往往对
p
g
(
x
;
θ
)
p_g(\mathbf x; \theta)
pg(x;θ) 无任何先验知识,只能对其进行一些形式上的假设或近似。
很多生成模型可以使用最大似然的原理进行训练,在得到关于参数 θ \theta θ 的似然函数 L ( θ ) L(\theta) L(θ) 后,只需最大化似然函数即可,只是不同模型的差异在于如何表达或者近似表达似然函数 L ( θ ) L(\theta) L(θ) 。
参考文献
[1] 言有三, 郭晓洲. 生成对抗网络GAN原理与实践.