当前位置: 首页 > news >正文

深度学习自编码器 - 收缩自编码器(CAE)篇

序言

在深度学习的浪潮中,收缩自编码器( Compressive Autoencoder, CAE \text{Compressive Autoencoder, CAE} Compressive Autoencoder, CAE)作为自编码器的一种高级形式,正逐步崭露头角。收缩自编码器在保留自编码器核心功能——即数据压缩与重构的基础上,引入了更为严格的压缩技术,以追求更低维且更具代表性的数据表示。这一特性使得收缩自编码器在数据降维、特征学习、降噪及高效信息处理等方面展现出独特的优势。本文将简要介绍收缩自编码器的概念、原理及其在实际应用中的潜力,以期为读者提供一个全面而深入的了解。

收缩自编码器(Compressive Autoencoder)

  • 收缩自编码器( Rifai et al., 2011a,b \text{Rifai et al., 2011a,b} Rifai et al., 2011a,b) 在编码 h = f ( x ) \boldsymbol{h} = f(\boldsymbol{x}) h=f(x) 的基础上添加了显式的正则项,鼓励 f f f 的导数尽可能小:
    Ω ( h ) = λ ∥ ∂ f ( x ) ∂ x ∥ F 2 \Omega(\boldsymbol{h})=\lambda\Vert\frac{\displaystyle\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}}\Vert_F^2 Ω(h)=λxf(x)F2 — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1
  • 惩罚项 Ω ( h ) \Omega(\boldsymbol{h}) Ω(h) 为平方 Frobenius \text{Frobenius} Frobenius范数(元素平方之和),作用于与编码器的函数相关偏导数的 Jacobian \text{Jacobian} Jacobian矩阵。
  • 去噪自编码器和收缩自编码器之间存在一定联系: Alain and Bengio (2013) \text{Alain and Bengio (2013)} Alain and Bengio (2013) 指出在小高斯噪声的限制下,当重构函数将 x \boldsymbol{x} x 映射到 r = g ( f ( x ) ) \boldsymbol{r} = g(f(\boldsymbol{x})) r=g(f(x)) 时,去噪重构误差与收缩惩罚项是等价的。换句话说, 去噪自编码器能抵抗小且有限的输入扰动,而收缩自编码器使特征提取函数能抵抗极小的输入扰动。
  • 分类任务中,基于 Jacobian \text{Jacobian} Jacobian的收缩惩罚预训练特征函数 f ( x ) f(\boldsymbol{x}) f(x),将收缩惩罚应用在 f ( x ) f(\boldsymbol{x}) f(x) 而不是 g ( x ) ) g(\boldsymbol{x})) g(x)) 可以产生最好的分类精度。如深度学习自编码器 - 去噪自编码器篇所讨论,应用于 f ( x ) f(\boldsymbol{x}) f(x)的收缩惩罚与得分匹配也有紧密的联系。
  • 收缩 ( contractive \text{contractive} contractive) 源于 CAE \text{CAE} CAE弯曲空间的方式。具体来说,由于 CAE \text{CAE} CAE训练为抵抗输入扰动,鼓励将输入点邻域映射到输出点处更小的邻域。我们能认为这是将输入的邻域收缩到更小的输出邻域。
  • 说得更清楚一点, CAE \text{CAE} CAE只在局部收缩——一个训练样本 x \boldsymbol{x} x 的所有扰动都映射到 f ( x ) f(\boldsymbol{x}) f(x) 的附近。
    • 全局来看,两个不同的点 x \boldsymbol{x} x x ′ \boldsymbol{x}^\prime x 会分别被映射到远离原点的两个点 f ( x ) f(\boldsymbol{x}) f(x) f ( x ′ ) f(\boldsymbol{x}^\prime) f(x)
    • f f f 扩展到数据流形的中间或远处是合理的(见图例1中小例子的情况)。
    • Ω ( h ) \Omega(\boldsymbol{h}) Ω(h) 惩罚应用于 sigmoid \text{sigmoid} sigmoid单元时, 收缩 Jacobian \text{Jacobian} Jacobian的简单方式是令 sigmoid \text{sigmoid} sigmoid趋向饱和的 0 0 0 1 1 1
    • 这鼓励 CAE \text{CAE} CAE使用 sigmoid \text{sigmoid} sigmoid的极值编码输入点,或许可以解释为二进制编码。
    • 它也保证了 CAE \text{CAE} CAE可以穿过大部分 sigmoid \text{sigmoid} sigmoid隐藏单元能张成的超立方体,进而扩散其编码值。
  • 我们可以认为点 x \boldsymbol{x} x 处的 Jacobian \text{Jacobian} Jacobian矩阵 J \boldsymbol{J} J 能将非线性编码器近似为线性算子。这允许我们更形式地使用 “收缩’’ 这个词。
    • 在线性理论中,当 J x \boldsymbol{J}\boldsymbol{x} Jx 的范数对于所有单位 x \boldsymbol{x} x 都小于等于 1 1 1 时, J \boldsymbol{J} J 被称为收缩的。
    • 换句话说,如果 J \boldsymbol{J} J 收缩了单位球,他就是收缩的。
    • 我们可以认为 CAE \text{CAE} CAE为鼓励每个局部线性算子具有收缩性,而在每个训练数据点处将 Frobenius \text{Frobenius} Frobenius范数作为 f ( x ) f(\boldsymbol{x}) f(x) 的局部线性近似的惩罚。
  • 深度学习自编码器 - 使用自编码器学习流形篇中描述,正则自编码器基于两种相反的推动力学习流形。
    • CAE \text{CAE} CAE的情况下,这两种推动力是重构误差和收缩惩罚 Ω ( h ) \Omega(\boldsymbol{h}) Ω(h))。
    • 单独的重构误差鼓励 CAE \text{CAE} CAE学习一个恒等函数。
    • 单独的收缩惩罚将鼓励 CAE \text{CAE} CAE学习关于 x \boldsymbol{x} x 是恒定的特征。
    • 这两种推动力的的折衷产生导数 ∂ f ( x ) ∂ x \displaystyle\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}} xf(x) 大多是微小的自编码器。
    • 只有少数隐藏单元,对应于一小部分输入数据的方向,可能有显著的导数。
  • CAE \text{CAE} CAE的目标是学习数据的流形结构。
    • 使 J x \boldsymbol{J}\boldsymbol{x} Jx 很大的方向 x \boldsymbol{x} x,会快速改变 h \boldsymbol{h} h,因此很可能是近似流形切平面的方向。
    • Rifai et al. (2011a,b) \text{Rifai et al. (2011a,b)} Rifai et al. (2011a,b) 的实验显示训练 CAE \text{CAE} CAE会导致 J \boldsymbol{J} J 中大部分奇异值(幅值)比 1 1 1 小,因此是收缩的。
    • 然而,有些奇异值仍然比 1 1 1大,因为重构误差的惩罚鼓励 CAE \text{CAE} CAE对最大局部变化的方向进行编码。
    • 对应于最大奇异值的方向被解释为收缩自编码器学到的切方向。
    • 理想情况下,这些切方向应对应于数据的真实变化。
    • 比如,一个应用于图像的 CAE \text{CAE} CAE应该能学到显示图像改变的切向量,如深度学习自编码器 - 使用自编码器学习流形篇 - 图例1图中物体渐渐改变状态。
    • 图例1所示,实验获得的奇异向量的可视化似乎真的对应于输入图象有意义的变换。
  • 收缩自编码器正则化准则的一个实际问题是,尽管它在单一隐藏层的自编码器情况下是容易计算的,但在更深的自编码器情况下会变的难以计算。
    • 根据 Rifai et al. (2011a) \text{Rifai et al. (2011a)} Rifai et al. (2011a) 的策略,分别训练一系列单层的自编码器,并且每个被训练为重构前一个自编码器的隐藏层。
    • 这些自编码器的组合就组成了一个深度自编码器。
    • 因为每个层分别训练成局部收缩,深度自编码器自然也是收缩的。
    • 这个结果与联合训练深度模型完整架构(带有关于 Jacobian \text{Jacobian} Jacobian的惩罚项)获得的结果是不同的,但它抓住了许多理想的定性特征。
  • 另一个实际问题是,如果我们不对解码器强加一些约束,收缩惩罚可能导致无用的结果。
    • 例如 编码器将输入乘一个小常数 ϵ \epsilon ϵ, 解码器将编码除以一个小常数 ϵ \epsilon ϵ
    • 随着 ϵ \epsilon ϵ 趋向于 0 0 0, 编码器会使收缩惩罚项 Ω ( h ) \Omega(\boldsymbol{h}) Ω(h) 趋向于 0 0 0 而学不到任何关于分布的信息。
    • 同时, 解码器保持完美的重构。
    • Rifai et al. (2011a) \text{Rifai et al. (2011a)} Rifai et al. (2011a) 通过绑定 f f f g g g 的权重来防止这种情况。
    • f f f g g g 都是由线性仿射变换后进行逐元素非线性变换的标准神经网络层组成,因此将 g g g 的权重矩阵设成 f f f 权重矩阵的转置是很直观的。

  • 图例1:通过局部PCA和收缩自编码器估计的流形切向量的图示。
    • 通过局部PCA和收缩自编码器估计的流形切向量的图示。
      在这里插入图片描述

    • 说明:

      • 流形的位置由来自 CIFAR-10 \text{CIFAR-10} CIFAR-10数据集中狗的输入图像定义。
      • 切向量通过输入到代码映射的 Jacobian \text{Jacobian} Jacobian矩阵 ∂ h ∂ x \frac{\partial \boldsymbol{h}}{\partial \boldsymbol{x}} xh 的前导奇异向量估计。
      • 虽然局部 PCA \text{PCA} PCA CAE \text{CAE} CAE都可以捕获局部切方向,但 CAE \text{CAE} CAE能够从有限训练数据形成更准确的估计,因为它利用了不同位置的参数共享(共享激活的隐藏单元子集)。
      • CAE \text{CAE} CAE切方向通常对应于物体的移动或改变部分(例如头或腿)。
      • Rifai et al. (2011c) \text{Rifai et al. (2011c)} Rifai et al. (2011c) 许可转载此图。

总结

收缩自编码器通过其高效的压缩机制,实现了对输入数据更为紧凑和精确的特征提取。相比传统自编码器,收缩自编码器在保持数据质量的同时,进一步降低了数据维度,减少了存储和传输的开销,提高了计算效率。此外,其强大的降噪和特征学习能力,使得收缩自编码器在数据预处理、特征工程及异常检测等领域具有广泛的应用前景。随着深度学习技术的不断发展,收缩自编码器将持续进化,为更多复杂数据的处理与分析提供有力支持。

往期内容回顾

深度学习自编码器 - 去噪自编码器篇
深度学习自编码器 - 使用自编码器学习流形篇

相关文章:

深度学习自编码器 - 收缩自编码器(CAE)篇

序言 在深度学习的浪潮中,收缩自编码器( Compressive Autoencoder, CAE \text{Compressive Autoencoder, CAE} Compressive Autoencoder, CAE)作为自编码器的一种高级形式,正逐步崭露头角。收缩自编码器在保留自编码器核心功能—…...

Dubbo与SpringCloud的区别和优缺点

经常会有同学问我,Dubbo和SpringCloud的选择。甚至也经常会有面试官就这个问题刨根问底。 说实话,其实我不太喜欢回答这个问题,本质上来讲,Dubbo的SpringCloud可以算是完全不同赛道的两种东西,就好像问大家西瓜和土豆我…...

★ C++进阶篇 ★ 多态

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C进阶篇第二章----多态 ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 …...

pg入门3—详解tablespaces2

pg默认的tablespace的location为空&#xff0c;那么如果表设置了默认的tablespace&#xff0c;数据实际上是存哪个目录的呢? 在 PostgreSQL 中&#xff0c;如果你创建了一个表并且没有显式指定表空间&#xff08;tablespace&#xff09;&#xff0c;或者表空间的 location 为…...

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式&#xff0c;速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式&#xff0c;速度快很多。 option Options() o…...

git分支管理的一些常用规范

一、分支命名规范 1.通常项目经理或者需求方会给需求开发做计划&#xff0c;约定一些编码&#xff0c;例如FN-01。此时这个需求指派给你&#xff0c;这个时候你可以在现有代码仓库的maser分支或者其他约定的开发分支checkout到本地&#xff0c;命名这个需求的开发分支为feat/F…...

GPT-4论文阅读

GPT-4 Technical Report论文阅读 文章目录 GPT-4 Technical Report论文阅读 Abstract训练的稳定性Training processPredictable scaling训练的稳定性多么难能可贵 Capabilities考试成绩传统的benchmark语言方面的能力Visual inputsSteerability LimitationsRisks & mitigat…...

this 指向

this 指向谁? 多数情况下,this 指向调用它所在方法的那个对象。 说得更通俗点,谁调的函数,this 就归谁。当调用方法没有明确对象时,this 就指向全局对象。在浏览器中,指向 window;在 Node 中,指向 Global。(严格模式下,指向 undefined) this 的指向是在调用时决定的…...

【贪心算法】贪心算法一

贪心算法一 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.柠檬水找零 题目…...

windnd.hook_dropfiles中的create_buffer值太小无法拖放长文件名

今天在使用我之前的Python识别拖放的PDF文件再转成文本文件-CSDN博客发现&#xff0c;文件藏在路径太深入的地方&#xff0c;不能打开&#xff0c;因为拖放文件只能读取260个字节的文件名&#xff08;b’路径&#xff09;&#xff0c;再查看windnd.hook_dropfiles函数&#xff…...

Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署

Gitlab runner的使用示例&#xff08;二&#xff09;&#xff1a;Maven Docker 自动化构建与部署 在本篇文章中&#xff0c;我们将详细解析一个典型的 GitLab CI/CD 配置文件&#xff08;gitlab-ci.yml&#xff09;&#xff0c;该文件主要用于通过 Maven 构建 Java 应用&…...

QNX Hypervisor(十)Linux Guest IPC 二

上文还遗留了一个问题,就是在测试ipc的时候挂死了。相关原理我写在了另外一篇文章。 内存管理 所以导致挂死的问题就是因为没有进行地址映射,mmu无法转换。从kernel代码看,只有ram区域才会进行映射。我们的qvmconf文件也确实没有配置0xb8000000,只配置了pass。 pass loc …...

怎样把PPT上顽固的图标删了

例如&#xff1a; 解决&#xff1a; 首先打开下载好的PPT模板&#xff0c;然后在视图选项卡里面找到幻灯片母版。 进入幻灯片母版后&#xff0c;找到第一页母版页就会看到LOGO了&#xff0c;这时使用鼠标就可以选中删除啦。...

【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑

文章目录 Slim Fly: A Cost Effective Low-Diameter Network Topology文章总结1. 摘要2. indroduction3. 主要工作 主要思想references Slim Fly: A Cost Effective Low-Diameter Network Topology Slim Fly&#xff1a;一种经济高效的小直径网络拓扑 SC’14 Maciej Besta 苏…...

Prometheus使用Pushgateway推送数据

Pushgateway简介 Prometheus 的 Pushgateway 是一个简单的 HTTP 服务器&#xff0c;它允许数据被推送到该服务器&#xff0c;而不是通过拉取的方式获取。它的存在是为了让临时和批处理作业能够将其指标暴露给 Prometheus。由于这类作业可能存在的时长不足以被主动抓取&#xf…...

【Oracle】调优与oracle最大连接数配置

博主介绍&#xff1a; 大家好&#xff0c;我是想成为Super的Yuperman&#xff0c;互联网宇宙厂经验&#xff0c;17年医疗健康行业的码拉松奔跑者&#xff0c;曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 技术范围&#xff1a; 目前专注java体系&#xff0c;DDD&…...

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…...

​图像超分辨率(ISR)​

图像超分辨率&#xff08;Image Super-Resolution, ISR&#xff09;是一种图像处理技术&#xff0c;旨在通过软件算法从低分辨率的图像中重建出高分辨率的图像。这种技术对于改善图像质量、增加细节清晰度等方面非常重要&#xff0c;特别是在图像放大、卫星成像、医学成像和视频…...

园区网基础组网保姆级(mstp,vrrp,irf,eth-trunk,route-policy,ospf,bgp,rbm,nat,mlag等等)

本文实验使用模拟器:H3C HCL 5.10.2版本 一、园区核心/接入架构1.1.三层架构1.2.二层架构二、园区核心 To 接入实践2.1.MSTP+VRRP派系2.1.1.MSTP+VRRP配置2.1.2.MSTP+VRRP验证2.2.IRF+Eth-Trunk派系2.2.1.IRF+Eth-Trunk配置2.3.两种派系的对比2.4.VXLAN结构三、园区核心/出口架…...

大数据技术原理与应用

第一章、大数据概述 1、大数据时代的特征&#xff0c;并结合生活实例谈谈带来的影响。 &#xff08;一&#xff09;特征 1、Volume 规模性&#xff1a;数据量大。 2、Velocity高速性&#xff1a;处理速度快。数据的生成和响应快 摩尔定律&#xff1a;每两年&#xff0c;数…...

《黑神话悟空》开发框架与战斗系统解析

本文主要围绕《黑神话悟空》的开发框架与战斗系统解析展开 主要内容 《黑神话悟空》采用的技术栈 《黑神话悟空》战斗系统的实现方式 四种攻击模式 连招系统的创建 如何实现高扩展性的战斗系统 包括角色属性系统、技能配置文件和逻辑节点的抽象等关键技术点 版权声明 本…...

网络资源模板--Android Studio 通讯录App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 通讯录 二、项目测试环境 三、项目详情 首页 MainActivity 类是一个 Android 地址簿应用的核心部分&#xff0c;负责管理联系人列表的显示、搜索和添…...

Spring 出现 No qualifying bean of type ‘com.xxx‘ available 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法4. 彩蛋4.1 bug彩蛋4.2 完整Demo4.3 补充Springboot1. 问题所示 出现如下问题: 19:58:23.476 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean o…...

C# 批量更改文件后缀名称

解决问题思路 解决固定文件夹下更改文件后缀名&#xff0c;采用轮询的方式&#xff0c; 流程如下&#xff1a; 获取当前文件名&#xff08;带后缀的文件名&#xff09;截取文件名称&#xff0c;去掉后缀另存为带更改后的后缀文件 注意&#xff1a;采用第三方插件&#xff0…...

KIC算法介绍及pyrosetta示例代码

Kinetic Loop Closure (KIC) 是 Rosetta 中一种重要的环区(loop region)建模算法,主要用于解决蛋白质中的柔性区域(特别是环区)的重构问题。环区是蛋白质中非常灵活的部分,通常结构不确定。KIC 算法采用基于运动学的解决方案,通过设置特定的几何约束,能够在给定的两端锚…...

【论文串烧】多媒体推荐中的模态平衡学习 | 音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响

文章目录 一、多媒体推荐中的模态平衡学习1.1 研究背景1.2 解决问题1.3 实施方案1.4 文章摘要1.5 文章重点1.6 文章图示图 1&#xff1a;不同模型变体在 AmazonClothing 数据集上的初步研究图 2&#xff1a;CKD模型架构的说明图 3&#xff1a;在 Amazon-Clothing 数据集上训练过…...

【C语言二级考试】循环结构设计

C语言二级考试——循环结构程序设计 五.循环结构程序设计 1.for循环结构 2.while和do-while循环结构 3.continue语句和break语句 4.循环的嵌套 知识点参考【C语言】循环-CSDN博客 文章目录 1.for循环2.while和do-while循环结构3.continue语句和break语句4.循环的嵌套 1.for循环…...

诗文发布模板(python代码打造键盘录入诗文自动排版,MarkDown源码文本)

python最好用的f-string&#xff0c;少量代码打造键盘录入诗文自动排版。 (笔记模板由python脚本于2024年09月19日 19:11:50创建&#xff0c;本篇笔记适合喜欢写诗的pythoner的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&am…...

GO主流开源框架

GO主流开源框架 Go 语言有着丰富的开源框架生态&#xff0c;涵盖了多种应用场景&#xff0c;如 Web 开发、数据库操作、微服务、日志处理等。以下是一些常见的 Go 框架及其典型作用场景&#xff1a; 1. Web 框架 Gin: 作用&#xff1a;一个高性能的轻量级 Web 框架&#xff…...

LeetCode:2398. 预算内的最多机器人数目 双指针+单调队列,时间复杂度O(n)

2398. 预算内的最多机器人数目 today 2398. 预算内的最多机器人数目 题目描述 你有 n 个机器人&#xff0c;给你两个下标从0开始的整数数组 chargeTimes 和 runningCosts &#xff0c;两者长度都为 n 。第 i 个机器人充电时间为 chargeTimes[i] 单位时间&#xff0c;花费 ru…...