当前位置: 首页 > 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;数…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...