前言

AutoEncoder是深度学习的另外一个重要内容,并且非常有意思,神经网络通过大量数据集,进行end-to-end的训练,不断提高其准确率,而AutoEncoder通过设计encode和decode过程使输入和输出越来越接近,是一种无监督学习过程。

AutoEncoder

Introduction

AutoEncoder包括两个过程:encode和decode,输入图片通过encode进行处理,得到code,再经过decode处理得到输出,有趣的是,我们控制encode的输出维数,就相当于强迫encode过程以低维参数学习高维特征,这导致的结果和PCA类似。

AutoEncoder的目的是使下图中的输入x和输出x_head越相似越好,这就需要在每次输出之后,进行误差反向传播,不断优化。

高维数据对于我们的感官体验总是不友好,如果我们将输入降低至二维,放在二维平面中就会更加直观,下图是MNIST数据集做AutoEncoder:

上面是PCA的结果,下面是AutoEncoder的结果,在二维中结果很清晰。

encode和decode两个过程可以理解成互为反函数,在encode过程不断降维,在decode过程提高维度。当AutoEncoder过程中用卷积操作提取特征,相当于encode过程为一个深度卷积神经网络,好多层的卷积池化,那么decode过程就需要进行反卷积和反池化,那么,反卷积和反池化如何定义呢?

Unpooling

池化过程实际上就是降维过程,假设图片大小为32x32,池化大小为2x2,就相当于将图片中相邻的2x2个像素点替换为四个点中最大数值(max-pooling),池化处理之后得到的图片大小为16x16,Unpooling过程则需要将16x16的图片变为32x32,其实在池化过程中,会标记2x2像素点中最大值的位置,在Unpooling过程将最大值还原,其他位置填0。
以上并不是Unpooling的唯一做法,在Keras中,不会记住最大值的位置,而是将所有像素均以最大值填充。

Deconvolution

卷积过程是一个矩阵在另一个矩阵上面做滑动运算,反卷积也是一样,实际上,反卷积就是卷积,看下面的图,我们熟悉的是左面的卷积过程,假设有5个像素点,卷积核为3,步长为1,卷积之后生成3个feature,我们想象中的反卷积应该是中间所示的情形,由3个输入生成5个输出,如果我们将反卷积中的输入做2的padding,这样原本3个输入变成7个输入,再做卷积,生成5个输出,对比左右两侧的图,是完全相反的,所以,我们加上padding,使反卷积变成了卷积运算。

De-noising AutoEncoder

对于AutoEncoder,每一次的训练都是自身的对比,这回造成输出和输入越来越类似,而对同种类的其他图片表现不敏感,于是,De-noising AutoEncoder派上了用场,如下图所示,在输入之前,先将图片加入随机噪声,这样每次的输入都会略有差异,然后将带有噪声的图片进行AutoEncoder,将输出的y与加噪声之前的图片进行比较,这样训练出来的y就具有抗噪声的能力,在以图搜图的场景下也就提高了泛化能力。

参考资料

http://blog.csdn.net/changyuanchn/article/details/15681853
http://blog.csdn.net/acdreamers/article/details/44657745
YouTube李宏毅老师的深度学习视频
http://www.cnblogs.com/tornadomeet/archive/2013/03/19/2970101.html
李航《统计学习方法》

AutoEncoder概念【常用】相关推荐

  1. Git的基本概念/常用命令及实例

    Git的基本概念/常用命令及实例 什么是仓库 在 Git 的概念中,仓库,就是你存在.git目录的那个文件夹内的所有文件,包括隐藏的文件,Git程序会再当前目录以及上级目录查找是否存在.git文件,如 ...

  2. 几个主要的概念常用缓存注解#

    几个主要的概念&常用缓存注解# 名称    解释 Cache    缓存接口,主要实现由 RedisChache, EhCacheCachem , ConcurrentMapCache Cac ...

  3. 机器学习 基本概念,常用经典模型

    1. 机器学习 明白一些基本概念 什么是机器学习 研究如何通过计算的手段,利用经验来改善系统自身的性能 通俗来讲,让代码学着干活 特征:自变量 标签:因变量 学习的种类 有监督学习:提供标签,分类.回 ...

  4. 46.逻辑卷管理1,lvm架构,概念,常用命令介绍

    LVM架构 LVM(Logical Volume Manager)可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的.lvm需要使用的软件包为lvm2.它的架构 相关概念 ...

  5. influxdb概念 常用查询语句

    一, 基础操作 # 创建数据库 create database <dataname> # 删除数据库 drop database <dataname> # 查看数据库 show ...

  6. 01_html(跟着宝哥学java:ee)html概念 常用标签 html练习

    1 概念 html: hyper text markup language 超文本标记语言 描述性语言:描述数据 语法:标签:标签格式:<标签名 属性名=属性值 属性名=属性值 >数据&l ...

  7. 【概率论基础进阶】数理统计的基本概念-常用统计分布

    文章目录 χ 2 \chi^{2} χ2分布 性质 t t t分布 性质 F F F分布 性质 正态总体的抽验分布 一个正态总体 两个正态总体 χ 2 \chi^{2} χ2分布 定义:设随机变量 X ...

  8. 从AE(Auto-encoder)到VAE(Variational Auto-Encoder)

    一.Auto-Encoder (AE) 1)Auto-encoder概念 自编码器要做的事:将高维的信息通过encoder压缩到一个低维的code内,然后再使用decoder对其进行重建." ...

  9. 计算机中的公式应用,计算机办公主动化(常用公式和函数在电子表格中的应用).ppt...

    计算机办公主动化(常用公式和函数在电子表格中的应用) 坚远骆活携立吐肪疽框憨聚粒惧索护帐簿挣筋妙弱饼刷砧辫肯旱技仙菊掉计算机办公自动化(常用公式和函数在电子表格中的应用)计算机办公自动化(常用公式和函 ...

最新文章

  1. Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode
  2. linux下的trap命令
  3. java笔记之线程方式1启动线程
  4. mysql注入提取邮件_【sql注入教程】mysql注入直接getshell
  5. USB:收录比较好的USB协议讲解
  6. 红黑树并没有我们想象的那么难(下)
  7. JMeter 连接 sql server
  8. 几款KINECT应用
  9. 如何阅读科研文献-------------一点思考与总结
  10. 大数据体系的4个热点4个趋势,还有3个疑问
  11. 天正电气lisp是什么文件_CAD中acad.lsp是个什么文件???
  12. RH850 F1L freeRTOS 任务栈的切换
  13. 利用数据细分目标客户群
  14. 技术前言 - 芯片制造工序详解
  15. golang 通过docker 搭建 ocr识别
  16. MUR560D-ASEMI快恢复二极管MUR560D
  17. mysql属于dql语句的是_4.MySql中的SQL语句(三):DQL
  18. STM32野火教程学习笔记
  19. 基于Matlab绘制风向与风速的关系图
  20. php-sdk 安装,PHP SDK怎么安装

热门文章

  1. (软件工程复习核心重点)第二章可行性研究-第四节:数据字典
  2. Linux系统编程3:基础篇之详解Linux软件包管理器yum
  3. sqlmap 注入方式、使用总结
  4. JS call()和apply()方法和区别
  5. Python连接telnet客户端连接服务端程序
  6. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  7. 《论文笔记》Collaborative Visual Inertial SLAM for Multiple Smart Phones
  8. Spring框架Runtime介绍(导包)
  9. 玄学小记.5 ~ Bluestein's algorithm
  10. 修改myeclipse字体与操作系统的字体一致