深度学习之自编码器(1)自编码器原理

  • 自编码器原理

 前面我们介绍了在给出样本及其标签的情况下,神经网络如何学习的算法,这类算法需要学习的是在给定样本 x\boldsymbol xx下的条件概率 P(y∣x)P(y|\boldsymbol x)P(y∣x)。在社交网络蓬勃发展的今天,获取海量的样本数据 x\boldsymbol xx,如照片、语音、文本等,是相对容易的,但困难的是获取这些数据所获得的标签信息,例如机器翻译,除了收集源语言的对话文本外,还需要待翻译的目标语言文本数据。数据的标注工作目前主要还是依赖人的 先验知识(Prior Knowledge)来完成,如亚马逊的Mechanical Turk系统专门负责数据标注业务,从全世界招纳兼职人员完成客户的数据标注任务。深度学习所需要的数据规模一般非常大,这种强依赖人工完成数据标注的方式代价较高,而且不可避免地引入标注人员的主观先验偏差。

 面对海量的无标注数据,有没有办法能够从中学习到数据的分布P(x)的算法?这就是我们这章要介绍的 无监督学习(Unsupervised Learning)算法。特别地,如果算法把x作为监督信号来学习,这类算法称为 自监督学习(Self-supervised Learning),本章要介绍的自编码器算法就是属于自监督学习范畴。

自编码器原理

 让我们来考虑有监督学习中神经网络的功能:
o=fθ(x),x∈Rdin,o∈Rdout\boldsymbol o=f_θ (\boldsymbol x),\boldsymbol x\in R^{d_{in}},\boldsymbol o\in R^{d_{out}}o=fθ​(x),x∈Rdin​,o∈Rdout​
其中dind_{in}din​是输入的特征向量长度,doutd_{out}dout​是网络输出的向量长度。对于分类问题,网络模型通过把长度为dind_{in}din​的输入特征向量x\boldsymbol xx变换到长度为doutd_{out}dout​的输出向量o\boldsymbol oo,这个过程可以看成是特征降维的过程,把原始的高维输入向量x\boldsymbol xx变换到低维的变量o\boldsymbol oo。特征降维(Dimensionality Reduction)在机器学习中有广泛的应用,比如文件压缩(Compression)数据预处理(Preprocessing)等。最常见的降维算法有主成分分析法(Principle components analysis,简称PCA),通过对协方差矩阵进行特征分解而得到数据的主要成分,但是PCA本质上是一种线性变换,提取特征点能力极为有限。

 那么能不能利用神经网络的强大非线性表达能力去学习到低维的数据表示呢?问题的关键在于,训练神经网络一般需要一个显式的标签数据(或监督信号),但是无监督的数据没有额外的标注信息,只有数据x\boldsymbol xx本身。

 于是,我们尝试着利用数据x\boldsymbol xx本身作为监督信号来直到网络的训练,即希望神经网络能够学习到映射fθ:x→xf_θ:\boldsymbol x→\boldsymbol xfθ​:x→x 。我们把网络fθf_θfθ​切分为两个部分,前面的子网尝试学习映射关系gθ1:x→zg_{θ_1}:\boldsymbol x→\boldsymbol zgθ1​​:x→z,后面的子网络尝试学习映射关系hθ2:z→xh_{θ_2 }:\boldsymbol z→\boldsymbol xhθ2​​:z→x,如下图所示:

自编码器模型

我们把gθ1g_{θ_1}gθ1​​看成一个数据编码(Encode)过程,把高纬度的输入x\boldsymbol xx编码成低维度的隐变量z\boldsymbol zz(Latent Variable,或隐藏变量),称为Encoder网络(编码器);hθ2\boldsymbol h_{θ_2}hθ2​​看成数据解码(Decode)的过程,把编码过后的输入z\boldsymbol zz解码为高纬度的x\boldsymbol xx,称为Decoder网络(解码器)

 编码器和解码器共同完成了输入数据x\boldsymbol xx的编码和解码过程,我们把整个网络模型fθf_θfθ​叫做自动编码器(Auto-Encoder),简称自编码器。如果使用深层神经网络来参数化gθ1g_{θ_1}gθ1​​和hθ2h_{θ_2}hθ2​​函数,则称为深度自编码器(Deep Auto-encoder),如下图所示:

利用神经网络参数化的自编码器

 自编码器能够将输入变换到隐藏向量z\boldsymbol zz,并通过解码器重建(Reconstruct,或恢复)出xˉ\bar \boldsymbol xxˉ。我们希望解码器的的输出能够完美地活着近似恢复出原来的输入,即xˉ≈x\bar\boldsymbol x\approx \boldsymbol xxˉ≈x,那么,自编码器的优化目标可以写成:
Minimize L=dist(x,xˉ)xˉ=hθ2(gθ1(x))\text{Minimize}\ \mathcal L=\text{dist}(\boldsymbol x,\bar\boldsymbol x)\\ \bar\boldsymbol x= h_{θ_2} (g_{θ_1} (\boldsymbol x))Minimize L=dist(x,xˉ)xˉ=hθ2​​(gθ1​​(x))
其中dist(x,xˉ)\text{dist}(\boldsymbol x,\bar\boldsymbol x)dist(x,xˉ)表示x\boldsymbol xx和xˉ\bar\boldsymbol xxˉ的距离度量,称为重建误差函数。最常见的度量方法有欧式距离(Euclidean distance)的平方,计算方法如下:
L=∑i(xi−xˉi)2\mathcal L=\sum_i(\boldsymbol x_i-\bar\boldsymbol x_i)^2 L=i∑​(xi​−xˉi​)2
它和均方误差原理上是等价的。自编码器网络和普通的神经网络并没有本质的区别,只不过训练的监督信号由标签y\boldsymbol yy变成了自身x\boldsymbol xx。借助于深层神经网络的非线性特征提取能力,自编码器可以获得良好的数据表示,相对于PCA等线性方法,自编码器性能更加优秀,甚至可以更加完美的恢复出输入x\boldsymbol xx。

自编码器对比PCA

 在上图(a)中,第1行是随机采样自测试的真实MNIST手写数字图片,第2、3、4行分别是基于长度为30的隐藏向量,使用自编码器、Logistic PCA和标准PCA算法恢复出的重建样本图片;在图(b)中,第1行为真实的人像图片,第2、3行分别是基于长度为30的隐藏向量,使用自编码器和标准PCA算法恢复出的重建样本。可以看到,使用深层神经网络的自编码器重建出图片相对清洗,还原度较高,而PCA算法重建出的图片较模糊。

深度学习之自编码器(1)自编码器原理相关推荐

  1. 花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)

    文章目录 0. 前言 1. 欠完备自编码器 2. 去噪自编码器 DAE 3. 收缩自编码器 CAE 4. 稀疏自编码器 5. 预测稀疏分解 PSD 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞 ...

  2. Keras深度学习实战(36)——基于编码器-解码器的机器翻译模型

    Keras深度学习实战(36)--基于编码器-解码器的机器翻译模型 0. 前言 1. 模型与数据集分析 1.1 数据集分析 1.2 模型分析 2. 基于编码器-解码器结构的机器翻译模型 2.1 基于编 ...

  3. 【深度学习】谷歌大脑EfficientNet的工作原理解析

    [深度学习]谷歌大脑EfficientNet的工作原理解析 文章目录 1 知识点准备1.1 卷积后通道数目是怎么变多的1.2 EfficientNet 2 结构2.1 方式2.2 MBConv卷积块2 ...

  4. 【深度学习】5:CNN卷积神经网络原理

    前言:先坦白的说,深度神经网络的学习在一开始对我造成的困扰还是很大的,我也是通过不断地看相关的视频资料.文献讲解尝试去理解记忆.毕竟这些内容大多都是不可查的,我们看到的都只是输入输出的东西,里面的内部 ...

  5. 深度学习笔记一:稀疏自编码器

    开始学习深度学习了,既然确定目标就要努力前行!为自己加油!--2015.6.11 Sparse Encoder 1.神经网络 概念:假设我们有训练样本集 (x(^ i),y(^ i)) ,那么神经网络 ...

  6. 【译】图上的深度学习综述 五、图自编码器

    Deep Learning on Graphs: A Survey Arxiv 1812.04202 自编码器(AE)及其变体被广泛用于无监督学习 [74],它适用于学习没有监督信息的图节点表示. 在 ...

  7. 深度学习中Attention Mechanism详细介绍:原理、分类及应用

    Attention是一种用于提升基于RNN(LSTM或GRU)的Encoder + Decoder模型的效果的的机制(Mechanism),一般称为Attention Mechanism.Attent ...

  8. 深度学习常用损失函数总览:基本形式、原理、特点

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:王桂波,来源:极市平台 机器学习中的监督学习本质上是给定一系列训练 ...

  9. 六个深度学习常用损失函数总览:基本形式、原理、特点

    来源:极市平台 本文共4500字,建议阅读8分钟本文将介绍机器学习.深度学习中分类与回归常用的几种损失函数. 机器学习中的监督学习本质上是给定一系列训练样本  ,尝试学习  的映射关系,使得给定一个  ...

  10. 系统梳理 Tensorflow、PyTorch 等深度学习框架,洞悉 AI 系统底层原理和算法

    分布式技术是深度学习技术的加速器. 同时利用多个工作节点,分布式地.高效地训练出性能优良的神经网络模型,能够显著提高深度学习的训练效率.进一步增大其应用范围. <首席AI架构师--分布式高性能深 ...

最新文章

  1. php俩个字符串合并,php分割合并两个字符串的函数实例
  2. window bat
  3. TypeScript里的Index signature
  4. 虚拟化安全防护系统部署在安全服务器上,虚拟化安全防护-安天 智者安天下
  5. c++实现二叉搜索树
  6. 个人推动团队项目进展_推动者和关守者对开发团队的价值
  7. 内网ip 设置_我的天,大牛黑客轻而易举打穿三层内网,吃惊
  8. java 内存分配参数_浅谈JAVA内存分配与参数传递
  9. 分布式之Zookeeper使用
  10. 海康IP摄像头rtsp解码(ubuntu上使用)
  11. 景观设计常用的SU插件(Sketchup)
  12. ssm产品销售管理系统计算机毕业设计
  13. TP6使用session
  14. 怎么批量提取文件夹中所有的文件名称及文件路径?
  15. S7-200SMART 模拟量间接寻址 批量处理
  16. sketch导出html可以跳转,Sketch导入、导出功能说明及技巧
  17. 推荐几本经典计算机书籍
  18. 计算机教育学校排名,教育知识:2020全国最好的计算机专业学校排名
  19. 字符串转为Date类型
  20. 【MQTT】.Net Core 操作

热门文章

  1. python培训的课时是多久_如何快速学习python,学习python的最短时间是多久?
  2. 学生电脑哪个牌子好_常亮补光灯哪个牌子好服务至上
  3. SVN服务器更换地址解决方法
  4. 宁波医院计算机试题及答案,(宁波市第25届小学生计算机程序设计竞赛试题及答案.doc...
  5. Kotlin学习笔记(六) 伴生对象 对象表达式
  6. Less语法基于node\grunt/gulp编译
  7. protobuf oc
  8. 使用分发列表过滤BGP路由
  9. RabbitMQ 安装操作
  10. web.xml配置(转)