pytorch-AutoEncoders

目录

  • [1. 监督学习&无监督学习](#1. 监督学习&无监督学习)
    • [1.1 监督学习](#1.1 监督学习)
    • [1.2 无监督学习](#1.2 无监督学习)
    • [1.3 为什么需要无监督学习](#1.3 为什么需要无监督学习)
  • [2. AutoEncoders](#2. AutoEncoders)
  • [3. Auto Encoders loss function](#3. Auto Encoders loss function)
  • [4. PCA VS Auto Encoders](#4. PCA VS Auto Encoders)
  • [5. Auto Encoders的变种](#5. Auto Encoders的变种)
    • [5.1 Denoising Auto Encoders](#5.1 Denoising Auto Encoders)
    • [5.2 Dropout AutoEncoders](#5.2 Dropout AutoEncoders)
    • [5.3 Adversarial AutoEncoders](#5.3 Adversarial AutoEncoders)
    • [5.4 Variational Auto Encoder](#5.4 Variational Auto Encoder)

1. 监督学习&无监督学习

1.1 监督学习

分类和回归都属于监督学习,即数据集需要人的参与,比如:数据标定、分类,因此受人的主观影响较大。

1.2 无监督学习

下图展示了三大机器学习方向的数据量,增强学习最少,其次是监督学习,大部分数据是无标注无监督学习

1.3 为什么需要无监督学习

  • 降维
  • 预处理
    比如:把224x224的数据降维为64x64
  • 可视化
    降维后,进行数据可视化
    https://projector.tensorflow.org/
  • 从无监督数据中发现数据的分布、形态,方便后续train
  • 压缩、去噪、超分辨率

2. AutoEncoders

auto encoder 就是重建自己,它的输入和输出维度相同,如下图:输入和输出都是784,中间都是隐藏层,过程分三步,encoder、code和decode,decode是encode的反过程。code可以看作数据暂存,可升维也可降维,下图处理手写数字识别图片,code降到了2维

3. Auto Encoders loss function

如下图:MSE和cross Entropy loss函数也是适合auto encoder的

cross Entropy用于binary 0,1输入。

4. PCA VS Auto Encoders

大部分数据是非线性的,PCA 属于线性变化,而Auto Encoders得意于神经网络的非线性,因此效果要比PCA更好。

如下图:

5. Auto Encoders的变种

5.1 Denoising Auto Encoders

为了防止像素级重建时,网络记住像素值,通常会在样本数据中增加一些噪声,这样才能记住更高级别的特征。

如下图:可以看出加了噪声后,重建后的效果还是不错的。

5.2 Dropout AutoEncoders

drop是在train的时候,删除掉一些网络连接,以防止over fitting,而在测试的时候又恢复全部网络连接。

如下图:

绿色柱状图标识dropout与loss之间的关系,蓝色标识dropout与accuracy之间的关系,可以看出dropout为0时,全连接loss最小,但是accuracy却不是最大的,说明可能出现了over fitting,dropout=0.2时,accuracy最大,说明dropout在一定程度上防止overfitting

5.3 Adversarial AutoEncoders

AutoEncoders的hidden code数据存在类似下图的一种分布,随着epoch的增加数据越靠近下方,而这种分布并不符合常见的分布形态,所以人为希望均值=0,方差为某个值,使得在生成时,h从[-1,1]属于某种分布,为了解决这个问题,Adversarial 加入一个discriminator网络用来验证真实的z分布是否与z`一致,如果相差不大输出一个real,否则输出一个Fake

5.4 Variational Auto Encoder

VAE = Variational Auto Encoder,变分自编码器。是一种常见的生成模型,属于无监督学习的范畴。它能够学习一个函数/模型,使得输出数据的分布尽可能的逼近原始数据分布,其基本思路是:把一堆真实样本通过编码器网络变换成一个理想的数据分布,然后这个数据分布再传递给一个解码器网络,得到一堆生成样本,生成样本与真实样本足够接近的话,就训练出了一个VAE模型.

下图中的公式,前半部分计算的是重建误差,可以理解为MSE或者是Cross Entropy,而后半部分KL是散度的公式,主要是计算q分布与p分布的相似度。

那么公式的目标就是重建误差越小越好,q和p的分布越接近越好。

下图中1表示pq两种分布,2表示两种分布的重叠程度,重叠度越高,值越低,3表示的KL值,同样是两种分布越接近值越小,反之越大。

下图是计算重建误差max likelihood 公式的两个常用方法,MSE和cross Entropy

计算KL的公式

下图表示VAE的一个过程,AE过程是输入x->h->x值一一对应;VAE是输入->N分布->x,也就说值不是一一对应的了,所以需要在N分布中sample出一个值,变为x->h->x`一一对应。

那么有一个问题是sample操作不可微,所以有个小技巧就是将N(μ,σ 2 ^2 2)分布表达为

使得μ和σ即变得可导,又保留了原来的分布特性,因为不关心ε ,从而忽略掉ε

VAE网络,隐藏层是一个分布,z值从分布中sample得到

AE与VAE的对比,发现VAE还是要好一些

生成模型

VAE学习的是分布,通过从q(h)分布sample不同的h值,就可以做生成模型

下图是通过VAE和GAN生成的二次元图像

相关推荐
Juchecar1 小时前
LLM模型与ML算法之间的关系
人工智能
FIN66681 小时前
昂瑞微:深耕射频“芯”赛道以硬核实力冲刺科创板大门
前端·人工智能·科技·前端框架·信息与通信·智能
benben0441 小时前
京东agent之joyagent解读
人工智能
LONGZETECH1 小时前
【龙泽科技】汽车动力与驱动系统综合分析技术1+X仿真教学软件(1.1.3 -初级)
人工智能·科技·汽车·汽车仿真教学软件·汽车教学软件
烛阴1 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python
lisw051 小时前
SolidWorks:现代工程设计与数字制造的核心平台
人工智能·机器学习·青少年编程·软件工程·制造
大刘讲IT1 小时前
AI 生产工艺参数优化:中小型制造企业用 “智能调参“ 提升产品合格率与生产效率
人工智能·制造
图欧学习资源库1 小时前
人工智能领域、图欧科技、IMYAI智能助手2025年9月更新月报
人工智能·科技
杨枝甘露小码2 小时前
Python学习之基础篇
开发语言·python
Wild_Pointer.2 小时前
面向Qt/C++开发工程师的Ai提示词(附Trae示例)
人工智能·ai·大模型