热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PartIII2.Autoencoders

Autoencoders1、欠完备自编码器(UndercompleteAutoencoders)2、正则自编码器(RegularizedA


Autoencoders

  • 1、欠完备自编码器(Undercomplete Autoencoders)
  • 2、正则自编码器(Regularized Autoencoders)
    • 2.1、稀疏自编码器(Sparse Autoencoders)
    • 2.2、去噪自编码器(Denoising Autoencoders)
    • 2.3、收缩自编码器(Contractive Autoencoders)



自编码器是神经网络的一种,用于重构训练数据(reconstruction),其有一个描述编码的隐藏层,该编码用于表示输入。该网络由两个部分组成,编码器
h=f(x)\boldsymbol{h}=f(\boldsymbol{x})h=f(x)、解码器
r=g(h)\boldsymbol{r}=g(\boldsymbol{h})r=g(h),其中
h\boldsymbol{h}h 称为 编码(code), 如下图

自编码器


1、欠完备自编码器(Undercomplete Autoencoders)

通常我们期望训练自编码器执行输入拷贝任务(即 r=g(fx)\boldsymbol{r} = g(f{\boldsymbol{x}})r=g(fx))使得 h\boldsymbol{h}h 获得有用的属性。通过自编码器获取有用特征的一种方法是限制 h\boldsymbol{h}h 的维度小于 x\boldsymbol{x}x 的维度。编码维度小于输入维度的自编码器称为欠完备自编码器。其学习过程可简单描述为最小化 L(x,g(f(x)))L(\boldsymbol{x}, g(f(\boldsymbol{x})))L(x,g(f(x)))


  • 当解码器是线性的且 LLL 是 MSE,欠完备自编码器可学习与 PCA 相同的子空间。
  • 当编码和解码都为非线性函数时,自编码器可学到更强大的非线性 PCA 推广。但若自编码器过于强大,将不能够从训练数据种提取到突出的信息,极端情况为输出完整表示了输入。

2、正则自编码器(Regularized Autoencoders)

正则自编码器使用一个损失函数来鼓励模型学习除拷贝输入到输出之外的其他特性,如稀疏表示、 表示的小导数、以及对噪声或输入缺失的鲁棒性。即使模型容量大到足以学习一个无意义的恒等函数,非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息。


2.1、稀疏自编码器(Sparse Autoencoders)

稀疏自编码器可简单看作具有额外稀疏惩罚项的自编码器,即目标函数为:L(x,g(f(x)))+Ω(h)L(\boldsymbol{x}, g(f(\boldsymbol{x})))+\varOmega(\boldsymbol{h})L(x,g(f(x)))+Ω(h)其中 h=f(x)\boldsymbol{h}=f(\boldsymbol{x})h=f(x) 即编码器的输出,Ω(h)\varOmega(\boldsymbol{h})Ω(h) 为作用在编码器输出上的稀疏惩罚项。


与正则化项不同,正则化项直接作用于权重向量。而稀疏自编码器的惩罚项作用于编码层的输出。


我们可以将整个稀疏自编码器看作是具有隐变量(latent variables)的生成模型的近似最大似然训练。假设模型有可见变量 x\boldsymbol{x}x 和隐变量 h\boldsymbol{h}h,且具有明确的联合分布 pmodel(x,h)=pmodel(h)pmodel(x∣h)p_{model}(\boldsymbol{x,h})=p_{model}(\boldsymbol{h})\,p_{model}(\boldsymbol{x|h})pmodel(x,h)=pmodel(h)pmodel(xh)。我们将 pmodel(h)p_{model}(\boldsymbol{h})pmodel(h) 视为模型关于隐变量的先验分布,表示模型看到 x\boldsymbol{x}x 的先验信念。对数似然可被分解为,logpmodel(x)=∑hlogpmodel(x,h)log\,p_{model}(\boldsymbol{x})=\sum_\boldsymbol{h}log\,p_{model}(\boldsymbol{x,h})logpmodel(x)=hlogpmodel(x,h)我们可以认为自编码器使用一个高似然值 h\boldsymbol{h}h 的点估计近似这个总和。根据所选择的 h\boldsymbol{h}h,最大化logpmodel(x,h)=logpmodel(h)+logpmodel(x∣h)log\,p_{model}(\boldsymbol{x,h})=log\,p_{model}(\boldsymbol{h})+log\,p_{model}(\boldsymbol{x|h})logpmodel(x,h)=logpmodel(h)+logpmodel(xh) logpmodel(h)log\,p_{model}(\boldsymbol{h})logpmodel(h) 能被稀疏诱导,以 Laplace 先验为例,pmodel(hi)=λ2e−λ∣hi∣p_{model}(h_i)=\frac{\lambda}{2}e^{-\lambda |h_i|}pmodel(hi)=2λeλhi 代入 pmodel(h)=∏ipmodel(hi)p_{model}(\boldsymbol{h})=\prod_i p_{model}(h_i)pmodel(h)=ipmodel(hi),则有 −logpmodel(h)=∑i(λ∣hi∣−logλ2)=λ∑i∣hi∣+const=Ω(h)+const-log\,p_{model}(\boldsymbol{h})=\sum_i\Big(\lambda |h_i|-log\,\frac{\lambda}{2}\Big)=\lambda \sum_i|h_i|+const=\varOmega(\boldsymbol{h})+constlogpmodel(h)=i(λhilog2λ)=λihi+const=Ω(h)+const 其中,const 项仅仅依赖于 λ\lambdaλ,因此不影响参数学习,可丢弃该项。其他先验如 Student-t 先验也可诱导稀疏。


2.2、去噪自编码器(Denoising Autoencoders)

通过自编码器提取输入的有用数据的原理是阻止自编码器仅学习到一个恒等式。去噪自编码器不是在代价函数上额外添加一个惩罚项,而是对编码器输入进行噪声扰动,即 L(x,g(f(x~)))L(\boldsymbol{x}, g(f(\overset{\text{\textasciitilde}}{\boldsymbol{x}})))L(x,g(f(x~)))其中,x~\overset{\text{\textasciitilde}}{\boldsymbol{x}}x~x\boldsymbol{x}x 被噪声破坏后的版本。


2.3、收缩自编码器(Contractive Autoencoders)

稀疏自编码的另一个策略是惩罚导数作为正则,即使用以下形式的惩罚项 Ω(h,x)=λ∑i∣∣∇xhi∣∣2\varOmega(\boldsymbol{h,x})=\lambda \sum_i||\nabla_\boldsymbol{x}h_i||^2Ω(h,x)=λixhi2 这种策略会使模型所学习到的函数对 x\boldsymbol{x}x 的改动不敏感,即 x\boldsymbol{x}x 的轻微变化不会导致模型所学得函数大的变化。


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
author-avatar
三毛2502858553
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有