自动编码器Auto-Encoder

自动编码器 Auto-Encoder

自监督学习

当我们使用一群没有标注的数据去进行学习训练模型时,由于没有标签,我们需要根据一些不想要标注目标的任务,去进行学习,这就是自监督机器学习

而自编码器可以说是自监督学习中的一种方法

类似于我们做填空题时,需要进行预测填空题里要填什么答案

Auto-Encoder

自编码器分为两个部分:**编码器(Encoder)**和 解码器(Decoder)

数据通过编码器后形成一组向量,再通过解码器形成一组数据,而我们最终的任务就是使得输入的数据和输出的数据尽可能地相似

在这里插入图片描述

把数据压缩成一组向量,再把它复原地过程又叫做重建

注:这个训练地过程不需要任何的标注资料

编码器

通常数据地输入是一个很高维的向量,但是通过编码器后,会把他压缩成一个低维的向量,即隐变量 h h h,从而强迫神经网络学习最有信息量的特征,整体流程就是 Dimension reduction技术

编码的过程:
h = g θ 1 ( x ) = σ ( W 1 x + b 1 ) h = g\theta_1(x) = \sigma(W_1x + b_1) h=gθ1(x)=σ(W1x+b1)
编码器做的主要任务就是降维,把复杂的东西(内部关键部分的变化有限)使用简单的方法去表示,即找到数据中的重要成分

例如对于一个图像而言,虽然他可能有很多种样式,但是其根本部分就只有几种变化,我们只需要找出这少数的关键变化即可

在这里插入图片描述

解码器

解码器的主要作用是对编码后形成的向量进行数据还原,把隐藏层的隐变量 h h h 还原到初始维度,相当于解压缩的过程

解码过程:
x ^ = g θ 2 ( h ) = σ ( W 2 + b 2 ) \hat x = g\theta _2(h) = \sigma(W_2 + b_2) x^=gθ2(h)=σ(W2+b2)
解码器Decoder可以当作一个generator来使用

由于最终解码目标的最好状态时输出能够完美地与输入相似,即尽可能地对数据进行还原, X R ≈ X X_R\approx X XRX,因此我们对最终优化目标函数就可以写为:
min ⁡ L o s s = d i s t ( X , X R ) \min Loss = dist(X, X_R) minLoss=dist(X,XR)
其中, d i s t dist dist表示 X X X X R X_R XR二者之间地距离度量函数

Feature Disentangle功能

Feature Disentangle即特征解耦,解耦就是把一堆本来纠缠在一起的东西把它解开

对于自编码器的输入,可以是图片、语音、或者文本,这些数据都是连在一起的一个整体,而自编码器具有Feature Disentangle功能,就是把这些联系在一起的整体分开,辨别各种信息。

例如对于一个语音数据,自编码器可以做到将其具体数据信息抽象出来,例如可以告知我们前50维是语音中交流的内容,后50维中是说话者的特征

在这里插入图片描述

即告诉我们哪些维度代表哪些内容

详情参考论文:

  • https://arxiv.org/abs/1904.05742
  • https://arxiv.org/abs/1804.02812
  • https://arxiv.org/abs/1905.05879

通过这种技术,我们可以做到Voice Conversion(变声器)的功能,即把内容的维度与说话者的特征两个信息在丢入Encoder后进行组合,然后再通过Decoder,即可实现变声器

在这里插入图片描述

Auto-Encoder变形应用

De-noising Auto-encoder

De-noising是自编码器的一种变形

De-noising Auto-encoder将输入数据进行了加入噪音处理,然后在作为输入到自编码器中

而我们模型最后得到的结果是要对加入噪声之前的图形进行还原重构,因此要比较输出结果与初始图像的相似度,作为目标

在这里插入图片描述

相比较于自编码器,De-noising Auto-encoder的编码器与自编码器要一起联合起来,学习如何把输入数据中的噪声去掉

VQVAE

主要思想是将我们中间的向量 Embedding 离散化,使他只有有限的可能

具体流程为 输入数据丢入Encoder中,得到我们的Vector,然后把这个Vector与Codebook(存在 V e c t o r 1 Vector1 Vector1 V e c t o r 2 Vector2 Vector2 … \dots )中的数据进行对比,选出与我们得到的Vector最相似的一个 V e c t o r i Vector_i Vectori,放入Decoder进行解码,最终得到输出结果

在这里插入图片描述

其中,Codebook也是通过训练得到的

通过这种技术,如果应用到语音数据中,我么可以学习到每一个基本的发音部位,其中Codebook中每一个 V e c t o r i Vector_i Vectori就对应了一个发音符号

应用:Anomaly Detection 异常检测

给我们一组训练数据 x 1 , x 2 , … , x N {x^1, x^2, \dots, x^N} x1,x2,,xN,且这些数据都是正常的,我们要通过学习这些数据,进而在以后的数据检测中,可以检测出与学习的资料特征不符合的一些数据,即异常数据

在这里插入图片描述

这种问题不能当作一种二元分类的任务来做,因为异常检测的主要难点在于资料的收集上,我们能够很容易的的搜集到大量正常的数据,因此在训练阶段,一般假设我们的数据都是正常数据,即训练集只有一个类别,这种分类问题又叫做one-class问题

对于Auto-Encoder的测试中

  • 如果我们最后得到的结果能够很好的将数据还原,即差异比较小,那么可以将该数据认为是正常数据

    在这里插入图片描述

  • 如果我们最后的到的结果不能将原始数据进行还原,即差异比较大,那么将该数据认为是异常数据

    在这里插入图片描述

我们可以通过设置重构时的损失值的阈值,来决定我们的数据是否正常:

  • 当损失值超过这个阈值时,代表的是异常数据
  • 当损失值低于这个阈值时,代表的是正常数据
AutoEncoder是一种无监督学习的技术,其原理是通过将输入数据编码为低维表示,然后再将其解码回原始数据的过程。它由编码器和解码器两部分组成。编码器将输入数据映射到一个低维的隐藏表示,而解码器则将隐藏表示映射回原始数据空间。这样,AutoEncoder可以学习到数据的压缩表示和重建能力。 在训练过程中,AutoEncoder的目标是最小化重建误差,即使得解码器的输出尽可能接近输入数据。通过这个过程,AutoEncoder可以学习到数据的特征,并且可以用于数据的降维、特征提取和生成等任务。 AutoEncoder有多种变体,包括经典AutoEncoder、Denoising AutoEncoder、Sparse AutoEncoder、VAE和卷积AutoEncoder等。每种变体都有不同的特点和应用场景。例如,Denoising AutoEncoder通过在输入数据中引入噪声来增强模型的鲁棒性,Sparse AutoEncoder通过引入稀疏性约束来学习到更加稀疏的表示,而VAE则结合了概率建模的思想,可以用于生成新的样本。 如果你对AutoEncoder的数学推导感兴趣,可以参考\[3\]中提供的链接。 #### 引用[.reference_title] - *1* [几种AutoEncoder原理](https://blog.csdn.net/leida_wt/article/details/85052299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [对抗性自动编码器系列--自动编码器AutoEncoder的原理及实现-手写数字的重建](https://blog.csdn.net/u014264373/article/details/121103034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Autoencoder 详解](https://blog.csdn.net/omnispace/article/details/78364582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值