Deeplearning

您所在的位置:网站首页 框架结构图示怎么画图片 Deeplearning

Deeplearning

2024-07-14 03:11| 来源: 网络整理| 查看: 265

前言

自编码器(autoencoder, AE)是一类在半监督学习和非监督学习中使用的人工神经网络(Artificial Neural Networks, ANNs),其功能是通过将输入信息作为学习目标,对输入信息进行表征学习(representation learning)。其结构图如下图1所示

图1 自编码器结构图

一.生成模型   1.1.什么是生成模型   1.2.生成模型的类型 二.自编码器(Autoencoder)   2.1.自编码器的定义   2.2.自编码器分类   2.3自编码器的应用   2.4自编码器与PCA的比较

在了解自编码器之前我们首先来说说生成模型

一.生成模型 1.1.什么是生成模型

我们从概率统计和机器学习两个方面给出生成模型的定义: 1.概率统计层面:能够在给定某一些隐含参数的条件下,随机生成观测数据的这样一种模型,称之为“生成模型”。 2.机器学习层面:直接对数据进行建模,比如根据某个变量的概率密度函数进行数据采样。在贝叶斯算法中,直接对联合概率分布 P ( x , y ) P(x,y) P(x,y)进行建模,然后利用贝叶斯公式进行求解 P ( y ∣ x ) P(y|x) P(y∣x)。

1.2.生成模型的类型

我们将生成模型分为两大类: 第一类:完全表示出数据确切的分布函数 第二类:没有办法完全表示出确切的分布函数,但是,能够做到的新的数据的生成,而具体的分布函数是模糊的。 在机器学习中,不管是自编码器AE、变分自编码器VAE、还是生成对抗网路GAN,都是属于第二类。生成新数据,也是大部分生成模型的核心目标。

二.自编码器(Autoencoder) 2.1.自编码器的定义

自编码器是一种无监督的学习任务,利用神经网络来进行表征学习。 在我们设计一个神经网络的时候,在其中加入一个"瓶颈(bottleneck)",那么将会迫使网络压缩原始输入数据的知识表征。如果输入的数据个特征之间相互独立,那这个压缩和之后的重建将会非常的困难。但是,如果数据中存在着某种结构(也就是在输入数据的特征之间存在着某种联系),并且当促使输入通过网络的"瓶颈",那么这种结构将会被学习并被利用。

图2 编码器神经网络

如图2所示。给定一个无标签数据集,是一个将原始输入 x x x重建为 x ^ \hat x x^输出的无监督学习任务。我们训练过程中的要减小重建损失 L ( x , x ^ ) L(x,\hat x) L(x,x^)。可以说"瓶颈"层是我们整个网络的一个关键属性,如果没有这个信息瓶颈的存在,那么网络将只会简单的"记忆"数据的值,然后,将这些值通过网络(并没有学习到数据的隐含分布)来重建数据。效果如图3所示

图3 瓶颈层限制了可以传遍整个网络的大量信息,使的网络去学习输入数据的压缩表示。

  在自动编码器中,需要输入一张图片,然后将一张图片编码之后得到一个隐含向量,这比随机取一个随机向量好,因为这包含着原图片的信息,然后将隐含向量解码得到与原图片对应的照片。但是这样其实并不能任意生成图片,因为没办法自己去构造隐藏向量,需要通过一张图片输入编码才知道得到的隐含向量是什么,这时就可以通过变分自动编码器解决这个问题。其实原理特别简单,只需要在编码过程给它增加一些限制,迫使它生成的隐含向量能够粗略地遵循一个标准正态分布,这就是它与一般的自动编码器最大的不同。这样生成一张新图片就很简单了,只需要给它一个标准正态分布的随机隐含向量,通过解码器就能够生成想要的图片,而不需要先给它一张原始图片编码。

2.2.自编码器分类

  自编码器输出数据的维度其维度一般远小于输入数据,使得自编码器可用于降维。更重要的是,自编码器可作为强大的特征检测器(feature detectors),应用于深度神经网络的预训练。自编码器可以限制内部表示的尺寸(这就实现降维了),或者对训练数据增加噪声并训练自编码器使其能恢复原有。这些限制条件防止自编码器机械地将输入复制到输出,并强制它学习数据的高效表示。简而言之,编码(就是输入数据的高效表示)是自编码器在一些限制条件下学习恒等函数(identity function)的副产品。   自编码器通常包括两部分:encoder(也称为识别网络)将输入转换成内部表示,decoder(也称为生成网络)将内部表示转换成输出。由于内部表示(也就是隐层的输出)的维度小于输入数据(用2D取代了原来的3D),这称为不完备自编码器(undercomplete autoencoder)。   自编码器可以有多个隐层,这被称作**栈式自编码器(或者深度自编码器)**如图4。增加隐层可以学到更复杂的编码,但千万不能使自编码器过于强大。想象一下,一个encoder过于强大,它仅仅是学习将输入映射为任意数(然后decoder学习其逆映射)。很明显这一自编码器可以很好的重建数据,但它并没有在这一过程中学到有用的数据表示。

图4 栈式自编码器 (而且也不能推广到新的实例)基本意思就是一个隐藏层的神经网络,输入输出都是x,并且输入维度一定要比输出维度大,属于无监督学习。一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。 2.3自编码器的应用

由于自编码器强大的功能,其在实际中存在着以下几个方面的应用:   第一是数据去噪。   第二是为进行可视化而降维。   第三是进行图像压缩。   第四是传统自编码器被用于降维或特征学习。

2.4自编码器与PCA的比较

如果自编码器使用线性激活函数并且损失函数是均方差(Mean Squared Error,MSE),那它就可以用来实现主成分分析(PCA)。由于两者有着在某一方面有着共同的作用,下面我们对其进行比较。  1)自编码器是一种类似于 PCA 的无监督机器学习算法。大体上,AutoEncoder可以看作是PCA的非线性补丁加强版,PCA的取得的效果是建立在降维基础上的。 2)自编码器要最小化和 PCA 一样的目标函数。自动编码器的目标是学习函数 h ( x ) ≈ x h(x) \approx x h(x)≈x。换句话说,它要学习一个近似的恒等函数,使得输出 x ^ \hat x x^ 近似等于输入 x x x。 3)它是一种神经网络,这种神经网络的目标输出就是其输入。自动编码器属于神经网络家族,但它们也和 PCA(主成分分析)紧密相关。 总之,尽管自动编码器与 PCA 很相似,但自动编码器比 PCA 灵活得多。在编码过程中,自动编码器既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3