长久以来,人们能希望机器能够充满创造力,不仅能完成重复的机械劳动,还能完成一些创造性的工作,比如画画、写诗、创作歌词等。这些一直是人工智能长久以来的梦想,随着自动编码器和变分编码器的提出,这一梦想慢慢变成了现实,到了2014年,Ian Goodfellow提出了生成对抗网络这一概念,推进了整个无监督学习的发展进程。
1.生成模型
生成模型(generative model)这一概念属于概率统计和机器学习,是指一些列用于随机生成可观测数据的模型。简而言之,就是“生成”的样本和真实的样本尽可能的相似。生成模型的两个主要功能就是学习一个概率分布Pmodel(X)和生成数据,这是非常重要的,不仅能用在无监督学习中,还可以用在监督学习中。
如今随着计算能力加强,数据集的增多,深度学习逐渐流行了起来,随着越来越多人的研究,各种各样的神经网络都在不断进步,CNN里面出现了inception net、resnet等,RNN演变成LSTM和GRU等不同长短时间记忆的网络,虽然神经网络在不断发展,但本质上是在CNN和RNN的基础上做着监督学习的任务,无监督学习的发展一直比较缓慢,生成模型希望能够让无监督学习取得比较大的进步。
1.1自动编码器
自动编码器(AutoEncoder)最开始作为一种数据的压缩方法,其特点有:
(1)跟数据相关程度很高,这意味着自动编码器只能压缩与训练数据相似的数据,因为使用神经网络提取的特征一般是高度想关于原始的训练集,使用人脸训练出来的自动编码器在压缩自然界动物的图片时表现会比较差,因为它只学习到了人脸的特征,而没有学习到自然界图片的特征。
(2)压缩后的数据是有损的,这是因为在降维的过程中不可避免地丢失信息。
到了2012年,人们发现在卷积神经网络中使用自动编码器逐层预训练可以训练更深层的网络,但是人们很快发现,良好的初始化策略要比复杂的逐层预训练有效的多,2014年出现的Batch Normalization技术也使得更深的网络能够被有效训练,到了2015年年底,通过残差(resnet)基本可以训练任意深度的神经网络。
所以现在自动编码器主要应用在两个方面:第一个是数据去噪,第二是进行可视化降维。自动编码器还有一个功能,即生成数据。
在自动编码器的结构中,第一个部分是编码器(Encoder),第二个部分是解码器(decoder),编码器和解码器都可以是任意模型,通常使用神经网络模型作为编码器和解码器。