AIGC系列之:Variational Auto Encoder-VAE模块

news2024/11/22 20:16:07

目录

1.VAE 概述

2.概率分布

3.损失函数

4.重参数技巧

5.维度对 VAE 的影响

6.损失函数对VAE的影响

7.总结


VAE原始https://arxiv.org/abs/1312.6114

论文解读:https://mp.weixin.qq.com/MzI1MjQ2O

1.VAE 概述

        变分自动编码器(Variational autoEncoder,VAE)是生成模型的一种。这些方法的主要目标是从对象的学习分布中生成新的采样数据。2014 年,Kingma et al.提出了这种 VAE生成模型,该模型可以从隐变量空间的概率分布中学习潜在属性并构造新的元素。

        VAE 包含两个部分:编码器 encoder 和解码器 decoder。如图所示,编码器计算每个输入数据X ={X1,X2...,Xn}的低维均值和方差,然后从隐变量空间采样,得到Z={Z1,Z ...,Zn},通过解码器生成新数据Y ={Y1,Y2...,Yn}。我们希望从隐变量空间中的采样的数据 Z 遵循原始数据 X 的概率分布,这样根据采样数据 Z 生成的新数据 Y也就可以遵循原始数据的概率分布。

                                                                        图1 VAE结构图

2.概率分布

        为了确保采样数据 Z 的概率分布符合输入 X ,首先假设存在一个 Z 关于 X 的后验后验概率,并进一步假设这个概率分布是正态分布:

p(Z | X ) = N(0, I)

那么采样数据 Z 的概率分布就为:

这样p(Z) (先验分布)和p(Z|X) (后验分布)就都符合标准正态分布了。

3.损失函数

        VAE 生成图片的性能可以通过 evidence lower bound(ELBO) loss 来评估,该损失由Reconstruction loss 和 Kullback–Leibler loss(KL loss)组成。Reconstruction loss 用于计算生成的数据与原始数据的相似程度,而 KL loss 作为一个额外的 loss,用于测量一般正态分布与标准正态分布的差异,也就是均值和方差之间的差异。在给定的隐变量空间维度为 n 的条件下,已知均值和方差,则KL loss 定义为:

        Reconstruction loss 使用标准的L2 Loss也就是 MSE。给定 m 个数据,已知真实值 x 和预测值x^。Reconstruction loss 定义为:

        最终,ELBO loss 由上述两个损失函数组成,系数为 α 和 β:

        简单来说,这里的 Reconstruction loss 是用来让 decoder 的输出 Y 和输入 X 尽可能相似。而 KL loss 希望隐变量空间可以符合标准的正态分布,但实际 X 的分布其实并不是标准的正态分布,也就是说 KL loss 会让输出 Y 具有多样性,与输入 X 产生一部分的差异。Reconstruction loss 和 KL loss 的比例是 1:1,这样既能保证生成图像质量,又可以引入一定的噪声,使生成图片有一定的泛化能力。

4.重参数技巧

        除了这个特殊的损失函数,作者还介绍了一种名为重参数技巧(Reparameterizationtrick)的方法。

                                                               图2重参数技巧

        因为假设 p(Z | X ) = N(0, I) , 但是均值和方差都是靠 encoder 计算出来的,然后我们要靠这个均值和方差反向优化 encoder。但是随机采样这个操作是不可导的,我们不可能通过随机采样操作进行反向传播。因此我们可以利用随机采样的结果,本来我们需要从均值和方差的分布中随机采样,现在我们只需要生成一组符合正态分布的变量ε。如图2所示,从正态分布中采样一个 Z,相当于从 N(0,I) 中采样一个 ε,然后让

这样随机采样就不用参与梯度下降了,只需要更新采样的结果。

5.维度对 VAE 的影响

        在变分自编码器中,隐变量空间的维度(dimensionality)是一个非常重要的变量,在一般的编码器(AE)中,这个变量也被称为 bottleneck。如果给定 m 个数据,维度的大小为 n,那么每个数据就会产生 n 个均值和 n 个方差。不同的维度会导致 decoder 生成不同的图片,我们这里使用 MNIST 的训练集,在ELBO = 0.5*MSE + 0.5*KL的情况下来训练变分自动编码器,用 MNIST 的测试集来测试重构的效果。如图 5,在维度为 2,5,10,20 的情况下,左边图片代表 ground truth,也就是 encoder 的输入,右边图片代表生成的图片,也就是 decoder 的输出。

                                                        图5 GT与不同维数重建的比较

        我们可以看出,在隐变量空间的维度较低时,生成的数字较为模糊,在隐变量空间的维度较高时,生成的数字相对而言噪声小,更加清晰,并且与原图像有着一定的相似度。

6.损失函数对VAE的影响

        从第五节可以看出,不同维度的大小会影响生成图片的质量。同样的,不同的损失函数也会导致 VAE 生成不同质量的图片。在第三节的最后一段我们提到过,Reconstruction loss 希望输出和输出保持相同,而 KL loss 在原有的基础上引入了一定的噪声。因此,我们可以通过修改两个损失函数的权重,来控制不同的损失函数对输出的影响程度。在 0.1*MSE + 0.9*KL 0.9*MSE + 0.1*KL 的情况下,生成的图片又会有什么差别呢?图 6 展示了不同损失函数下生成图片的质量(隐变量空间维度为 20),就像我们想得那样,在 MSE 权重较大的情况下,生成的图片几乎与原图片一模一样,几乎没有噪声。而在 KL loss 占主导时,生成的图片由于噪声过大已经完全看不出来是什么了。

                                                   图6 GT与基于不同损失函数的重建的比较

        除了观察生成的图片的质量,我们还可以通过对隐变量空间的分析来查看数据的分布情况。当 MSE 权重较大的时候(0.9*MSE + 0.1*KL),隐变量空间的分布情况更像原数据的分布情况。

7.总结

        尽管 VAE 在名字上很像 AE(自动编码器),但其方法(或其对网络的解释)是独特的。在 VAE 中 ,encoder 用于计算平均值和方差,这与平时的 AE 完全不是一个类型的模型。对于不同的隐变量空间维度,VAE 具有不同的性能,相对而言,隐变量空间越大,可以保留的概率分布的信息就越多。但我们并不能说,隐变量空间越大就一定越好,考虑一个极限的情况就是当输入图片是 28*28*1 的情况下,隐变量空间的大小设置为 784,也就是原数据的大小,VAE 也就失去了 encoding 的意义了。

        对于损失函数 ELBO loss,我们可以调整它的权重来达到不同的生成效果,毕竟我们在生活中也会遇到相当多的噪声,这对于模型的鲁棒性来说是非常有意义的。除了VAE,后续还有很多类似的模型比如条件变分自编码器(Conditional VariationalautoEncoder),生成对抗编码器(VAEGAN)等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见草本植物(贵州省):023金茅、白茅、黄茅、蒲公英、地果、蕨、铁芒萁

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、金茅 …

Zabbix 6.0 详细基础介绍

目录 一、如何选择自己的运维监控平台 1.1 常用的开源运维监控工具 1.1.1 Cacti 1.1.2 Nagios 1.1.3 Ganglia 1.1.4 Centreon 1.1.5 Grafana 1.1.6 Prometheus 1.1.7 Zabbix 1.2 监控工具选型经验 1.2.1 中小企业传统监控选择 Zabbix 1.2.2 云原生监控选择 Prometh…

快速排序算法,这么写打败95%的程序员

1960年,英国计算机科学家霍尔提出了一种高效的排序算法——快速排序。其核心思想是选定一个基准元素,将需排序的数组分割成两部分。其中一部分都比基准元素小,另一部分都比基准元素大。接着对这两部分分别进行快速排序,最后通过递…

大导演王晶进军短剧,小程序短剧质量再上一层,短剧小程序的

在2023年11月26号,大导演王晶在横店进行开机仪式,短剧《亿万傻儿子》开拍,该短剧题材为都市、男频。 目前短剧是比较热门,大导演王晶拍摄短剧可谓是将短剧的质量提高一个层次。 侧面反映了短剧已经是非常广泛了。后续发展就是哪家…

Python基础语法之学习数据转换

Python基础语法之学习数据转换 一、代码二、效果 一、代码 #数字转换成字符串 num_str str(11) print(type(num_str))#字符串转整数 numint("11") print(type(num),num)#浮点数转整数 float_num int(11.1) print(type(float_num),float_num)#整数转浮点数 num_flo…

【问题总结】Cache的有效位和修改位有什么区别?

以下是大神的理解: ref:https://blog.csdn.net/weixin_45415929/article/details/128152542 有效位:表示一个块是否在Cache中。(eg:当电脑开机时,Cache一定是空的,因此有效位是0。) 修改位&…

10.索引

一.索引简介 索引用于快速找出在某个列中有一特定值的行。 不使用索引,MySQL必须从第1条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多。 如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻…

C#-基础及扩展合集(持续更新)

一、基础 Ⅰ 关键字 1、record record(记录),编译器会在后台创建一个类。支持类似于结构的值定义,但被实现为一个类,方便创建不可变类型,成员在初始化后不能再被改变 (C#9新增) …

Python中的datetime库

1. datetime datetime是Python中用于处理日期和时间的类,它包含在datetime模块中。使用datetime类,我们可以创建表示特定日期和时间的对象,以及进行日期和时间的计算和操作。 from datetime import datetime, timedelta# 获取当前日期和时间…

ATA-7030高压放大器在等离子体实验中的应用有哪些

高压放大器在等离子体实验中有多种重要应用。等离子体是一种带电粒子与电中性粒子混合的物质,其具有多种独特的物理性质,因此在许多领域具有广泛的应用,例如聚变能源、等离子体医学、材料加工等。下面安泰电子将介绍高压放大器在等离子体实验…

简易selenium自动化测试框架(Python)

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

AIGC系列之:CLIP和OpenCLIP

目录 模型背景 CLIP模型介绍 相关资料 原理和方法 Image Encoder Text Encoder 对比学习 预训练 Zero Shot预测 优势和劣势 总结 OpenClip模型介绍 相关资料 原理 结果 用法 模型总结 模型背景 Stable Diffusion主要由三个核心模块组成: Text Enc…

聊聊如何进行代码混淆加固

​ 聊聊如何进行代码混淆 前言什么是代码混淆代码混淆,是指将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。 代码混淆常见手段1、名称混淆 将有意义的类,字段、方法名称更改为无意义的字符串。生成…

多模态融合16篇优质论文及代码合集,含2023最新

多模态融合是多模态学习领域的基础问题,也是多模态研究中非常关键的研究点。它旨在从多个模态(例如语音、图像、文本等)中提取有价值的信息和特征,并将这些信息融合在一起以提高系统的性能。这一领域的研究内容广泛,包…

深入探索Maven:优雅构建Java项目的新方式(一)

Maven高级 1,分模块开发1.1 分模块开发设计1.2 分模块开发实现 2,依赖管理2.1 依赖传递与冲突问题2.2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 3,聚合和继承3.1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤…

CSGO搬砖还能做吗?CSGO饰品未来走势如何?

steam/csgo搬砖项目真能月入过万吗?到底真的假的? 如何看待CSGO饰品市场的整体走向? 从整体来说,CSGO的饰品市场与规模肯定会持续不断的上升,大盘不会发生特别大的波动,目前处于稳定期!&…

05_属性描述符

05_属性描述符 文章目录 05_属性描述符一、属性描述符是什么?二、属性描述符①:查看属性描述②:设置属性描述符③:案例01.代码实现02.代码实现(优化) 一、属性描述符是什么? 属性描述符的结构 在…

Transformer中的多头注意力机制-为什么需要多头?

Transformer为什么使用多头注意力机制呢? 多头可以学习到不同维度的特征和信息。为什么可以学习到不同维度的信息呢? 答案是:多头注意力机制的组成是有单个的self attention,由于self attention通过产生QKV矩阵来学习数据特征&a…

字符串入门算法题!

概述 字符串和数组一样算是比较简单的题目,正适合打算法基础,一定要认真对待!!! 字符串类型的算法问题可以分为简单、中等和困难的难度级别,基础类型一些基本的字符串处理问题,如字符串的拼接…

2023加拿大毕业典礼:共赴一场相遇 遥望未来可期

放眼国际金融,启幕璀璨时代。加拿大时间2023年11月14-16日,中国人民大学-加拿大女王大学金融硕士2023届行业高管班及国际班毕业生们携亲友,参加了为期3天的毕业庆祝活动,从加拿大女王大学史密斯商学院的多伦多教学区到女王大学的金…