写点什么

一文看懂 AutoEncoder 模型演进图谱

  • 2019-08-22
  • 本文字数:2788 字

    阅读完需:约 9 分钟

一文看懂AutoEncoder模型演进图谱

本文来自“深度推荐系统”专栏,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文则结合作者在工作中的经验总结,着重于串讲 AutoEncoder 模型框架的演进图谱。


AutoEncoder 作为 NN 里的一类模型,采用无监督学习的方式对高维数据进行高效的特征提取和特征表示,并且在学术界和工业界都大放异彩。本文主要介绍 AutoEncoder 系列模型框架的演进,旨在梳理 AutoEncoder 的基本原理。首先上图,然后再对他们进行逐一介绍。



AutoEncoder 的思想最早被提出来要追溯到 1988 年[1],当时的模型由于数据过于稀疏高维计算复杂度高很难优化,没能得到广泛的引用。直到 2006 年,Hinton 等人[2]采用梯度下降来逐层优化 RBM 从而实现对原始样本/特征的抽象表示,并在特征降维上取得显著效果。这才使得采用神经网络来构建 AutoEncoder 的方法得到广泛关注。

AutoEncoder

在介绍经典的基于神经网络的 AutoEncoder 模型之前,先来整体看一下 AutoEncoder 框架的基本思想,如下图所示。AutoEncoder 框架包含两大模块:编码过程和解码过程。通过 encoder(g)将输入样本 x 映射到特征空间 z,即编码过程;然后再通过 decoder(f)将抽象特征 z 映射回原始空间得到重构样本 x’,即解码过程。优化目标则是通过最小化重构误差来同时优化 encoder 和 decoder,从而学习得到针对样本输入 x 的抽象特征表示 z。



这里我们可以看到,AutoEncoder 在优化过程中无需使用样本的 label,本质上是把样本的输入同时作为神经网络的输入和输出,通过最小化重构误差希望学习到样本的抽象特征表示 z。这种无监督的优化方式大大提升了模型的通用性。


对于基于神经网络的 AutoEncoder 模型来说,则是 encoder 部分通过逐层降低神经元个数来对数据进行压缩;decoder 部分基于数据的抽象表示逐层提升神经元数量,最终实现对输入样本的重构。


这里指的注意的是,由于 AutoEncoder 通过神经网络来学习每个样本的唯一抽象表示,这会带来一个问题:当神经网络的参数复杂到一定程度时 AutoEncoder 很容易存在过拟合的风险。

Denoising AutoEncoder

为了缓解经典 AutoEncoder 容易过拟合的问题,一个办法是在输入中加入随机噪声;Vincent 等人[3]提出了 Denoising AutoEncoder,在传统 AutoEncoder 输入层加入随机噪声来增强模型的鲁棒性。另一个办法就是结合正则化思想,Rifai 等人[4]提出了 Contractive AutoEncoder,通过在 AutoEncoder 目标函数中加上 encoder 的 Jacobian 矩阵范式来约束使得 encoder 能够学到具有抗干扰的抽象特征。


下图是 Denoising AutoEncoder 的模型框架。目前添加噪声的方式大多分为两种:添加服从特定分布的随机噪声;随机将输入 x 中特定比例置为 0。有没有觉得第二种方法跟现在广泛石红的 Dropout 很相似,但是 Dropout 方法是 Hinton 等人在 2012 年才提出来的,而第二种加噪声的方法在 08 年就已经被应用了。这其中的关系,就留给你思考一下。



Denoising AutoEncoder 模型框架

Sparse AutoEncoder

为了在学习输入样本表示的时候可以得到稀疏的高维抽象特征表示,Ng 等人[5]在原来的损失函数中加入了一个控制稀疏化的正则项。稀疏约束能迫使 encoder 的各层只有部分神经元被激活,从而将样本映射成低维稀疏特征向量。


具体来说,如果单个神经元被激活的概率很小,则可认为该网络具有稀疏性。神经元是否被激活可以看做服从概率的伯努利分布。因此可以使用 KL 散度来衡量神经元被激活的概率ρ^与期望概率ρ之间的 loss:



通过将 D_KL 加入到 AutoEncoder 的目标函数中,即可实现对神经网络稀疏性的约束。另外,还有一种方法就是对神经网络各层的输出加入 L1 约束。

CNN/LSTM AutoEncoder

其实无论是 Convolutional Autoencoder[6]、 Recursive Autoencoder 还是 LSTM Autoencoder[7]等等,思路都是将传统 NN 网络的结构融入到 AutoEncoder 中。


以 LSTM AutoEncoder 为例,目标是针对输入的样本序列学习得到抽象特征 z。因此 encoder 部分是输入一个样本序列输出抽象特征 z,采用如下的 Many-to-one LSTM;而 decoder 部分则是根据抽象特征 z,重构出序列,采用如下的 One-to-many LSTM。



将传统 NN 网络的结构引入 AutoEncoder 其实更多是一个大概的思想,具体实现的时候,编码器和解码器都是不固定的,可选的有 CNN/RNN/双向 RNN/LSTM/GRU 等等,而且可以根据需要自由组合。

Variational AutoEncoder

Vairational AutoEncoder(VAE)是 Kingma 等人与 2014 年提出。VAE 比较大的不同点在于:VAE 不再将输入 x 映射到一个固定的抽象特征 z 上,而是假设样本 x 的抽象特征 z 服从(μ,σ^2)的正态分布,然后再通过分布生成抽象特征 z。最后基于 z 通过 decoder 得到输出。模型框架如下图所示:



由于抽象特征 z 是从正态分布采样生成而来,因此 VAE 的 encoder 部分是一个生成模型,然后再结合 decoder 来实现重构保证信息没有丢失。VAE 是一个里程碑式的研究成果,倒不是因为他是一个效果多么好的生成模型,主要是提供了一个结合概率图的思路来增强模型的鲁棒性。后续有很多基于 VAE 的扩展,包括 infoVAE、betaVAE 和 factorVAE 等。

Adversarial AutoEncoder

既然说到生成模型引入 AutoEncoder,那必定也少不了将 GAN 的思路引入 AutoEncoder[9],也取得了不错的效果。


对抗自编码器的网络结构主要分成两大部分:自编码部分(上半部分)、GAN 判别网络(下半部分)。整个框架也就是 GAN 和 AutoEncoder 框架二者的结合。训练过程分成两个阶段:首先是样本重构阶段,通过梯度下降更新自编码器 encoder 部分、以及 decoder 的参数、使得重构损失函数最小化;然后是正则化约束阶段,交替更新判别网络参数和生成网络(encoder 部分)参数以此提高 encoder 部分混淆判别网络的能力。


一旦训练完毕,自编码器的 encoder 部分便学习到了从样本数据 x 到抽象特征 z 的映射关系。


参考文献

[1] Auto-association by multilayer perceptrons and singular value decomposition, Bourlard etc, 1988


[2] Reducing the dimensionality of data with neural networks, Geoffrey Hinton etc, 2006


[3] Extracting and composing robust features with denoising autoencoders, Pascal Vincent etc, 2008


[4] Contractive auto-encoders: Explicit invariance during feature extraction, Rifai S etc, 2011


[5] Sparse autoencoder, Andrew Ng, etc, 2011


[6] Stacked Convolutional Auto-Encoders for Hierarchical Feature, Jonathan Masci, Jurgen Schmidhuber etc, 2011


[7] Unsupervised Learning of Video Representations using LSTMs, Nitish Srivastava etc, 2015


[8] Auto-encoding variational bayes, Diederik Kingma etc, ICLR 2014


[9] Adversarial Autoencoders, Alireza Makhzani, Ian Goodfellow etc, 2015


本文授权转载自知乎专栏“深度推荐系统”。原文链接:https://zhuanlan.zhihu.com/p/68903857


2019-08-22 13:0013517

评论

发布
暂无评论
发现更多内容

ArkUI-X 5.0.4 Release:跨平台开发的全新体验

坚果

鸿蒙 HarmonyOS 坚果派

深入研究:1688商品跨境属性API接口详解

tbapi

1688API 1688跨境代采 1688商品属性接口 1688跨境属性接口

域名有哪些状态?不同的域名状态分别代表什么意思?

防火墙后吃泡面

[方法讨论]手机号码批量导入手机通讯录,导入苹果iphone通讯录华为手机小米手机等安卓手机

一码平川

一键部署 Dify + MCP Server,高效开发 AI 智能体应用

阿里巴巴云原生

出版社题库管理系统的技术架构

北京木奇移动技术有限公司

软件外包公司 出版社 题库管理系统

2025 全球分布式云大会演讲实录 | 沈建发:智启边缘,畅想未来:边缘计算新场景落地与 Al 趋势新畅想

火山引擎边缘云

人工智能 边缘计算 AI 大底座 边缘智能

乐言科技:云原生加速电商行业赋能,云消息队列助力降本 37%

阿里巴巴云原生

阿里云 云原生

重构智能设备管理范式:火山引擎端智能解决方案上新,多重 AI 服务即刻享用!

火山引擎开发者社区

抖音电商如何用扣子 Coze 打造 AI 客服?

火山引擎开发者社区

25年IT信息安全靠谱保障办法看这里!

行云管家

网络安全 信息安全 IT安全

出版社题库管理系统的测试

北京木奇移动技术有限公司

软件外包公司 出版社 题库系统开发

AI阅读眼动就翻页,领权益解锁HUAWEI Pura X内容新体验

最新动态

K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定

北京好雨科技有限公司

k8s rainbond 企业号 4 月 PK 榜 gpu 算力 DeepSeek R1 模型

在BeeWorks中,网盘和即时通讯如何互相集成?

BeeWorks

即时通讯 IM 企业级应用

热门活动速递 | AI 原生应用开发实战营·深圳站

阿里巴巴云原生

阿里云 云原生

内部聊天软件,BeeWorks-安全的企业内部通讯软件

BeeWorks

即时通讯 IM 私有化部署 局域网视频软件

巴塞罗那对阵塞尔塔:一场事关竞逐西甲联赛冠军与冲击欧战资格的较量

新消费日报

CommunityOverCode Asia 2025议题征集倒计时,DataOps 分论坛等你发声

白鲸开源

AI与智能客服:如何让AI为企业提供更高效、更人性化的客户服务?

天津汇柏科技有限公司

人工智能 智能客服 AI 人工智能

广告营销行业使用堡垒机的场景简单聊聊

行云管家

网络安全 信息安全

人工智能与网络安全:AI如何预防、检测和应对网络攻击?

天津汇柏科技有限公司

人工智能 网络安全 AI 人工智能

行业热点丨为什么AI驱动工程对汽车设计和轻量化至关重要?

Altair RapidMiner

人工智能 AI 汽车 数字孪生 CAE

本周六,龙蜥社区邀您共赴第三届 eBPF 开发者大会

OpenAnolis小助手

操作系统 龙蜥社区 eBPF开发者大会

龙蜥邀您参加 2025 全国大学生计算机系统能力大赛操作系统设计赛

OpenAnolis小助手

操作系统 开源大赛

出版社题库管理系统的技术难点

北京木奇移动技术有限公司

软件外包公司 出版社 题库系统开发

欢迎 Apache SeaTunnel 新晋 Committer 王超

白鲸开源

超实用!用FunctionCall实现快递AI助手

王磊

云智赋能,绘就农业强国新图景!

天翼云开发者社区

智慧农业 数字孪生 农业数字化

基于TiDB的应用多活架构

陈一之

TiDB 多活容灾 应用多活

一文看懂AutoEncoder模型演进图谱_AI&大模型_深度传送门_InfoQ精选文章