深度学习自编码器 - 去噪自编码器篇

序言

在深度学习的广阔天地中,自编码器作为一种强大的无监督学习工具,通过重构输入数据的方式,不仅实现了数据的有效压缩,还探索了数据的内在表示。而去噪自编码器( Denoising Autoencoder, DAE \text{Denoising Autoencoder, DAE} Denoising Autoencoder, DAE),作为自编码器的一个变种,更是以其独特的去噪能力,在众多应用中脱颖而出。去噪自编码器在训练过程中,会故意向输入数据中添加噪声,然后迫使模型从这种被“污染”的数据中恢复出原始的纯净数据。这一过程不仅锻炼了模型的鲁棒性,还促进了模型学习到更加稳健和本质的数据特征,从而提高了其在噪声环境下的泛化能力。

去噪自编码器(Denoising Autoencoders)

  • 去噪自编码器 ( denoising autoencoder, DAE \text{denoising autoencoder, DAE} denoising autoencoder, DAE) 是一类接受损坏数据作为输入,并训练来预测原始未被损坏数据作为输出的自编码器。
  • DAE \text{DAE} DAE的训练过程如图例1中所示。
    • 我们引入一个损坏过程 C ( x ~ ∣ x ) C(\tilde{\mathbf{x}}\mid\mathbf{x}) C(x~x),这个条件分布代表给定数据样本 x \mathbf{x} x 产生损坏样本 x ~ \tilde{\mathbf{x}} x~ 的概率。
    • 自编码器则根据以下过程,从训练数据对 ( x , x ~ ) (\boldsymbol{x},\tilde{\boldsymbol{x}}) (x,x~) 中学习重构分布 ( reconstruction distribution \text{reconstruction distribution} reconstruction distribution) p reconstruct ( x ∣ x ~ ) p_{\text{reconstruct}}(\mathbf{x}\mid\tilde{\mathbf{x}}) preconstruct(xx~)
      • 从训练数据中采一个训练样本 x \boldsymbol{x} x
      • C ( x ~ ∣ x = x ) C(\tilde{\mathbf{x}}\mid \mathbf{x}=\boldsymbol{x}) C(x~x=x)采一个损坏样本 x ~ \tilde{x} x~
      • ( x , x ~ ) (\boldsymbol{x},\tilde{\boldsymbol{x}}) (x,x~)作为训练样本来估计自编码器的重构分布 p reconstruct ( x ∣ x ~ ) = p decoder ( x ∣ h ) p_{\text{reconstruct}}(\boldsymbol{x}\mid\tilde{\boldsymbol{x}})=p_{\text{decoder}}(\boldsymbol{x}\mid\boldsymbol{h}) preconstruct(xx~)=pdecoder(xh),其中 h \boldsymbol{h} h是编码器 f ( x ~ ) f(\tilde{\boldsymbol{x}}) f(x~)的输出, p decoder p_{\text{decoder}} pdecoder根据解码函数 g ( h ) g(\boldsymbol{h}) g(h)定义。
  • 通常我们可以简单地对负对数似然 − log ⁡ p decoder ( x ∣ h ) -\log p_{\text{decoder}}(\boldsymbol{x}\mid\boldsymbol{h}) logpdecoder(xh)进行基于梯度如minibatch梯度下降)的近似最小化。只要编码器是确定性的,去噪自编码器就是一个前馈网络,并且可以使用与其他前馈网络完全相同的方式进行训练。
  • 因此我们可以认为DAE是在以下期望下进行随机梯度下降:
    − E x ∼ p ~ data ( x ) E x ~ ∼ C ( x ~ ∣ x ) log ⁡ p decoder ( x ∣ h = f ( x ~ ) ) -\mathbb{E}_{\mathbf{x}\sim\tilde{p}_{\text{data}}(\mathbf{x})}\mathbb{E}_{\tilde{x}\sim C(\tilde{\mathbf{x}}\mid\ \boldsymbol{x})} \log p_{\text{decoder}}(\boldsymbol{x}\mid\boldsymbol{h}=f(\tilde{\boldsymbol{x}})) Exp~data(x)Ex~C(x~ x)logpdecoder(xh=f(x~)) — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1

得分估计

  • 得分匹配( Hyv a ¨ rinen, 2005a \text{Hyvärinen, 2005a} Hyva¨rinen, 2005a) 是最大似然的代替。它提供了概率分布的一致估计,鼓励模型在各个数据点 x \boldsymbol{x} x 上获得与数据分布相同的得分 ( score \text{score} score)。在这种情况下,得分是一个特定的梯度场:
    ∇ x log ⁡ p ( x ) \nabla_x \log p(\boldsymbol{x}) xlogp(x) — 公式2 \quad\textbf{---\footnotesize{公式2}} 公式2

  • 我们将在后续篇章:得分匹配和比率匹配中更详细地讨论得分匹配。对于现在讨论的自编码器,理解学习 log ⁡ p data \log p_{\text{data}} logpdata 的梯度场是学习 p data p_{\text{data}} pdata 结构的一种方式就足够了。

  • DAE \text{DAE} DAE的训练准则(条件高斯 p ( x ∣ h ) p(\boldsymbol{x}\mid\boldsymbol{h}) p(xh))能让自编码器学到能估计数据分布得分的向量场 ( g ( f ( x ) ) − x ) (g(f(\boldsymbol{x}))-\boldsymbol{x}) (g(f(x))x) ,这是 DAE \text{DAE} DAE的一个重要特性。具体如图例2所示。

  • 去噪地训练一类采用高斯噪声和均方误差作为重构误差的特定去噪自编码器( sigmoid \text{sigmoid} sigmoid隐藏单元,线性重构单元),与训练一类特定的被称为 RBM \text{RBM} RBM的无向概率模型是等价的 ( Vincent, 2011 \text{Vincent, 2011} Vincent, 2011)。

    • 这类模型将在后续给出更详细的介绍;对于现在的讨论,我们只需知道这个模型能显式的给出 p model ( x ; θ ) p_{\text{model}}(\boldsymbol{x};\boldsymbol{\theta}) pmodel(x;θ)
    • RBM \text{RBM} RBM使用去噪得分匹配 ( denoising score matching \text{denoising score matching} denoising score matching) ( Kingma and LeCun, 2010a \text{Kingma and LeCun, 2010a} Kingma and LeCun, 2010a) 训练时,它的学习算法与训练对应的去噪自编码器是等价的。
    • 在一个确定的噪声水平下, 正则化的得分匹配不是一致估计量;相反它会恢复分布的一个模糊版本。
    • 然而,当噪声水平趋向于 0 0 0且训练样本数趋向与无穷时,一致性就会恢复。我们将会在后续更新篇章:去噪得分匹配更详细地讨论去噪得分匹配。
  • 自编码器和 RBM \text{RBM} RBM还存在其他联系。

    • 得分匹配应用于 RBM \text{RBM} RBM后,其代价函数将等价于重构误差结合类似 CAE \text{CAE} CAE惩罚的正则项 ( Swersky et al., 2011 \text{Swersky et al., 2011} Swersky et al., 2011)。
    • Bengio and Delalleau(2009) \text{Bengio and Delalleau(2009)} Bengio and Delalleau(2009) 指出自编码器的梯度是对 RBM \text{RBM} RBM对比散度训练的近似。
  • 对于连续的 x \boldsymbol{x} x,高斯损坏和重构分布的去噪准则得到的得分估计适用于一般编码器和解码器的参数化 ( Alain and Bengio, 2013 \text{Alain and Bengio, 2013} Alain and Bengio, 2013)。

    • 这意味着一个使用平方误差准则:
      ∥ g ( f ( x ~ ) ) − x ∥ 2 \Vert g(f(\tilde{\boldsymbol{x}}))-\boldsymbol{x}\Vert^2 g(f(x~))x2 — 公式3 \quad\textbf{---\footnotesize{公式3}} 公式3
      和噪声方差 σ 2 \sigma^2 σ2的损坏:
      C ( x ~ = x ~ ∣ x ) = N ( x ~ ; μ = x , ∑ = σ 2 I ) C(\tilde{x}=\tilde{\boldsymbol{x}}\mid\boldsymbol{x})=N(\tilde{\boldsymbol{x}};\mu=\boldsymbol{x},\sum=\sigma^2 I) C(x~=x~x)=N(x~;μ=x,=σ2I) — 公式4 \quad\textbf{---\footnotesize{公式4}} 公式4
      的通用编码器-解码器架构可以用来训练估计得分。
    • 图例3展示其中的工作原理。
  • 一般情况下,不能保证重构函数 g ( f ( x ) ) g(f(\boldsymbol{x})) g(f(x)) 减去输入 x \boldsymbol{x} x 后对应于某个函数的梯度,更不用说得分 。

    • 这是早期工作 ( Vincent, 2011 \text{Vincent, 2011} Vincent, 2011) 专用于特定参数化的原因(其中 g ( f ( x ) ) − x g(f(\boldsymbol{x}))-\boldsymbol{x} g(f(x))x 能通过另一个函数的导数获得)。
    • Kamyshanska and Memisevic (2015) \text{Kamyshanska and Memisevic (2015)} Kamyshanska and Memisevic (2015)通过标识一类特殊的浅层自编码器家族,使 g ( f ( x ) ) − x g(f(\boldsymbol{x}))-\boldsymbol{x} g(f(x))x 对应于这个家族所有成员的一个得分,以此推广 Vincent, 2011 \text{Vincent, 2011} Vincent, 2011的结果。
  • 目前为止我们所讨论的仅限于去噪自编码器如何学习表示一个概率分布。

    • 更一般的,我们可能希望使用自编码器作为生成模型,并从该分布中进行采样。
    • 这将在后续篇章:从AE采样中讨论。

历史观点

  • 采用 MLP \text{MLP} MLP去噪的想法可以追溯到 LeCun (1987) \text{LeCun (1987)} LeCun (1987) Gallinari et al. (1987) \text{Gallinari et al. (1987)} Gallinari et al. (1987) 的工作。
    • Behnke (2001) \text{Behnke (2001)} Behnke (2001) 也曾使用循环网络对图像去噪。
    • 在某种意义上,去噪自编码器仅仅是被训练去噪的 MLP \text{MLP} MLP
    • 然而, “去噪自编码器’’ 的命名指的不仅仅是学习去噪,而且可以学到一个好的内部表示(作为学习去噪的副效用)。
    • 这个想法提出较晚 ( Vincent et al., 2008b, 2010 \text{Vincent et al., 2008b, 2010} Vincent et al., 2008b, 2010)。学习到的表示可以被用来预训练更深的无监督网络或监督网络。
    • 与稀疏自编码器、稀疏编码、收缩自编码器等正则化的自编码器类似, DAE \text{DAE} DAE的动机是允许使用容量非常大的编码器,同时防止在编码器和解码器学习一个毫无用处的恒等函数。
  • 在引入现代 DAE \text{DAE} DAE之前, Inayoshi and Kurita (2005) \text{Inayoshi and Kurita (2005)} Inayoshi and Kurita (2005) 探讨了与一些相同的方法和相同的目标。
    • 他们在监督目标的情况下最小化重构误差,并在监督 MLP \text{MLP} MLP的隐藏层注入噪声,通过引入重构误差和注入噪声提升泛化能力。
    • 然而,他们的方法基于线性编码器,因此无法学习到现代 DAE \text{DAE} DAE能学习的强大函数族。

  • 图例1:去噪自编码器代价函数的计算图。
    • 去噪自编码器代价函数的计算图。
      在这里插入图片描述

    • 说明:

      • 去噪自编码器被训练为从损坏的版本 x ~ \tilde{\boldsymbol{x}} x~ 重构干净数据点 x \boldsymbol{x} x
      • 这可以通过最小化损失 L = − log ⁡ p decoder ( x ∣ h = f ( x ~ ) ) L=-\log p_{\text{decoder}}(\boldsymbol{x}\mid\boldsymbol{h}=f(\tilde{\boldsymbol{x}})) L=logpdecoder(xh=f(x~)) 实现,其中 x ~ \tilde{\boldsymbol{x}} x~ 是样本 x \boldsymbol{x} x 经过损坏过程 C ( x ~ ∣ x ) C(\tilde{\boldsymbol{x}}\mid\boldsymbol{x}) C(x~x) 后得到的损坏版本。
      • 通常,分布 p decoder p_{\text{decoder}} pdecoder 是因子的分布(平均参数由前馈网络 g g g 给出)。

  • 图例2:去噪自编码器被训练为将损坏的数据点 x ~ \tilde{\boldsymbol{x}} x~ 映射回原始数据点 x \boldsymbol{x} x
    • 去噪自编码器被训练为将损坏的数据点 x ~ \tilde{\boldsymbol{x}} x~ 映射回原始数据点 x \boldsymbol{x} x
      在这里插入图片描述

    • 说明:

      • 我们将训练样本 x ~ \tilde{\boldsymbol{x}} x~ 表示为位于低维流形(粗黑线)附近的红叉。
      • 我们用灰色圆圈表示等概率的损坏过程 C ( x ~ ∣ x ) C(\tilde{\boldsymbol{x}}\mid\boldsymbol{x}) C(x~x)
      • 灰色箭头演示了如何将一个训练样本转换为经过此损坏过程的样本。
      • 当训练去噪自编码器最小化平方误差 ∥ g ( f ( x ~ ) ) − x ∥ 2 \Vert g(f(\tilde{\boldsymbol{x}}))-\boldsymbol{x}\Vert^2 g(f(x~))x2 的平均值时,重构 g ( f ( x ~ ) ) g(f(\tilde{\boldsymbol{x}})) g(f(x~)) 估计 E x , x ∼ p data ~ ( x ) C ( x ~ ∣ x ) [ x ∣ x ~ ] \mathbb{E}_{\mathbf{x},\tilde{\mathbf{x}\sim p_{\text{data}}}(\mathbf{x})C(\tilde{\mathbf{x}}\mid\mathbf{x})}[\mathbf{x}\mid\tilde{\boldsymbol{x}}] Ex,xpdata~(x)C(x~x)[xx~]
      • g ( f ( x ~ ) ) g(f(\tilde{\boldsymbol{x}})) g(f(x~)) 对可能产生 x ~ \tilde{\boldsymbol{x}} x~ 的原始点 x \boldsymbol{x} x 的质心进行估计,所以向量 g ( f ( x ~ ) ) − x ~ g(f(\tilde{\boldsymbol{x}}))-\tilde{\boldsymbol{x}} g(f(x~))x~ 近似指向流形上最近的点。
      • 因此自编码器可以学习由绿色箭头表示的向量场 g ( f ( x ) ) − x g(f(\boldsymbol{x}))-\boldsymbol{x} g(f(x))x
      • 该向量场估计得分 ∇ x log ⁡ p data ( x ) \nabla_x \log p_{\text{data}}(\boldsymbol{x}) xlogpdata(x) 为乘法因子,即平均均方根重构误差。

  • 图例3:由去噪自编码器围绕 1 1 1弯曲流形学习的向量场,其中数据集中在 2 2 2 维空间中。
    • 由去噪自编码器围绕 1 1 1弯曲流形学习的向量场,其中数据集中在 2 2 2 维空间中。
      在这里插入图片描述

    • 说明:

      • 每个箭头与重构向量减去自编码器的输入向量后的向量成比例,并且根据隐式估计的概率分布指向较高的概率。
      • 向量场在估计的密度函数的最大值处(在数据流形上)和密度函数的最小值处都为零。
      • 例如,螺旋臂形成局部最大值彼此连接的 1 1 1 维流形。
      • 局部最小值出现在两个臂间隙的中间附近。
      • 当重构误差的范数(由箭头的长度示出)很大时,在箭头的方向上移动可以显著增加概率,并且在低概率的地方大多也是如此。
      • 自编码器将这些低概率点映射到较高的概率重构。
      • 在概率最大的情况下, 重构变得更准确,因此箭头会收缩。
      • Alain and Bengio (2013) \text{Alain and Bengio (2013)} Alain and Bengio (2013) 许可转载此图。

总结

  • 去噪自编码器的出现,为深度学习领域的数据处理和特征学习带来了新的视角和方法。通过引入噪声并尝试去除它,模型不仅学会了如何有效压缩和重构数据,还深刻理解了数据的本质结构和关键特征。这种能力使得去噪自编码器在图像处理、语音识别、自然语言处理等多个领域展现出卓越的性能。
  • 更重要的是,去噪自编码器所体现的学习理念——即通过对抗噪声来强化模型的内在表示能力——为深度学习的发展提供了宝贵的启示,推动了整个领域向更加智能、更加鲁棒的方向迈进。

往期内容回顾

深度学习自编码器 - 引言篇
深度学习自编码器 - 欠完备自编码器篇
深度学习自编码器 - 正则自编码器篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件设计师——操作系统

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:C: 类和对象(上)🌟其他专栏🌟:C语言_秋邱 一、操作系统…

mxnet 的显存分配机制

mxnet 的显存分配机制 MXNet 的显存分配机制在性能优化和资源管理方面起着至关重要的作用。它通过高效的内存管理和调度机制来分配和释放显存,确保在训练深度学习模型时最大限度地利用 GPU 的资源。MXNet 的显存分配机制类似于其他深度学习框架(如 PyTo…

VGG16模型实现新冠肺炎图片多分类

1. 项目简介 本项目的目标是通过深度学习模型VGG16,实现对新冠肺炎图像的多分类任务,以帮助医疗人员对患者的影像进行快速、准确的诊断。新冠肺炎自爆发以来,利用医学影像如X光和CT扫描进行疾病诊断已成为重要手段之一。随着数据量的增加&am…

华为---以太网静态路由配置使用下一跳通信正常,而使用出接口无法通信

目录 1. 实验环境 2. 结果测试 3. 分析验证 3.1 以太网静态路由配置使用下一跳跨网段通信抓包分析 3.2 以太网静态路由配置使用出接口跨网段通信抓包分析 3.3 以太网静态路由配置使用出接口无法跨网段通信问题解决办法 1. 实验环境 以太网静态路由配置使用下一跳跨网段通…

网络丢包定位记录(二)

网卡驱动丢包 查看:ifconfig eth1/eth0 等接口 1.RX errors: 表示总的收包的错误数量,还包括too-long-frames错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。 …

Maven的详细解读和配置

目录 一、Maven 1.1 引言 1.2 介绍 1.3 下载安装 1.3.1 解压 1.3.2 配置环境变量 1.3.3 测试 1.4 仓库[了解] 1.5 Maven配置 1.5.1 修改仓库位置 1.5.2 设置镜像 二、IDEA - MAVEN 2.1 idea关联maven 2.2 为新项目设置 2.2 创建java项目[重点] 2.3 java项目结构…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…

特征工程与交叉验证在机器学习中的应用

数据入口:学生考试表现影响因素数据集 - Heywhale.com 本数据集提供了关于影响学生考试成绩的多种因素的全面概述。数据集包含了有关学习习惯、出勤率、家长参与、资源获取等方面的信息。 数据说明 字段名说明Hours_Studied每周学习的小时数Attendance出勤率&…

Go语言的垃圾回收(GC)机制的迭代和优化历史

Go语言的垃圾回收(GC)机制自Go语言发布以来经历了多次重要的迭代和优化,以提高性能和减少程序运行时的停顿时间。 以下是一些关键的版本和相应的GC优化: Go版本GC耗时情况主要改进点Go 1.0-1.4可能达到几百毫秒至秒级使用简单的标…

《重生之我在java世界做任务升级》

ps:此乃我学习《Head First Java》之后的一本心得体会,现其分享给各位行走在Java道路上的道友 第一章:进入java的世界 尊敬的java玩家,欢迎来到JavaWorld,我将根据您的外貌特征为您创建游戏角色。 一眨眼,我仿佛进入了…

实时流处理框架(如Flink、Spark Streaming)

实时流处理框架(如Flink、Spark Streaming) 内部原理 Flink的核心概念: Checkpoint机制:Flink通过Checkpoint机制实现容错。Checkpoint会定期将系统的状态(包括算子的状态)持久化到外部存储(如…

(笔记自用)位运算总结+LeetCode例题:颠倒二进制位+位1的个数

一.位运算总结: 在解题之前理解一下为什么需要位运算?它的本质是什么? 力扣上不少位运算相关的题,并且很多题也会用到位运算的技巧。这又是为什么? 位运算的由来 在计算机里面,任何数据最终都是用数字来表示的&…

[Linux]:信号(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 信号的阻塞 1.1 基本概念 信号被操作系统发送给进程之后,进程…

【Linux学习】基本指令其一

命令行界面 命令行终端是一个用户界面,允许用户通过输入文本命令与计算机系统进行交互。 比如Windows下, 键入winR,然后输入cmd,就可以输入文本指令与操作系统交互了。 Windows有另一个命令行界面Powershell,它的功能比cmd更强大…

电商ISV 电商SaaS 是什么

Independent Software Vendors的英文缩写,意为“独立软件开发商” 软件即服务(SaaS) 指一种基于云技术的软件交付模式 订阅收费 这些公司叫做ISV软件供应商,通过SaaS服务交付收费 为什么会有电商ISV 从商家角度划分:有独立品牌商家、大商…

【nvm管理多版本node】下载安装以及常见问题和解决方案

nvm管理多版本node nvm 下载安装下载安装 nvm 常用命令其他常用命令 常见问题 nvm 下载安装 下载 nvm下载地址 每个版本下都有Assets,根据需要下载一个。 node下载地址 根据自己需要,可以下载可执行文件或者压缩包 安装 按提示安装即可。 安装过程中&#xff…

实战Redis与MySQL双写一致性的缓存模式

​Redis和MySQL都是常用的数据存储系统,它们各自有自己的优缺点。在实际应用中,我们可能需要将它们结合起来使用,比如将Redis作为缓存,MySQL作为持久化存储。 在这种情况下,我们需要保证Redis和MySQL的数据一致性&…

Spring Boot实战:使用策略模式优化商品推荐系统

在现代电子商务平台中,个性化的商品推荐系统是提升用户体验和增加销售额的关键。本文将通过一个Spring Boot实战项目,展示如何利用Java的设计模式——策略模式,来优化商品推荐系统。同时,我们将探讨Spring Boot中的一个重要特性&a…

微信支付的委托代扣功能服务如何申请开通?

扣款服务(原委托代扣服务,以下均用委托代扣)是微信支付旗下的重要产品 1、委托代扣是指商户取得用户的扣款授权后,向微信支付发起从用户账户扣款至商户账户的扣款指令,微信支付无需验证用户的支付密码,即可…

记录一下,Vcenter清理/storage/archive空间

一、根因 vpostgres:这个目录可能包含与 vCenter Server 使用的 PostgreSQL 数据库相关的归档文件过多,导致空间被占用。 二、处理过程 1、SSH登陆到Vcenter. 2、df -Th **图中可以看到 /storage/archive 使用占比很高。 /storage/archive 目录通常用…