条件变分自动编码器CVAE:基本原理简介和keras实现

简介: 条件变分自动编码器CVAE:基本原理简介和keras实现

变分自动编码器(VAE)是一种有方向的图形生成模型,已经取得了很好的效果,是目前生成模型的最先进方法之一。它假设数据是由一些随机过程,涉及一个未被注意的连续随机变量z假设生成的z是先验分布Pθ(z)和条件生成数据分布Pθ(X | z),其中X表示这些数据。z有时被称为数据X的隐藏表示。

 

像任何其他自动编码器架构一样,它有一个编码器和一个解码器。编码器部分试图学习qφ(z | x),相当于学习数据的隐藏表示x或者x编码到隐藏的(概率编码器)表示。解码器部分试图学习Pθ(X | z)解码隐藏表示输入空间。图形化模型可以表示为下图。


 

image.png

对模型进行训练,使目标函数最小化


 

image.png

这种损失的第一项是重建错误或数据点的预期负对数可能性。期望是关于编码器的分布在表示通过采取一些样本。这个术语鼓励解码器在使用来自潜在分布的样本时学会重构数据。较大的错误表示解码器无法重构数据。

第二项是Kullback-Leibler编码器之间的分布q_φ(z | x)p (z)。这个散度度量了在使用q表示z上的先验时损失了多少信息,并鼓励其值为高斯分布。

在生成过程中,来自N(0,1)的样本被简单地输入解码器。训练和生成过程可以表示为以下


 

image.png

一种训练时变分自编码器实现为前馈神经网络,其中P(X|z)为高斯分布。红色表示不可微的采样操作。蓝色表示损失计算

image.png

测试时变分的自动编码器,它允许我们生成新的样本。编码器路径被简单地丢弃。

VAE进行如此简要的描述,其原因在于,VAE并不是本文的主要关注对象,而是与本文的主要主题紧密相关的。

VAE生成数据的一个问题是,我们对生成的数据类型没有任何控制。例如,如果我们用MNIST数据集训练VAE,并尝试通过向解码器输入Z ~ N(0,1)来生成图像,它也会产生不同的随机数字。如果我们训练好,图像会很好,但我们将无法控制它会产生什么数字。例如,你不能告诉VAE生成一个数字“2”的图像。

为此,我们需要对VAE的体系结构进行一些修改。假设给定一个输入Y(图像的标签),我们希望生成模型生成输出X(图像)。所以,VAE的过程将被修改为以下:鉴于观察y, z是来自先验分布Pθ(z | y)和输出分布Pθ产生的x (x | y,z)。请注意,对于简单的VAE,之前是Pθ(z)和输出是由Pθ(x | z)

image.png

 

VAE中的可视化表示任务

这里编码器部分试图学习qφ(z | x, y),相当于学习隐藏的代表数据或编码xy条件。解码器部分试图隐藏表示学习Pθ(x | z, y)解码隐藏表示输入空间条件的y图形化模型可以表示为如下图所示。

image.png

 

条件VAE (Conditional VAE)的神经网络结构可以表示为如下图。

image.png

X是像。Y是图像的标签,它可以用一个离散向量表示。

目录
相关文章
|
6月前
|
机器学习/深度学习 关系型数据库 MySQL
大模型中常用的注意力机制GQA详解以及Pytorch代码实现
GQA是一种结合MQA和MHA优点的注意力机制,旨在保持MQA的速度并提供MHA的精度。它将查询头分成组,每组共享键和值。通过Pytorch和einops库,可以简洁实现这一概念。GQA在保持高效性的同时接近MHA的性能,是高负载系统优化的有力工具。相关论文和非官方Pytorch实现可进一步探究。
805 4
|
6月前
|
机器学习/深度学习 自然语言处理 算法
长序列中Transformers的高级注意力机制总结
Transformers在处理长序列时面临注意力分散和噪音问题,随着序列增长,注意力得分被稀释,影响相关上下文表示。文章探讨了序列长度如何影响注意力机制,并提出了多种解决方案:局部敏感哈希减少计算需求,低秩注意力通过矩阵分解简化计算,分段注意力将输入分割处理,层次化注意力逐级应用注意力,递归记忆增强上下文保持,带有路由的注意力机制动态调整信息流,以及相对位置编码改进序列理解。这些方法旨在提高Transformer在长序列任务中的效率和性能。
252 3
|
5月前
|
机器学习/深度学习
【保姆级教程|YOLOv8添加注意力机制】【1】添加SEAttention注意力机制步骤详解、训练及推理使用
【保姆级教程|YOLOv8添加注意力机制】【1】添加SEAttention注意力机制步骤详解、训练及推理使用
|
6月前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:自动编码器(Autoencoder)
使用Python实现深度学习模型:自动编码器(Autoencoder)
211 0
|
6月前
|
机器学习/深度学习 语音技术 网络架构
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
117 0
|
机器学习/深度学习 算法 Python
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
235 0
|
机器学习/深度学习 API 算法框架/工具
Keras 高级教程:模型微调和自定义训练循环
我们在前两篇文章中介绍了如何使用 Keras 构建和训练深度学习模型的基础和中级知识。在本篇文章中,我们将探讨一些更高级的主题,包括模型微调和自定义训练循环。
|
机器学习/深度学习 PyTorch 算法框架/工具
什么是LSTM模型,什么是BILSTM模型,给出 pytorch案例
LSTM模型是一种循环神经网络模型,它在处理序列数据时能够有效地解决梯度消失和梯度爆炸的问题。LSTM模型引入了门机制(如遗忘门、输入门和输出门),以便在序列中选择性地保存或遗忘信息。这些门可以根据输入数据自适应地学习。 BILSTM模型是一种双向LSTM模型,它包含两个LSTM模型,一个正向模型和一个反向模型。正向模型按照时间顺序读取输入序列,而反向模型按照相反的顺序读取输入序列。这使得BILSTM模型能够同时考虑过去和未来的上下文信息,因此通常比单向LSTM模型表现更好。
919 0
|
数据采集 机器学习/深度学习 JSON
【Pytorch神经网络实战案例】32 使用Transformers库的管道方式实现:加载指定模型+文本分类+掩码语言建模+摘要生成+特征提取+阅读理解+实体词识别
在Transformers库中pipeline类的源码文件pipelines.py里,可以找到管道方式自动下载的预编译模型地址。可以根据这些地址,使用第三方下载工具将其下载到本地。
833 0
下一篇
无影云桌面