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生成的二次元图像

相关推荐
天涯海风5 分钟前
介绍一下什么是 AI、 AGI、 ASI
人工智能·agi
zzc9217 分钟前
Tensorflow 2.X Debug中的Tensor.numpy问题 @tf.function
人工智能·tensorflow·numpy
我是你们的星光9 分钟前
基于深度学习的高效图像失真校正框架总结
人工智能·深度学习·计算机视觉·3d
追逐☞40 分钟前
机器学习(11)——xgboost
人工智能·机器学习
未来可期叶1 小时前
如何用Python批量解压ZIP文件?快速解决方案
python
张槊哲1 小时前
ROS2架构介绍
python·架构
智驱力人工智能1 小时前
AI移动监测:仓储环境安全的“全天候守护者”
人工智能·算法·安全·边缘计算·行为识别·移动监测·动物检测
斯普信专业组2 小时前
Apidog MCP服务器,连接API规范和AI编码助手的桥梁
运维·服务器·人工智能
小技工丨2 小时前
LLaMA-Factory:了解webUI参数
人工智能·llm·llama·llama-factory
风逸hhh2 小时前
python打卡day29@浙大疏锦行
开发语言·前端·python