叠置去噪自编码器:用局部去噪准则学习深度网络中的有用表示

本文主要是介绍叠置去噪自编码器:用局部去噪准则学习深度网络中的有用表示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vincent P, Larochelle H, Lajoie I, Bengio Y, Manzagol P-A. Stacked denoising autoencoders: Learning useful representations in a deep network with a local denoising criterion. J Mach Learn Res. 2010;11:3371–408.

摘要

我们探索了一种构建深度网络的原始策略,该策略基于去噪自编码器的堆叠层,这些自编码器经过局部训练以去噪其输入的损坏版本。由此产生的算法是普通自编码器堆叠的直接变化。然而,在分类问题的基准测试中显示,它产生的分类误差显著降低,从而弥合了与深度信念网络(DBN)的性能差距,并在某些情况下超过了DBN。以这种纯无监督方式学习的更高级别表示也有助于提高后续SVM分类器的性能。定性实验表明,与普通自编码器不同,去噪自编码器能够从自然图像斑块中学习类gabor边缘检测器,从数字图像中学习更大的笔划检测器。这项工作清楚地确立了使用去噪标准作为可处理的无监督目标来指导有用的高级表示学习的价值。

关键词:深度学习,无监督特征学习,深度信念网络,自编码器,去噪

1.   介绍

长期以来,神经网络研究领域一直认为,多层非线性的组合将是有效地对变量之间的复杂关系进行建模,并在困难的识别任务中获得更好的泛化性能的关键(McClelland et al., 1986;辛顿,1989; Utgoff and Stracuzzi, 2002)。

这一观点的产生部分源于对人类大脑区域(如视觉皮层)分层结构的了解,部分源于对其有利的理论论证(H˚astad, 1986;H˚astad and Goldmann, 1991;Bengio and LeCun, 2007;Bengio, 2009)。然而,回顾多层神经网络的历史,它们存在问题的非凸优化长期以来阻碍了获得预期的收益(Bengio et al., 2007;Bengio, 2009)超越一个或两个隐藏层因此,许多机器学习研究在允许凸优化的浅层架构中取得了进展,而在深度网络中学习的难题则处于休眠状态。

最近对这种深度架构的兴趣的复兴是由于新方法的发现(Hinton et al., 2006;Hinton and Salakhutdinov, 2006;Bengio et al., 2007;Ranzato et al., 2007;Lee et al., 2008),证明在学习参数方面是成功的。自从Hinton et al.(2006)和Hinton and Salakhutdinov(2006)在深度信念网络(DBN)上的开创性工作以来,已经提出了几种替代技术和改进方法。然而,所有这些似乎都建立在同样的原则之上,我们可以总结如下:

•训练一个深度网络,从随机初始化参数开始,通过梯度下降直接优化感兴趣的监督目标(例如正确分类的对数概率),效果并不好。

•效果更好的是最初使用一个局部无监督标准依次(预)训练每一层,目标是学习从前一层输出的低级表示产生有用的高级表示。

从这个起点开始,在监督目标上的梯度下降导致在泛化性能方面更好的解决方案。经验表明,以这种方式训练的深层网络可以避免陷入只能随机初始化的那种糟糕的解决方案。参见Erhan et al.(2010)对该现象的可能解释进行了深入的实证研究和讨论。

除了与任务相关的监督标准外,似乎关键是使用额外的无监督标准来指导每一层的学习。从这个意义上说,这些技术与半监督学习方法有很多共同点,除了它们即使在所有示例都被标记的情况下也有用,利用数据的输入部分进行正则化,从而接近更好的泛化误差最小(Erhan等人,2010)。

对于什么构成初始化深度架构的“好”表示,或者什么明确的无监督标准可以最好地指导他们的学习,目前还没有明确的理解。我们知道,只有少数算法可以很好地实现这一目的,首先是受限玻尔兹曼机(RBMs) (Hinton等人,2006;Hinton和Salakhutdinov, 2006;Lee等人,2008年)和自动编码器(Bengio等人,2007年;Ranzato等人,2007年),以及半监督嵌入(Weston等人,2008年)和核PCA (Cho和Saul, 2010年)。

值得一提的是,RBMs (Hinton, 2002;Smolensky, 1986)和基本的经典自动编码器在功能形式上非常相似,尽管它们的解释和用于训练它们的程序非常不同。更具体地说,两个模型从输入映射到均值隐藏表示的确定性函数是相同的,将在2.2节详细介绍。一个重要的区别是,确定性自动编码器考虑实值均值作为其隐藏表示,而随机RBMs从该均值中采样二进制隐藏表示。然而,在初始预训练之后,当rbm堆叠在深度神经网络中时,在实践中通常使用这些实值均值(Hinton等人,2006;Hinton和Salakhutdinov, 2006)。这更符合确定性自动编码器的解释。还要注意,在RBM中,自编码器的重构误差可以被视为对数似然梯度的近似,在某种程度上,这与使用RBM的对比散度更新所做的近似类似(Bengio和Delalleau, 2009)。因此,通过堆叠自动编码器初始化深度网络产生的分类性能几乎与堆叠RBMs一样好就不足为奇了(Bengio等人,2007;Larochelle等人,2009a)。但为什么它几乎没有那么好呢?本研究的最初动机是寻找一种方法来弥合这种性能差距。

有了自动编码器范式,我们开始研究什么可以形成一个好的、有用的表示。我们一直在寻找无监督学习原则,这些原则可以帮助我们学习到能够检测输入模式中重要结构的特征检测器。第二节引导读者理解我们的推理过程。从保留信息的简单直观概念出发,提出了经典自编码器的一般化表述,然后强调了其局限性。这导致我们在第3节中提出了一个替代的去噪准则,并推导出去噪自编码器模型,还给出了一个可能的直观几何解释。仔细研究所考虑的噪声类型,将使我们能够推导出基本模型的进一步扩展。第4节讨论了已有的相关工作和方法。第5节提供了实验,定性地研究了在各种条件下由单层去噪自编码器学习的特征检测器。第6节描述了通过堆叠去噪自编码器获得的多层架构的实验,并将其分类性能与其他最先进的模型进行了比较。第7节尝试将堆叠(去噪)自动编码器转换为实用的生成模型,以便对生成的样本与dbn进行定性比较。第8节总结了我们的发现并总结了我们的工作。

2. 什么是好的表现?从互信息到自动编码器

从一开始,我们就可以对“好的”表示给出一个可操作的定义,即最终将有助于解决感兴趣的任务,从某种意义上说,它将帮助系统在这些任务上快速实现更高的性能,而不是首先学习形成表示。基于通常用于评估算法性能的客观指标,这可以表述为“一个好的表示就是能够产生性能更好的分类器的表示”。最终的分类性能通常会被用来客观地比较算法。然而,如果要从最近深度网络训练技术的突破中吸取教训,那就是来自单一狭义分类任务的错误信号不应该是用于指导表示学习的唯一或主要标准。首先,实验表明,通过优化一个无监督准则开始,而不考虑特定的分类问题,实际上可以极大地帮助最终实现该分类问题的卓越性能。其次,可以说,人类迅速精通新任务的能力在很大程度上是建立在他们面对该任务之前学习的基础上的。

在本节中,我们从保留信息和进展的简单概念开始,从这个更普遍的角度正式介绍传统的自动编码器范式。

2.1 保留输入信息

2.2传统自动编码器(AE)

这篇关于叠置去噪自编码器:用局部去噪准则学习深度网络中的有用表示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739727

相关文章

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子