自编码器(auto-encoder)介绍

一、自编码器简介

自编码器可以理解为一个试图还原原始输入的系统,如下图:


上图中,虚线蓝色框内的部分就是一个自编码器模型,它由编码器(Encoder)和解码器(Decoder)组成。本质上是对输入信号做某种变换。编码器将输入信号x变换成编码信号y,而解码器将编码信号y转换成输出信号


自编码器的目的是让输出仅可能的复现输入。有人会问,如果f和g是恒等映射,那输入不就永远等于输出了吗?的确如此,但这样有卵用!这里强调一点:对于自编码器,我们不关心输出是啥,而是中间层的编码,或者说对输入数据的映射。就是说将输入数据转换到另一种形式,这就是特征提取呀!

二、自编码器与神经网络


神经网络把输入层数据x∈Rn转换到中间层h∈Rp,再转换到输出层y∈Rm。两层之间的变换都是线性变换 + 非线性激活。公式为:


神经网络主要用于分类。定义一个目标函数来衡量当前的输出和真实结果的差异(损失函数),利用梯度下降逐步调整参数,使得整个网络尽可能的拟合训练数据。如果有正则约束的话,还能要求模型尽量简单(防止过拟合)。

对于自编码器,由于输入和输出相等。我们利用数据训练网络后,这个网络就学习出了x-->h-->y的能力。此处的h是至关重要的,因为它是在尽量不损失信息量的情况下,对原始数据的另一种表达。

为了尽量学到有意义的表达,我们会给隐层加入一定的约束。从数据维度来看,常见以下两种情况:

  1. n > p,即隐层维度小于输入数据维度。也就是说从x→h的变换是一种降维的操作,网络试图以更小的维度去描述原始数据而尽量不损失数据信息。实际上,当每两层之间的变换均为线性,且监督训练的误差是二次型误差时,该网络等价于PCA!
  2. n < p,即隐层维度大于输入数据维度。这又有什么用呢?其实不好说,但比如我们同时约束h的表达尽量稀疏(有大量维度为0,未被激活),此时的编码器便是大名鼎鼎的“稀疏自编码器”。

三、堆叠自编码器(Stacked Auto Encoder,SAE)


四、自编码器的变种













引用: Auto-encoder是一种深度学习模型,用于将输入数据编码为低维表示,并尽可能地重构原始数据作为输出。在降维方面,PCA会将不同类别的数据混合在一起,而auto-encoder则可以将它们分开。除了降维之外,auto-encoder还有其他用途,比如图片搜索。 引用: 训练一个auto-encoder的过程通常会先固定一些权重参数,然后逐层训练多个自编码器,每个自编码器的输入和输出维度逐渐逼近目标维度。最后,可以使用反向传播来微调网络参数。现在也可以不进行预训练,直接训练auto-encoder。此外,auto-encoder还可以与卷积神经网络(CNN)一起使用。 引用: 特征区分技术是指在auto-encoder中,通过编码器获取的Embedding向量中,可以区分出不同输入数据的特征信息。比如,对于语音输入,可以分别提取出语音内容和说话者的特征。这就是Feature Disentangle的目标。 根据李宏毅老师的讲解,auto-encoder是一种用于降维、重构和特征提取的深度学习模型。它可以将输入数据编码为低维表示,并尽可能地重构原始数据作为输出。除了降维之外,auto-encoder还可以用于图片搜索等任务。训练auto-encoder时,可以使用预训练和微调的方法,也可以直接进行训练。此外,auto-encoder还可以与卷积神经网络(CNN)结合使用。特征区分技术可以用于auto-encoder中,用于提取不同输入数据的特征信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值