首页 > 其他分享 >【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器

时间:2023-12-28 13:34:31浏览次数:31  
标签:编码器 变分 VAE 降维 正则 先验 数据




变分自编码器

  • 降维本质:寻找隐空间和隐变量
  • 自编码器:论降维,PCA纯线性不及我深邃,编码器-解码器不及我牛逼
  • 无损重建
  • 变分自编码器 VAE:解决自编码器的过拟合问题
  • 引入正则化:从求最大似然函数 MLE,改成最大后验估计 MAP
  • 变分推理
  • 损失函数 = 无损重建 + 正则化



 


降维本质:寻找隐空间和隐变量

机器学习就是想从数据中找到规律。

当数据维度很多的时候,会考虑降维。

先看俩个概念:隐空间、隐变量。

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器


降维通常是为了发现数据的简化表示,其中包括寻找隐空间和隐变量的过程。

降维的过程就像是从这堆照片中提取关键信息,比如人脸的形状、眼睛的大小、嘴巴的宽度等,而不是关注每一个像素点。

这个简化的表示就是隐空间,而提取出来的关键特征就是隐变量。

通过降维,我们能够找到更低维度的空间,这个空间尽量保留了原始数据的重要信息。

对数据分析非常有用,因为在较低维度的空间中处理数据通常更高效,有助于揭示数据的内在结构和模式,减少噪声、冗余信息。

 


自编码器:论降维,PCA纯线性不及我深邃,编码器-解码器不及我牛逼

PCA是线性降维的,无法捕捉到数据中的非线性结构。

编码器-解码器、自编码器都是深度非线性的,可以通过增加网络层数和调整网络结构来捕获数据中的复杂模式和关系。

当然,自编码器降维能力更强。

自编码器结构图:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_02

自编码器的降维能力源自它的隐藏层通常比输入层和输出层的维度要小,因此自编码器被迫学习输入数据中最重要的特征。

编码器-解码器模型并不是专门为降维设计的。它们是为了处理序列到序列的转换问题,例如机器翻译。

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_03

无损重建

自编码器结构,编码器抓主要特征,解码器重建原始特征。

是通过最小化输入数据、解码器数据之间的重构误差来更新参数的。

但这也导致了自编码器的问题。

  • 如果没有任何先验知识,自编码器降维分类有缺陷。

镜像一个制陶艺人,目标是用一堆黏土(输入数据)塑造出一个尽可能接近原始黏土块(原始输入)的作品(重建输出)。但是,如果你要求这位艺人盲目地塑造作品,而不提供任何关于黏土最终应该呈现什么形状或风格的先验知识。

那收到的是一个整体形状相同,但细微纹理或图案不是你想要的。

  • 因为自编码器以最小损失为目标,不会管隐空间如何组织,会严重过拟合。

无损重建的隐空间:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_04


虽然能分出类别,但数据分布不均匀。

数据之间存在大量地方空白,如果用这些地方生成数据,那啥也不是。
 


变分自编码器 VAE:解决自编码器的过拟合问题

变分自编码器:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_05

变分自编码器,是从隐空间随机采样给生成目的的解码器,必须保证隐空间足够规则,避免过拟合。

如果模型非常复杂,可能会过分地拟合训练数据中的每一个小细节,包括噪声。

引入正则化:从求最大似然函数 MLE,改成最大后验估计 MAP

为了防止过拟合,我们可以使用正则化。

正则化,通过在模型的损失函数中加入一个额外的项(正则项),来惩罚模型的复杂度。

这个正则项就是在告诉模型:“在尽可能准确地拟合数据的同时,请尽量保持简单。”

引入正则化,让模型不在把输入数据当成隐空间中的单个点(固定编码值),而是隐空间的概率分布:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_06

类似扔飞镖,目标是射中飞镖靶心。

在没有正则化的情况下,你每次射中的地方都是靶上的一个特定点。

但你扔过就知道,你不可能每次都射中同一个点一样,由于手的抖动或者风的影响、力度、食指的摆放位置、身体的姿态等,你射出的每一支飞镖并不总是落在同一个点上,而是在靶心周围形成了一个分布区域。

抓住数据的本质特征,每个输入数据点都可以有多种可能的表示形式,而不是只有一种,而不是只拟合到特定的样本点,从而增强对新样本的适应能力。

在机器学习中,使用正则化就像是在你的判断中加入先验知识。

假设你要解决一个案件,案发现场有很多线索(数据),你需要找出最有可能的犯罪嫌疑人(模型参数)。

最大似然估计 MLE 就像是你仅仅基于现场的线索来判断谁是犯人。

你会看哪个嫌疑人与现场线索匹配得最好,就认为他可能就是犯人。

  • 最大化似然函数,就是找到一组参数,使得观察到的数据出现的概率最大。

先验就好比你在案件发生之前就已经知道的关于犯罪嫌疑人的一些信息。

比如,你知道被害人和歹徒搏斗的过程中,在歹徒肩膀上划了一道伤口。这些信息就是你的“先验”知识。

最大后验估计 MAP 就是你不仅考虑案发现场的线索,还要结合你的先验知识来判断犯人。

换句话说,你不仅看线索与哪个嫌疑人匹配,还会考虑这个嫌疑人肩膀上有没有伤口。

  • 最大化后验概率,就是结合了先验信息后,寻找使得数据和先验知识共同出现概率最大的参数。

引入正则化后,自编码器隐空间:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_07


数据分布均匀、还能分出类别。

 


变分推理

变分自编码器具体结构:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_08

输入数据 x 是由隐变量 z 生成:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_09

x 可观测,正则化是 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_10,z 不可观测。

可以通过 x 反推 z:

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_11

可这个不好算,没有解析解。

但我们可以用变分推断来算。

  • 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p

数学公式:
【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_12

第一行,就是近似俩个分布:

  • 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_13
  • 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_14
  • 目标是找到一对函数 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_15(高斯分布的均值和方差)
  • 通过迭代 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_15,当俩个分布越接近,那我们最终就会知道 真实的分布 了

第二行,把KL按定义展开,变成期望形式。

第三行,分解交叉熵。

第四行,最小化 KL 散度等价于最大化 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_17 的期望值减去 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_18【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_19

第五行,假设【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_20遵循高斯分布,可以将【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_17的期望值写为【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_22的形式

总结起来,我们要找的函数对 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_23 应当最大化对数似然项(数据 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_24 给定 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_25

并同时最小化潜在变量 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_25 的分布 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_18 与其先验 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_19

这样做能够使得我们的模型既能够精确地重构数据 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_24,又能够保证潜在空间 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_25

损失函数 = 无损重建 + 正则化

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_31

最优化 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_32,这组函数能够在最大化数据 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_数据_24

【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_32

这个公式分为俩部分:

  • 无损重建 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_深度学习_35
  • 正则化 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_正则化_36
  • 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器_编码器_37


标签:编码器,变分,VAE,降维,正则,先验,数据
From: https://blog.51cto.com/u_13937572/9013238

相关文章

  • QARV: Quantization-Aware ResNet VAE for Lossy Image Compression
    目录简介创新之处模型结构实验结果什么是Quantization-Aware量化感知?简介该文章基于VAE提出一种新的有损图像压缩方法,起名叫quantization-awareResNetVAE(QARV).这种方法集成了测试时间量化和量化感知训练,没有它就无法进行熵编码?除此之外还专门设计了用于快速解码的QARV网......
  • 一种简单的自编码器PyTorch代码实现
    1.引言对于许多新接触深度学习爱好者来说,玩AutoEncoder总是很有趣的,因为它具有简单的处理逻辑、简易的网络架构,方便可视化潜在的特征空间。在本文中,我将从头开始介绍一个简单的AutoEncoder模型,以及一些可视化潜在特征空间的一些的方法,以便使本文变得生动有趣。闲话少说,我们直接开......
  • 一文弄懂自编码器 -- Autoencoders
    1.引言近年来,自编码器(Autoencoder)一词在许多人工智能相关的研究论文、期刊和学位论文中被频繁提及。自动编码器于1980年推出,是一种用于神经网络的无监督学习技术,可以从未被标注的训练集中学习。本文重点介绍自编码器的概念、相关变体及其应用,闲话少说,我们直接开始吧!2.原理介绍自......
  • 生成模型的两大代表:VAE和GAN
    生成模型给定数据集,希望生成模型产生与训练集同分布的新样本。对于训练数据服从\(p_{data}(x)\);对于产生样本服从\(p_{model}(x)\)。希望学到一个模型\(p_{model}(x)\)与\(p_{data}(x)\)尽可能接近。这也是无监督学习中的一个核心问题——密度估计问题。有两种典型的思路:显式......
  • 江科大STM32(3):定时器(4)定时器的编码器接口
    1.编码器接口简介EncoderInterface编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和......
  • vqvae 论文阅读
    https://arxiv.org/abs/1711.00937 直接3.1 首先我们定义一个嵌入空间.是K*D维度的.K是离散空间向量的数量.D是每一个向量的维度.所以e_i中的i属于1到K. 模型的输入是x,也就是图片.然后模型编码成一个z_e(x). 然后使用最近算法来得到z_q具体公式是下面1和2.......
  • vqvae的loss计算
    loss=torch.mean((z_q.detach()-z)**2)+self.beta*torch.mean((z_q-z.detach())**2)z_q是codebook找到的最接近z的向量.z是encoder生成的向量.L对z求导=2(z_q.detach()-z)*(-1)=2(z-z_q.detach())   #这个部分对于encoder做了训练.L对z_q求导=2(z_q-z.......
  • HAL_RS485发送接收_DMA:编码器
    RS485编码器使用RS485读取多个编码器接收数据:空闲中断+DMA发送数据:DMA配置串口:基本与串口通信一致,增加接收和发送DMA,正常模式,另外增加485使能IO      接收数据:使能空闲中断        __HAL_UART_ENABLE_IT(&huart3,UART_IT_IDLE);        _......
  • 小练习简单的JAVAEE框架
    简单的JAVAEE框架注意:本次框架练习是为了了解tomcat的框架底层代码一、解析web.xml文件packagecn.servlet;abstractclassLoadConfig{//缺省不允许外包访问,抽象不允许实例化不能被继承privatestaticMap<String,String>config;privateLoadConfig(){......
  • 霍尔编码器
    霍尔编码器-直流减速电机介绍直流减速电机,即齿轮减速电机,是在普通直流电机的基础上,加上配套齿轮减速箱。齿轮减速箱的作用是,提供较低的转速,较大的力矩。同时,齿轮箱不同的减速比可以提供不同的转速和力矩。这大大提高了,直流电机在自动化行业中的使用率。减速电机是指减速机和电机......