条件变分自动编码器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是图像的标签,它可以用一个离散向量表示。

目录
相关文章
|
1月前
|
机器学习/深度学习 关系型数据库 MySQL
大模型中常用的注意力机制GQA详解以及Pytorch代码实现
GQA是一种结合MQA和MHA优点的注意力机制,旨在保持MQA的速度并提供MHA的精度。它将查询头分成组,每组共享键和值。通过Pytorch和einops库,可以简洁实现这一概念。GQA在保持高效性的同时接近MHA的性能,是高负载系统优化的有力工具。相关论文和非官方Pytorch实现可进一步探究。
266 4
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
|
3天前
|
机器学习/深度学习
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
|
16天前
|
机器学习/深度学习 自然语言处理 算法
长序列中Transformers的高级注意力机制总结
Transformers在处理长序列时面临注意力分散和噪音问题,随着序列增长,注意力得分被稀释,影响相关上下文表示。文章探讨了序列长度如何影响注意力机制,并提出了多种解决方案:局部敏感哈希减少计算需求,低秩注意力通过矩阵分解简化计算,分段注意力将输入分割处理,层次化注意力逐级应用注意力,递归记忆增强上下文保持,带有路由的注意力机制动态调整信息流,以及相对位置编码改进序列理解。这些方法旨在提高Transformer在长序列任务中的效率和性能。
23 3
|
16天前
|
编解码 计算机视觉 网络架构
【YOLOv8改进】BiFPN:加权双向特征金字塔网络 (论文笔记+引入代码)
该专栏深入研究了YOLO目标检测的神经网络架构优化,提出了加权双向特征金字塔网络(BiFPN)和复合缩放方法,以提升模型效率。BiFPN通过双向跨尺度连接和加权融合增强信息传递,同时具有自适应的网络拓扑结构。结合EfficientNet,构建了EfficientDet系列检测器,在效率和准确性上超越先前技术。此外,介绍了YOLOv8如何引入MPDIoU并应用BiFPN进行可学习权重的特征融合。更多详情可参考提供的专栏链接。
|
1月前
|
机器学习/深度学习 自然语言处理 运维
大模型开发:解释自编码器以及它们在表示学习中的作用。
自编码器是一种神经网络,用于无监督学习中的数据降维和压缩,由编码器和解码器组成,学习低维稀疏表示。它们分为收缩、正则和变分类型,常用于图像重构、聚类、机器翻译等任务,能生成类似训练数据的新样本。自编码器在特征学习和多种任务中展现强大能力。
83 7
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
63 0
|
10月前
|
机器学习/深度学习 编解码 数据可视化
ConvNeXt V2:与屏蔽自动编码器共同设计和缩放ConvNets,论文+代码+实战
ConvNeXt V2:与屏蔽自动编码器共同设计和缩放ConvNets,论文+代码+实战
|
11月前
|
机器学习/深度学习 API 算法框架/工具
Keras 高级教程:模型微调和自定义训练循环
我们在前两篇文章中介绍了如何使用 Keras 构建和训练深度学习模型的基础和中级知识。在本篇文章中,我们将探讨一些更高级的主题,包括模型微调和自定义训练循环。
|
数据采集 机器学习/深度学习 JSON
【Pytorch神经网络实战案例】32 使用Transformers库的管道方式实现:加载指定模型+文本分类+掩码语言建模+摘要生成+特征提取+阅读理解+实体词识别
在Transformers库中pipeline类的源码文件pipelines.py里,可以找到管道方式自动下载的预编译模型地址。可以根据这些地址,使用第三方下载工具将其下载到本地。
562 0

热门文章

最新文章