关于人工智能:深度学习与计算机视觉教程16-生成模型PixelRNNPixelCNNVAEGANCV通关指南完结🎉

  • 作者:韩信子@ShowMeAI
  • 教程地址:http://www.showmeai.tech/tutorials/37
  • 本文地址:http://www.showmeai.tech/article-detail/275
  • 申明:版权所有,转载请分割平台与作者并注明出处
  • 珍藏ShowMeAI查看更多精彩内容

本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频能够在 这里 查看。更多材料获取形式见文末。


引言

之前理解到的都是监督学习(Supervised Learning):咱们有数据x和标签y,指标是学习到一个函数能够将数据x映射到标签y,标签能够有很多模式。

典型的有监督学习有:分类问题中输出一张图片,输入图片的分类;指标检测中输出一张图片,输入指标物体的边框;语义宰割中,给每个像素都打上标签。

CS231n第13讲给大家介绍的是无监督学习(Unsupervised Learning)以及生成模型的一些常识。

本篇重点

  • 无监督学习
  • 生成模型

    • Pixel RNN/CNN
    • 变分自编码器(VAE)
    • 生成反抗网络(GAN)

1.无监督学习

无监督学习在咱们只有一些没有标签的训练数据的状况下,学习数据中隐含的构造。无监督学习因为没有标签,数据获取也很容易。典型的无监督学习包含下述算法:

1.1 聚类(k-Means)

对于聚类算法的具体常识也能够参考ShowMeAI的下述文章

  • 图解机器学习教程 中的文章详解 聚类算法详解

聚类(Clustering)是找到数据的分组,组内数据在某种度量形式下是类似的。随机初始k个核心地位,将每个样本调配到最近的核心地位,而后依据调配的样本更新核心地位。反复这个过程直至收敛(核心地位不再变动)。

1.2 PCA(主成分剖析)

对于PCA降维算法的具体常识也能够参考ShowMeAI的下述文章

  • 图解机器学习教程 中的文章详解 降维算法详解

数据降维Dimensionality reduction):找出一些投影方向(轴),在这些轴上训练数据投影的方差最大。这些轴就是数据内潜在的构造。咱们能够用这些轴来缩小数据维度,数据在每个保留下来的维度上都有很大的方差。

1.3 特色学习(Feature Learning)

咱们还有一些特色学习的办法,比方自编码(Autoencoders):

1.4 密度估计( Density Estimation)

密度估计( Density Estimation)也是一种无监督算法,咱们会预计数据的外在散布状况,比方下图上方有一些一维和二维的点,咱们用高斯函数来拟合这一密度散布,如下图所示:

2.生成模型(Generative Models)

生成模型是一种无监督学习办法。它对应的工作是:依据一批由实在散布 p-data(x) 产生的训练数据,通过训练学习,失去一个能够以近似于实在的散布 p-model(x) 来产生新样本的模型。

为什么生成模型重要,因为其能够撑持一系列问题的解决:生成样本,着色问题,强化学习利用,隐式表征推断等。

下图右边为生成的图片,两头生成的人脸,还能够做超分辨率或者着色之类的工作。

生成模型分为「显式」和「隐式」的生成模型,往下分又能够分成很多子类。如下图所示。

咱们在本篇内容中次要探讨3种模型:PixelRNN / CNN,变分主动编码器属于显示密度模型,生成反抗网络(GAN)属于隐式密度估计模型。

2.1 PixelRNN 和 PixelCNN

PixelRNN 和 PixelCNN 应用概率链式法则来计算一张图片呈现的概率。其中每一项为给定前 \(i-1\) 个像素点后第 \(i\) 个像素点的条件概率分布。这个散布通过神经网络 RNN 或 CNN 来建模,再通过最大化图片 \(x\) 的似然概率来学习出 RNN 或 CNN 的参数。

条件概率公式为:

$$
p(x)=\prod_{i=1}^{n} p(x_{i} \mid x_{1}, \ldots, x_{i-1})
$$

其中:

  • \(p(x)\): 图像x的似然概率
  • \(p(x_{i} \mid x_{1}, \ldots, x_{i-1})\): 条件概率

PixelRNN 中,从左上角开始定义「之前的像素」。因为 RNN 每个工夫步的输入概率都依赖于之前所有输出,因而可能用来示意下面的条件概率分布。

咱们训练这个 RNN 模型时,一次前向流传须要从左上到右下串行走一遍,而后依据下面的公式求出似然,并最大化似然以对参数做一轮更新。因而训练十分耗时。

PixelCNN中,应用一个CNN来接管之前的所有像素,并预测下一个像素的呈现概率:

$$
p(x)=\prod_{i=1}^{n} p(x_{i} \mid x_{1}, \ldots, x_{i-1})
$$

比照 PixelRNN 和 PixelCNN,后者在训练时能够并行计算公式中的每一项,而后进行参数更新,因而训练速度远快于 PixelRNN。

不过,在测试阶段,咱们会发现PixelRNN和PixelCNN都要从左上角开始一一像素点地生成图片,理论利用阶段生成图像的速度是很慢的。

PixelRNN 和 PixelCNN 能显式地计算似然 \(p(x)\),是一种可优化的显式密度模型,该办法给出了一个很好的评估度量,能够通过计算的数据的似然来度量出生成样本有多好。

2.2 变分自编码器(VAE)

PixelCNN定义了一个易于解决的密度函数,咱们能够间接优化训练数据的似然;而咱们上面介绍到的变分自编码器办法中,密度函数就不易解决了,咱们要通过附加的隐变量 \(z\) 对密度函数进行建模:

$$
p_{\theta}(x)=\int p_{\theta}(z) p_{\theta}(x \mid z) d z
$$

咱们数据的似然 \(p(x)\) 是等式左边的积分模式,即对所有可能的 \(z\) 值取冀望,但它是无奈间接优化的,咱们只能找出一个似然函数的下界而后再对该下界进行优化。

1) 自编码器

自编码器是为了无监督地学习出样本的特色示意,原理如下:

如上图,自编码器由编码器和解码器组成,编码器将样本 \(x\) 映射到特色 \(z\),解码器再 \(x\) 将特色 \(z\) 映射到重构样本。咱们设定损失函数为 \(x\) 与重构样本之间的 L2 损失,训练出编码器和解码器的参数,心愿可能使 \(z\) 解码后复原出原来的 \(x\)。

### 编码器

编码器能够有多种形式,罕用的是神经网络。最先提出的是非线性层的线性组合,而后有了深层的全连贯网络(MLP),起初又应用 CNN,咱们通过神经网络对输出数据 \(x\) 计算和映射,失去特色 \(z\),\(z\) 的维度通常比 \(x\) 更小。这种降维压缩能够压缩保留 \(x\) 中最重要的特色。

### 解码器

解码器次要是为了重构数据,它输入一些跟 \(x\) 有雷同维度的后果并尽量拟合 \(x\) 。解码器个别应用和编码器雷同类型的网络(与编码器对称)。

训练好残缺的网络后,咱们会把解码器的局部去掉,应用训练好的编码器实现特色映射。

通过编码器失去输出数据的特色,编码器顶部有一个分类器,如果是分类问题咱们能够用它来输入一个类标签,在这里应用了内部标签和规范的损失函数如 Softmax。

无标签数据失去的模型,能够帮忙咱们失去普适特色(比方上述自编码器映射失去的特色),它们作为监督学习的输出是十分无效的(有些场景下监督学习可能只有很少的带标签的训练数据,大量的数据很难训练模型,可能会呈现过拟合等其余一些问题),通过上述形式失去的特色能够很好地初始化上游监督学习工作的网络。

自编码器具备重构数据、学习数据特色、初始化一个监督模型的能力。这些学习到的特色具备能捕获训练数据中蕴含的变动因素的能力。咱们取得了一个含有训练数据中变动因子的隐变量 \(z\) 。

2) VAE的思维

VAE模型的思路是,如果咱们无奈间接取得样本 \(x\) 的散布,那么咱们能够假如存在一个 \(x\) 对应的隐式表征 \(z\) , \(z\) 的散布是一个先验散布(比方高斯分布或其余简略的散布)。

举例来说,如果咱们想要生成微笑的人脸, \(z\) 代表的是眉毛的地位,嘴角上扬的弧度,它通过解码网络后,可能映射失去 \(x\) 的近似实在散布。那在样本生成阶段,咱们能够通过规范正态分布采样失去 \(z\) ,而后解码失去样本近似散布,再在此散布上采样来生成样本。

对于这个采样过程,实在的参数是 \(\theta \ast\) ,是有对于先验假如和条件概率分布的参数,咱们的目标在于取得一个样本生成式模型,从而利用它来生成新的数据,实在参数是咱们想要预计并得出的。

咱们示意这个生成式模型的办法是:选一个简略的对于 \(z\) 的先验散布,例如高斯分布,对于给定 \(z\) 的 \(x\) 的条件概率分布 \(p(x \mid z)\) 很简单,咱们会应用神经网络来对 \(p(x \mid z)\) 进行建模。

3) 如何训练VAE

咱们的指标是:从一堆样本中学习出解码网络的参数,使得在规范高斯分布上采样失去的 \(z\) ,通过解码后失去的 \(x\) 的散布,刚好近似于 \(x\) 的实在散布。

咱们通过「最大化样本 \(x\) 的似然 \(P(x)\)」来达到上述指标。 在曾经给定隐变量 \(z\) 的状况下,写出 \(x\) 的散布 \(p\) 并对所有可能的 \(z\) 值取冀望,因为 \(z\) 值是间断的所以表达式是一个积分:

$$
p_{\theta}(x)=\int p_{\theta}(z) p_{\theta}(x \mid z) d z
$$

问题是利用求导来间接求最大化的似然,很不好解。

第一项是 \(z\) 的散布 \(p(z)\) ,这里将它简略地设定为高斯分布,所以很容易求;\(p(x \mid z)\) 是一个指定的神经网络解码器,也容易失去。

然而计算所有的 \(z\) 对应的 \(p(x \mid z)\) 很艰难,所以无奈计算该积分。这样也导致 \(p(z \mid x)\) 是难解的。

解决办法是,在应用神经网络解码器来定义一个对 \(p(x \mid z)\) 建模神经网络的同时,额定定义一个编码器 \(q(z \mid x)\) ,将输出 \(x\) 编码为 \(z\) ,从而失去似然 \(p(z \mid x)\) 。

也就是说咱们定义该网络来预计出 \(p(z \mid x)\) ,这个后验密度散布项依然是难解的,咱们用该附加网络来预计该后验散布,这将使咱们失去一个数据似然的下界,该下界易解也能优化。

在变分自编码器中咱们想得到一个生成数据的概率模型,将输出数据 \(x\) 送入编码器失去一些特色 \(z\) ,而后通过解码器网络把 \(z\) 映射到图像 \(x\) 。

咱们这里有编码器网络和解码器网络,将所有参数随机化。参数是 \(\phi\) 的编码器网络 \(q(z \mid x)\) 输入一个均值和一个对角协方差矩阵;解码器网络输出 \(z\) ,输入均值和对于 \(x\) 的对角协方差矩阵。为了失去给定 \(x\) 下的 \(z\) 和给定 \(z\) 下的 \(x\) ,咱们会从这些散布(\(p\)和\(q\))中采样,当初咱们的编码器和解码器网络所给出的别离是 \(z\) 和 \(x\) 的条件概率分布,并从这些散布中采样从而取得值。

上面是推导过程

$$
\log \mathrm{L}=\log p(x)=\log p(x) \cdot 1=\log p(x) \int_{z} q(z \mid x) d z
$$

这里引入了一个散布 \(q(z \mid x)\) ,就是编码网络。这里咱们临时只把它当作一个符号,持续推导即可:

$$
\begin{aligned}
\log \mathrm{L} &=\log p(x) \int_{z} q(z \mid x) d z \\
&=\int_{z} q(z \mid x) \log \frac{p(x, z)}{p(z \mid x)} d z \\
&=\int_{z} q(z \mid x)\left[\log \frac{p(x, z)}{q(z \mid x)}-\log \frac{p(z \mid x)}{q(z \mid x)}\right] d z \\
&=\int_{z} q(z \mid x) \log \frac{p(x, z)}{q(z \mid x)} d z+\int_{z} q(z \mid x) \log \frac{q(z \mid x)}{p(z \mid x)} d z \\
&=\int_{z} q(z \mid x) \log \frac{p(x, z)}{q(z \mid x)} d z+D_{K L}(q(z \mid x) \| p(z \mid x))
\end{aligned}
$$

对第一项,咱们有:

$$
\begin{aligned}
\int_{z} q(z \mid x) \log \frac{p(x, z)}{q(z \mid x)} d z &=\int_{z} q(z \mid x) \log p(x \mid z) d z+\int_{z} q(z \mid x) \log \frac{p(x)}{q(z \mid x)} d z \\
&=\mathrm{E}_{z \sim q}[\log p(x \mid z)]-D_{K L}(q(z \mid x) \| p(z))
\end{aligned}
$$

这样咱们就失去了 VAE 的外围等式:

$$
\log p(x)=\mathrm{E}_{z \sim q}[\log p(x \mid z)]-D_{K L}(q(z \mid x) \| p(z))+D_{K L}(q(z \mid x) \| p(z \mid x))
$$

留神到这个式子的第三项中,含有 \(p(z \mid x)\) ,而

$$
p_{\theta}(z \mid x)=p_{\theta}(x \mid z) p_{\theta}(z) / p_{\theta}(x)
$$

$$
p_{\theta}(x)=\int p_{\theta}(z) p_{\theta}(x \mid z) d z
$$

因为这个积分无奈求解进去,因而咱们没方法求第三项的梯度。侥幸的是,因为第三项是一个KL散度,其恒大于等于 \(0\),因而前两项的和是似然的一个下界。因而咱们退而求其次,来最大化似然的下界,间接达到最大化似然的目标。

当初咱们引入编码器网络来对 \(q(z \mid x)\) 建模,咱们的训练框架如下:

如何失去下界

① 第1项是对所有采样的 \(z\) 取冀望, \(z\) 是 \(x\) 通过编码器网络采样失去,对 \(z\) 采样而后再求所有 \(z\) 对应的 \(p(x \mid z)\) 。让 \(p(x \mid z)\) 变大,就是最大限度地重构数据。

② 第2项是让KL的散度变小,让咱们的近似后验散布和先验散布变得类似,意味着咱们想让隐变量z遵循咱们冀望的散布类型。

这个框架就十分相似于自编码器。

其中最大化下界的第一项示意咱们要能从解码器最大概率地重构出 \(x\) ,这一步等价于去最小化与样本 \(x\) 的均方误差。最小化下界的第二项则限定了 \(z\) 要遵循咱们当时给它指定的散布。

公式是咱们要优化及最大化的下界,前向流传按如上流程解决,对输出数据 \(x\) ,让小批量的数据传递通过编码器网络的到 \(q(z \mid x)\) ,通过 \(q(z \mid x)\) 来计算 KL 项,而后依据给定 \(x\) 的 \(z\) 散布对 \(z\) 进行采样,由此取得了隐变量的样本,这些样本能够依据 \(x\) 推断取得;而后把 \(z\) 传递给第二个解码器网络,通过解码器网络 \(x\) 在给定 \(z\) 的条件下的两个参数,均值和协方差,最终能够在给定 \(z\) 的条件下从这个散布中采样失去 \(x\) 。

训练时须要取得该散布,损失项是给定 \(z\) 条件下对训练像素值取对数,损失函数要做的是最大化被重构的原始输出数据的似然;对于每一个小批量的输出咱们都计算这一个前向流传过程,获得所有咱们须要的项,他们都是可微分的,接下来把他们全副反向流传回去并取得梯度,不断更新咱们的参数,包含生成器和解码器网络的参数 \(\theta\) 和 \(\phi\) 从而最大化训练数据的似然。

训练好变分自编码器,当生成数据时只须要用解码器网络,咱们在训练阶段就对 \(z\) 采样,而不必从后验散布中采样,在生成阶段会从实在的生成过程中采样。先从设定好的先验散布中采样,接下来对数据 \(x\) 采样。

须要留神的是,这个框架外面,梯度无奈通过「采样」这个算子反向流传到编码器网络,因而咱们应用一种叫做重采样的 trick。行将 \(z\) 采样的算子合成为:

这样梯度不须要通过采样算子就能回流到编码器网络中。

4) VAE的优缺点

总结一下,VAE 是在原来的自编码器上加了随机成分,咱们应用VAE不是间接获得确定的输出 \(x\) 而后取得特色 \(z\) 最初再重构 \(x\) ,而是采纳随机散布和采样的思维,这样咱们就能生成数据。 为了训练模型 VAEs,咱们定义了一个难解的密度散布,咱们推导出一个下界而后优化下界,下界是变动的,「变分」指的是用近似来解决这些难解的表达式,这是模型被称为变分主动编码器的起因。

VAEs长处

VAEs 就生成式模型来说是一种有据可循的办法,它使得查问推断称为可能,如此一来便可能推断出像 \(q(z \mid x)\) 这样的散布,这些货色对其余工作来说会是很有用的特色表征。

VAEs毛病

最大化似然下界思维是OK的,然而不像 PixelRNN 和 PixelCNN 那样精准评估。而 VAE 绝对后续会讲到的GAN等办法,生成的图像后果更含糊。

2.3 生成反抗网络(Generative Adversarial Nets, GAN)

1) GAN的外围思路

咱们之前的 PixelCNN 和 PixelRNN 定义了一个易于解决的密度函数,通过密度函数优化训练数据的似然;VAEs有一个额定定义的隐变量 \(z\) ,有了 \(z\) 当前取得了很多的无利性质然而咱们也有了一个难解的密度函数,对于该函数咱们不能间接优化,咱们推到了一个似然函数的下界,而后对它进行优化。

当初咱们放弃显式地对密度函数建模,咱们想要失去的是从散布中采样并取得品质良好的样本。GANs 中不再在显式的密度函数上破费精力,而是采纳一个博弈论的办法,并且模型将会习得从训练散布中生成数据,具体的实现是基于「生成器」和「判断器」这一对博弈玩家。

相比变分自编码器,GAN 的外围思路非常简单。

在 GAN 中咱们定义了两个网络:「生成器」和「判断器」。

  • 判断器负责分别哪些样本是生成器生成的假样本,哪些是从实在训练集中抽出来的真样本。
  • 生成器负责利用随机噪声 \(z\) 生成假样本,它的职责是生成尽可能真的样本以骗过判断器。

这种反抗模式的指标能够写成如下模式:

$$
\min _{\theta_{g}} \max _{\theta_{d}}\left[\mathbb{E}_{x \sim p_{\text {data }}} \log D_{\theta_{d}}(x)+\mathbb{E}_{z \sim p(z)} \log \left(1-D_{\theta_{d}}\left(G_{\theta_{g}}(z)\right)\right)\right]
$$

当初咱们有两个玩家,通过一个 \(\min \max\) 博弈公式联结训练这两个网络,该 \(\min \max\) 指标函数就是如图所示的公式,咱们的指标是:

  • 让指标函数在 \(\theta_ g\) 上获得最小值,同时要在 \(\theta_ d\) 上获得最大值。
  • 其中:\(\theta_g\) 是生成器网络g的参数,\(\theta_d\)指的是判断器网络的参数。

公式中各项的含意

  • 第1项是在训练数据的散布上 \(log(D(x))\) 的冀望,\(log(D(x))\) 是判断器网络在输出为实在数据(训练数据)时的输入,该输入是实在数据从散布 p-data 中采样的似然概率;
  • 第2项是对 \(z\) 取冀望, \(z\) 是从 \(p(z)\) 中采样取得的,这意味着从生成器网络中采样,同时 \(D(G(z))\) 这一项代表了以生成的伪数据为输出判断器网路的输入,也就是判断器网络对于生成网络生成的数据给出的断定后果。

对该过程的解释:咱们的判断器的目标是最大化指标函数也就是在 \(\theta_d\) 上取最大值,这样一来 \(D(x)\) 就会靠近 \(1\),也就是使判断后果靠近真,因此该值对于实在数据应该相当高,这样一来 \(D(G(z))\) 的值也就是判断器对伪造数据输入就会相应减小,咱们心愿这一值靠近于 \(0\)。

如果咱们能最大化这一后果,就意味着判断器可能很好的区别实在数据和伪造数据。

对于生成器来说,咱们心愿它最小化该指标函数,也就是让 \(D(G(z))\) 靠近 \(1\),如果 \(D(G(z))\) 靠近 \(1\),那么用 \(1\) 减去它就会很小,判断器网络就会把伪造数据视为实在数据,也就意味着咱们的生成器在生成实在样本。

从数据筹备上看,整个过程是一个无监督学习,咱们无需人工给每个图片打上标签。具体网络学习时候,咱们会把生成器生成的图片标记为 \(0\)(对应假图片),训练集标记为 \(1\)(都是真图片)。

判断器的损失函数会应用上述信息,判断器是一个分类器,咱们心愿它能经过训练取得分辨能力:对生成器生成的图片输入 \(0\),而对实在图片输入 \(1\)。

### 训练方法

对于GAN,咱们最后能想到的训练形式如下:

① 对判断器进行梯度回升,学习到 \(\theta_d\) 来最大化该指标函数;

$$
\max _{\theta_{d}}\left[\mathbb{E}_{x \sim p_{\text {data }}} \log D_{\theta_{d}}(x)+\mathbb{E}_{z \sim p(z)} \log \left(1-D_{\theta_{d}}\left(G_{\theta_{g}}(z)\right)\right)\right]
$$

② 对生成器进行梯度降落, \(\theta_g\) 进行梯度降落最小化指标函数(此时指标函数如下的局部,因为只有它与 \(\theta_g\) 无关)

$$
\min _{\theta_{g}} \mathbb{E}_{z \sim p(z)} \log \left(1-D_{\theta_{d}}\left(G_{\theta_{g}}(z)\right)\right)
$$

一直在上述 ① 和 ② 之间反复。

这里有个trick:咱们察看生成器的损失函数形态如下:

发现当生成器成果不好(\(D(G(z)\) 靠近 \(0\))时,梯度十分平缓;当生成器成果好(\(D(G(z)\) 靠近\(1\))时,梯度很平缓。这就与咱们冀望的相同了,咱们心愿在生成器成果不好的时候梯度更平缓,这样能学到更多。因而咱们应用上面的指标函数来代替原来的生成器损失:

$$
\max _{\theta_{g}} \mathbb{E}_{z \sim p(z)} \log \left(D_{\theta_{d}}\left(G_{\theta_{g}}(z)\right)\right)
$$

这样就使得在生成器成果不好时具备较大的梯度。此外,联结训练两个网络很有挑战,交替训练的形式不可能一次训练两个网络,还有损失函数的函数空间会影响训练的动静过程。

在每一个训练迭代期都先训练判断器网络,而后训练生成器网络,GAN 的总体训练过程如下:

  • 训练判断器

    • 对于判断器网络的k个训练步,先从噪声先验散布 \(z\) 中采样失去一个小批量样本,接着从训练数据 \(x\) 中采样取得小批量的实在样本,上面要做的将噪声样本传给生成器网络,并在生成器的输入端取得生成的图像。
  • 此时咱们有了一个小批量伪造图像和小批量实在图像,咱们有这些小批量数据在判断器生进行一次梯度计算,接下来利用梯度信息更新判断器参数,依照以上步骤迭代几次来训练判断器。
  • 训练生成器

    • 在这一步采样取得一个小批量噪声样本,将它传入生成器,对生成器进行反向流传,来优化指标函数。

训练 GAN 的过程会交替进行上述两个步骤。

训练结束后,就能够用生成器来生成比拟真切的样本了。

2) GAN的摸索

  • 传统的GAN生成的样本还不是很好,这篇论文在GAN中应用了CNN架构,获得了惊艳的生成成果:[Radford et al, “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”, ICLR 2016]
  • Wasserstein GAN 肯定水平解决了GAN训练中两个网络如何均衡的问题。
  • 用GAN来做text -> image

3) GAN的优缺点以及热门钻研方向

### GAN 的长处

  • GAN通过一种博弈的办法来训练,通过两个玩家的博弈从训练数据的散布中学会生成数据。
  • GAN能够生成目前最好的样本,还能够做很多其余的事件。

    ### GAN 的毛病

  • GAN没有显式的密度函数(它是利用样本来隐式表白该函数)
  • GAN不好训练且不稳固,咱们并不是间接优化指标函数,咱们要致力地均衡两个网络。

    ### GAN 的热门钻研办法

  • 更好的损失函数设计,更稳固的训练形式(例如Wasserstein GAN, LSGAN及其他)
  • 条件GAN,GAN的各种应用领域摸索

3.拓展学习

能够点击 B站 查看视频的【双语字幕】版本

  • 【课程学习指南】斯坦福CS231n | 深度学习与计算机视觉
  • 【字幕+材料下载】斯坦福CS231n | 深度学习与计算机视觉 (2017·全16讲)
  • 【CS231n进阶课】密歇根EECS498 | 深度学习与计算机视觉
  • 【深度学习教程】吴恩达专项课程 · 全套笔记解读
  • 【Stanford官网】CS231n: Deep Learning for Computer Vision

4.要点总结

本篇讲了三种目前最罕用生成模型:

  • PixelCNN 和 PixelRNN 他们是显式密度模型,该模型优化的是一个显式的似然函数并产生良好的样本,然而效率很低,它是一个程序的生成过程。
  • VAE 优化的是一个似然函数的下界,它会产生一个有用的隐式表征,能够用它来进行查问推断,生成的样本也不是特地好。
  • GAN 是目前能生成最好样本的模型,然而训练须要技巧且不稳固,查问推断上也有一些问题。
  • 还有一些将模型的长处联合起来做的钻研。

ShowMeAI 斯坦福 CS231n 全套解读

  • 深度学习与计算机视觉教程(1) | CV引言与根底 @CS231n
  • 深度学习与计算机视觉教程(2) | 图像分类与机器学习根底 @CS231n
  • 深度学习与计算机视觉教程(3) | 损失函数与最优化 @CS231n
  • 深度学习与计算机视觉教程(4) | 神经网络与反向流传 @CS231n
  • 深度学习与计算机视觉教程(5) | 卷积神经网络 @CS231n
  • 深度学习与计算机视觉教程(6) | 神经网络训练技巧 (上) @CS231n
  • 深度学习与计算机视觉教程(7) | 神经网络训练技巧 (下) @CS231n
  • 深度学习与计算机视觉教程(8) | 常见深度学习框架介绍 @CS231n
  • 深度学习与计算机视觉教程(9) | 典型CNN架构 (Alexnet, VGG, Googlenet, Restnet等) @CS231n
  • 深度学习与计算机视觉教程(10) | 轻量化CNN架构 (SqueezeNet, ShuffleNet, MobileNet等) @CS231n
  • 深度学习与计算机视觉教程(11) | 循环神经网络及视觉利用 @CS231n
  • 深度学习与计算机视觉教程(12) | 指标检测 (两阶段, R-CNN系列) @CS231n
  • 深度学习与计算机视觉教程(13) | 指标检测 (SSD, YOLO系列) @CS231n
  • 深度学习与计算机视觉教程(14) | 图像宰割 (FCN, SegNet, U-Net, PSPNet, DeepLab, RefineNet) @CS231n
  • 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性 @CS231n
  • 深度学习与计算机视觉教程(16) | 生成模型 (PixelRNN, PixelCNN, VAE, GAN) @CS231n
  • 深度学习与计算机视觉教程(17) | 深度强化学习 (马尔可夫决策过程, Q-Learning, DQN) @CS231n
  • 深度学习与计算机视觉教程(18) | 深度强化学习 (梯度策略, Actor-Critic, DDPG, A3C) @CS231n

ShowMeAI 系列教程举荐

  • 大厂技术实现:举荐与广告计算解决方案
  • 大厂技术实现:计算机视觉解决方案
  • 大厂技术实现:自然语言解决行业解决方案
  • 图解Python编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解AI数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程:吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程:斯坦福CS224n课程 · 课程带学与全套笔记解读
  • 深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理