前言
生成对抗网络(GAN)是深度生成模型(DeepGenerative Model)中的一种方式。下面介绍一下相关的算法。现在很多场景下的深度学习,我们在机器学习里面跟准确的说法是,判别式的机器学习,或者判别式的深度学习。目标是想学一个从输入到输出的一个映射函数。通常情况下可以把F定义成一个可以求导的光滑的函数,所以可以用反向传播(Gradientback-propagation)的算法来进行训练它。现在大家用的很多的网络基本上都是符合,图中是最早的卷积网络的原形。
今天主要围绕产生式模型(Generative Modeling )进行介绍。
产生式模型(Generative Modeling )的不同之处是:
数据服从某种分布,但是真实世界里面的分布我们是不知道的,真实分布在真实世界里面分布的非常复杂。我们能拿到一些样本,也是一些数据,比如看到的图片,看到文本,或者看到一些社交网络等等的结构,这都是我们看到的数据。我们希望去学一个模型,这个模型也用一个分布来描述。我们叫𝑝model,我们希望 𝑝model的分布和数据的分布是比较吻合的,或者说在某种意义上比较相似。如果这个前提达成的话。希望从模型里面生成很多新的数据,可以去泛化,可以去举一反三,图片中是一个简单的例子,手写体字符里面可以训练出一个模型,可以生成出一些在新的在训练集里面没有看到的样本。这是生成模型一个主要目标。
生成模型在机器学习中有很多的作用,首先是可以做无监督的模型。比如现在判决式神经网络需要有大量的标注数据去训练。比如ImageNet。广义上来说有很多的没有标准的原始数据。我们有更多的没有标注的原始数据。对于这种数据可以用生成模型去学习它的一个表示,就是深度的生成模型。他可以发挥应用的场景,具体我们可以做无监督的学习,你可以做简单的密度估计、生成新的样本、可以做一些聚类、可以做一些特征提取,甚至做降维等这都是无监督的一些任务。
有监督和无监督之间有一种混合的叫半监督的学习,半监督的学习就是我们希望用大量的五无标注的数据帮助我们做有监督的学习任务,能够提升分类的效果。这些是学习任务,还有一些应用场景,比武我们可以做所谓的条件生成,你的输入是一种模态的数据,然后生成另外一种模态的数据,比如合成一些声音,输入文本生成语音。例如做翻译本身也是一个条件生成的任务,你输入一直语言,然后生成另外一种语言,或者image captuer 现在我输入的是图片,生成的是文本。还有很多很多的任务可以定义成条件生成。
内容纲要:
-
Basics of Generative Models
-
Deep Generative Models
-
Semi-supervised Learning
1.Basics of Generative Models
生成模型在人工智能、数据挖掘的每个任务里面,基本上都能看得到,这是一个非常简单的例子,大家要做文本的分析,我们最简单的统计模型叫 unigram language model ,文本会描述成bag-of-words的向量。我们会用一个简单的概率模型刻画单词出现的概率。这是一个非常的简单的language model .
我们会有一个topic去描述每个单词在这个语料库里出现的概率,这个概率本身是我们自己不知道的,我们需要通过学习去估计,这里用的工具也是最基本的,对于这种常用模型是比较容易去计算的,对于like model我们有解析,对于这种一般的高速数据我们也解析,这个问题相对简单,也是最常见的生成模型。更进一步,我们希望考虑更复杂的模型,我们可以对这种复杂的数据去挖掘背后的隐藏结构。如图的例子,我把数据放到二维空间里面,这每一个点对应一个文本,大家从数据里面很清楚的就能看到这个数据分布不是一致的。我们看到数据背后有些结构,有些数据在一个group,另有些数据在另一个group,分这个结构。如果去看这个文本的话,我们会发现有些文本是关于信息检索的。这背后就隐藏了一些机构,这就是我们后面要引入的Deep Generative Models 的最基本的思想,我们能否做一个有隐变量的模型尽量挖掘数据隐含的这种结构。
假设我告诉你这两类文章都是从哪里来的,告诉你有两类,不过两类都是隐含的,告诉你两类从哪里来,这是可以用最简单的Generative models 去描述它,我们每一个都可以用一个language去刻画它。但是这两个类别的划分是未知的,所以我们会用一个隐含变量的概率模型与刻画。
比如我们用一个Z变量去指示(indicate)到底属于哪一个类别。构造这样一个简单的概率模型,因为我们的Z是没有观察到的,我们用一个先验概率去表述。假定Z值已经取定的话我们的X可以用一个Generative models 去