【1小时掌握速通深度学习面试8】生成模型-中

发布于:2024-05-07 ⋅ 阅读:(27) ⋅ 点赞:(0)

目录

28.DBN与DBM 有什么区别?

29.VAE如何控制生成图像的类别?

30.如何修改VAE的损失函数,使得隐藏层的编码是相互解耦的?

31.自回归方法如何应用在生成模型上?

32.原始 VAE存在哪些问题? 有哪些改进方式?

33.如何将VAE与GAN 进行结合?

34.简述IS和FID的原理

35.有哪些问题是属于图像到图像翻译的范畴的? GAN 是如何应用在其中的?


28.DBN与DBM 有什么区别?

DBN是hiton在06年发表在science上的“Reducing the dimensionality of data with neural networks.”这篇文章中提到的方法,具体的细节不做过多阐述, 因为确实很简介,就是简单的叠加RBM,逐层训练后来个最后的fine turn 。方便快捷,而且效果也不错,现在经常用来做一些DNN和CNN的预训练,值得注意的是,hinton在imagenet上的比赛虽然是用的CNN模型,但是就是利用的DBN做的预训练。

重点说下DBM,这是我比较喜欢的一个DL模型。为什么喜欢,因为DBM才是真正的深度RBM模型!

玻尔兹曼机(BM)是一种基于能量的网络(Energy Based Network, EBN)。统计力学中,带有电荷的粒子具有能量,由于电荷间作用力,粒子间会保持一定距离,尽量使得系统整体能量最低。物理学中,能量低意味着稳定。从机器学习的角度,我们只需知道EBN有保持能量最低的趋势即可,玻尔兹曼机也不例外。玻尔兹曼机接受输入,然后尝试识别所有影响这些输入的特征或与这些特征相关的特征。BM通过试图将系统的能量降至最低,来解决上述问题,这是一个生成特征(Generate Features)的无监督学习过程。我们也许可以理解其中一部分生成的特征,但其他的特征仍是个谜。今天深度学习的本质是特征学习,从这一点看,BM过于领先时代了。玻尔兹曼机有个特点--没有输出层!没有输出层的神经网络。意味这什么???

玻尔兹曼机器是没有方向的神经网络!!!

这意味着与ANN,CNN,RNN等你看到过的大部分神经网络不同,BM中信息不会按一定方向流过网络。数据(和能量)在网络中移动,以它喜欢的方式(能量最低)创建代表不同特征的隐藏节点。一旦给BM提供了输入数据,这些数据就会立即被吸收到系统中并成为其中的一部分。 初始化算法后,所有数据和特征被平等对待。我们可以想象BM有多强大,但是因为过于复杂,BM需要非常大的算力支持,而无法Scale。

于是Hinton等人在80年代,提出了受限的玻尔兹曼机(Restricted Boltzmann Machine,RBM),这是一种简化版的BM,禁止同一层的神经相互连接,变的非常简单,大大降低了网络的复杂度。实践证明RBM非常好用,因为它很简单,也经常被作为一个基础的构件应用与其他更为复杂的网络,比如DBN和DBM。

多个RBM堆叠起来,就得到了深度玻尔兹曼机(Deep Boltzmann Machine,DBM)

深度信念网络(Deep Belief Net,DBN)DBM与DBN很类似,都由RBM堆叠而成,但两者存在着本质的差别:整体来看,DBN是有向图(除了最上层的RBM是无向图),DBN巧妙结合了有向图和无向图的生成模型;DBM每相邻的两层都是RBM,是完全的无向图。

DBN由逐层贪心训练得到的RBM叠加起来得到,因为DBN是有向的,所以前层的分布并不依赖于后层,这是由于逐层训练的结果。DBN被用来对深度模型进行预训练,然后再通过反向传播来进行微调(当时算力不够,现在算力强大就一锅炖了),详见Hinton 的论文A fast learning algorithm for deep belief nets(2006)。2012年,他和Alex在ImageNet比赛的冠军算法虽然使用的是CNN,但利用DBN进行了预训练,发明了AlexNet,才引起的工业界的注意,并大力投入,才有了后来深度学习的繁荣。

DBM虽然没有被广泛应用,如果没有记错,在Netflix百万美元大奖冠军模型在推荐系统中应用了DBM,才有了后来的协同过滤,才有了Kaggle,世界上最著名的机器学习比赛平台,后被Google纳入旗下。

RBM,作为一个概率神经网络,当然也可以理解成一个无向图模型,有一点我觉得很重要,那就是连接的无向性,也正是这个性质,才让模型符合了统计力学的各种理论,建立起美妙却虐人的RBM。但是DBN,无疑是一个向计算妥协了的折衷模型。

29.VAE如何控制生成图像的类别?

30.如何修改VAE的损失函数,使得隐藏层的编码是相互解耦的?

Disentangle 的意思是解纠缠,所谓解纠缠,也叫做解耦,就是将原始数据空间中纠缠着的数据变化,变换到一个好的表征空间中,在这个空间中,不同要素的变化是可以彼此分离的。

比如,人脸数据集经过编码器,在潜变量空间Z中,我们就会获得人脸是否微笑、头发颜色、方位角等信息的分离表示,我们把这些分离表示称为Factors。 解纠缠的变量通常包含可解释的语义信息,并且能够反映数据变化中的分离的因子。在生成模型中,我们就可以根据这些分布进行特定的操作,比如改变人脸宽度、添加眼镜等操作。VAE 要做的就是要找到这些隐式的解纠缠变量

31.自回归方法如何应用在生成模型上?

自回归模型(Autoregressive models)

深度神经网络生成算法主要分为三类:

  •     生成对抗网络(Generative Adversarial Network, GAN)
  •     可变自动编码器(Variational Autoencoder, VAE)
  •     自回归模型(Autoregressive models)

32.原始 VAE存在哪些问题? 有哪些改进方式?

VAE 中隐藏层服从高斯分布,AE 中的隐藏层无分布要求训练时,AE 训练得到 Encoder 和 Decoder 模型,而 VAE 除了得到这两个模型,还获得了隐藏层的分布模型(即高斯分布的均值与方差)AE 只能重构输入数据X,而 VAE 可以生成含有输入数据某些特征与参数的新数据。

VAE 与 AE 完全不同,但是从结构上看都含有 Decoder 和 Encoder 过程。VAE 模型比较擅长于生成复杂数据,并且已经被实现并且被应用。我们认为 VAE 模型能够通过隐变量来捕获输入数据中一些隐藏的特征,并且我们利用这些特征生成与输入数据相关但是又不相同的数据,AE 模型只是编码解码,完全不能实现这个功能。

33.如何将VAE与GAN 进行结合?

 VAE视角 : 判别器具有 GAN 的性质, 生成图像更真实, 弥补 VAE 生成图像模糊的缺点。

GAN视角: 需要额外计算 VAE 的重构 loss, 提升了模型的稳定性。

34.简述IS和FID的原理

如何评价GAN网络生成图像的好坏?有两个简单常用的衡量方法,一个是Inception Score(IS),另一个是Frechet Inception Distance(FID)

Inception Score(IS)

评价一个生成模型的好坏,需要从两方面考量:

    生成的图像是否清晰,清晰度高的表示生成图像的质量高;

    生成的图像是否具有多样性,即每个类别生成图像的数目尽可能相等。

35.有哪些问题是属于图像到图像翻译的范畴的? GAN 是如何应用在其中的?

有监督很好理解就是我们训练时采用的训练集是成对图片,Pix2Pix 模型以 GAN 为基础采用端到端架构,其中生成器架构中引入跳连接以便能保留图像潜层结构,其输入是原域图像 x,输出是翻译后的目标域图像 G(x),原域图像和真/伪目标域图像分别结合后作为鉴别器的输入,鉴别器输出分类结果并和生成器产生对抗。