大家好,小米粥销声匿迹了很长一段时间,今天又杀回来啦!这次主要是介绍下生成模型的相关内容,尤其是除了GAN之外的其他生成模型,另外应部分读者要求,本系列内容增添了代码讲解,希望能使大家获益,更希望大家多多指正错误、多提宝贵意见。
作者&编辑 | 小米粥
1 监督学习与无监督学习
监督学习的任务是学习一个模型(也可以理解为一个映射函数),使模型能够对于任意给定的输入,相应地做一个好的预测输出。模型的输入为随机变量 X ,输出也为一随机变量 Y 。每个具体的输入都是一个实例,它由一个特征向量 x 表示,实例对应的输出由向量 y 表示。我们将所有可能的输入特征向量构成的集合称为特征空间(输入空间),将所有可能的输出向量构成的集合称为输出空间,一般输出空间的大小远远小于输入空间。监督学习的本质是:学习从输入到输出的映射的统计规律。
我们列举三种常见的监督学习任务:回归、分类和标注,它们主要的区别在于变量的取值类型。(1)当输入变量和输出变量均为连续值变量时得到回归任务,它主要用于学习输入变量和输出变量之间的数值映射关系,常见的回归任务有价格预测、趋势预测等,处理回归任务时常用的机器学习模型有最小二乘回归、非线性回归等。(2)无论其输入变量为离散值还是连续值,当输出变量为有限个离散值时得到分类任务,分类任务是被人们讨论和应用最广泛的任务,它通常用于分门别类,常见的分类任务有图片类别识别、用户分类、文本分类等,处理分类任务时常用的机器学习模型有:k近邻、朴素贝叶斯、决策树、逻辑斯蒂回归模型、支持向量机、神经网络等。(3)当输入变量和输出变量均为变量序列时得到标注任务,它是分类问题的一种推广,用于学习输入序列和输出序列的映射关系,典型的标注任务有自然语言处理中的词性标注、信息抽取等,处理标注任务时常用的机器学习模型有隐马尔科夫模型和条件随机场等。
无监督学习和监督学习最大的区别就是标签的有无。在监督学习中,训练模型的任务是学习输入特征到标签的映射,而无监督学习中只有样本的特征向量,故无监督学习的任务是对数据进行深入“挖掘”,其本质是学习数据中的统计规律或潜在结构。对于无监督学习的深入研究对深度学习的复兴上起到了关键的作用。
我们列举三种常见的无监督学习任务:降维、聚类、概率模型估计。(1)降维任务主要用于处理数据的高维度问题,真实数据的特征维度过大容易造成模型的拟合度与可用性降低,我们可以通过降维算法对高维度数据进行“压缩”使之变成低维度向量,从而提高数据的可用性,常用的算法有主成分分析、因子分析、隐含狄利克雷分布等,包括早期的自编码器也可用于数据降维。(2)聚类任务主要将样本依据一定的规则进行类别分配,即通过衡量样本之间的距离、密度等指标,将关系“近”的样本聚为同一类,以此实现样本的自动分类,常用的算法有层次聚类、k-means聚类、谱聚类等。(3)在概率模型估计任务中,对于一个可以生成样本的概率模型,我们使用样本对概率模型的结构、参数进行学习,使得概率模型生成的样本与训练样本最相似。其中一种比较简单的概率密度估计任务便是对随机变量的概率密度函数进行学习,常用的算法有极大似然估计、对抗生成网络、变分自编码器等,这部分内容非常丰富,是本系列关注的核心内容。
监督学习相比于无监督学习除了拥有额外的标签信息外,还需要有测试样本。机器学习模型在训练集中学习“规律”,然后对测试集使用这种“规律”来评价模型的效果,而无监督学习不需要测试样本,整个过程只需要训练集的参与。另外,无监督学习相比于监督学习一般拥有更好的拓展性,它在完成训练目标的同时,通常还额外学习到了样本的表示,我们可以将这些表示直接用于其他的任务。
半监督学习是介于监督学习和无监督学习的一种方式,即只有小部分训练样本带有标签信息,而大多数训练样本的标签信息空缺。半监督学习包括直推和归纳两类模式,直推半监督学习只对给定的训练数据进行处理,它使用训练数据集中有类别标签和无类别标签的样本进行训练,预测其中无标签样本的标签信息;归纳半监督学习不仅预测训练数据集中无标签样本的标签,更主要的是预测未知样本的标签,两者的区别在于需要预测标签的样本是否出现在训练集中。半监督学习一般用于四类学习场景:半监督分类、半监督回归、半监督聚类、半监督降维等。
2 判别模型与生成模型
本节我们在监督学习的范围内介绍判别模型与生成模型。根据第一节,监督学习是学习一个模型,然后利用该模型对给定的输入预测相应的输出,我们可将模型写成函数形式 Y=f(X) 或条件概率分布形式 p(Y|X) ,并根据条件概率分布的计算方式将其分为判别模型和生成模型。
在判别模型中,我们直接对p(Y|X)进行建模,它试图描述在给定输入特征X的情况下,标签信息Y的分布,典型判别模型包括: 近邻法、感知机、决策树、逻辑回归和条件随机场等。判别模型对条件概率模型直接建模,无法反映训练数据本身的概率特性,但是以分类问题为例,判别模型在寻找最优分类面的过程中,学习了不同类别数据之间的差异。另外,判别模型可以对数据进行各种程度上的抽象、降维,因此可以简化学习问题,学习准确率更高。
在生成模型中,对数据特征 X 和标签Y的联合分布p(X,Y)进行建模,然后利用条件概率公式,即可计算 p(Y|X) ,如下所示:
实际中,我们通常将联合分布变换成易于求解的形式:
其中,p(Y)为标签信息Y的先验概率,它描述了在对样本特征X一无所知的情况下Y的概率分布, p(Y|X) 为标签Y的后验概率,它描述了在明确样本特征X后Y的概率分布。典型生成模型有朴素贝叶斯方法和隐马尔科夫模型等,在朴素贝叶斯方法中,我们通过训练集学习到先验概率分布p(Y)和条件概率分布 p(X|Y) ,则可得到联合概率分布p(X,Y);在隐马尔可夫模型中,我们通过训练集学习到初始概率分布、状态转移概率矩阵和观测概率矩阵,则得到了一个可以表示状态序列与观测序列联合分布的马尔可夫模型。
生成模型直接学习联合分布,可以更好地表示数据的分布,更好反映同类数据的相似度。当样本数量比较大时,生成模型往往可以更好地收敛到真实模型上,其收敛速度快。另外,生成模型可以处理含有隐变量的情况,而判别模型对此无能为力。生成模型也可以通过计算边缘分布 而检测某些异常值。但实践中,生成模型计算开销一般比较大,而且多数情况下其效果不如判别模型。
3 无监督生成模型
根据前两节,生成模型意味着对输入特征X和标签信息Y的联合分布进行建模,无监督学习意味着不存在标签信息,则在无监督生成模型中,希望对输入特征X的概率密度函数p(X)建模。假设存在一个由 N 个训练样本{x(1),x(2)...x(N)}构成的训练集(N足够大),则可以使用训练集训练一个概率模型p*(X) ,训练完成后,概率模型p*(X)应接近于X的概率密度函数p(X),接着我们就可以从概率模型p*(X) 中采样来“生成”样本了。
生成模型的研究对人工智能技术发展具有重要的意义。它不仅可以产生逼真的图像、视频、文本或语音等,同时在图像转换、超分辨率图像、目标检测、文本转图像等领域也取得了满意的效果,生成模型和强化学习、半监督学习、多模输出问题等均有密切联系,另外,生成模型的训练和采样是一个对我们表达和操作高维概率分布问题能力的非常好的测试。
无监督生成模型是近些年深度学习的热门方向,但其已经拥有很长时间的发展。基于极大似然法的参数点估计可认为是最简单的无监督生成模型,上世纪80年代Hinton已经使用玻尔兹曼机学习二值向量的任意概率分布。在神经网络方法上,已经涌现出许多非常优秀的模型,例如深度信念网络、神经自回归网络、深度玻尔兹曼机、流模型等,2013年提出的变分自编码器模型和2014年提出的对抗生成网络是里面最优秀的两个代表。
生成模型内容丰富多彩,我们将其按照概率密度函数的处理方式分类,具体见下图。我们将从最基本的极大似然估计方法开始,顺着脉络深入详细地介绍一些具有代表性的模型,例如完全可见置信网络(FVBN)、变分自编码器(VAE)等显式生成模型。
[1] 伊恩·古德费洛, 约书亚·本吉奥, 亚伦·库维尔. 深度学习
[2]李航. 统计机器学习
总结
生成模型是一个非常有趣的领域,其中的内容也不只是对抗生成网络,也包括变分自编码器、流模型等,今天详细定义了一下什么是无监督生成模型,使大家有一个初步印象。