VAE变分自编码器

VAE变分自编码器1 关于 VAE 那么什么是 VAE 呢 简单来讲 一个可以和 GAN 相媲美的生成网络 我们可以输入一个低维空间的 Z 映射到高维空间的真实数据 比如 生成不同样的数字 人脸 卡通头像等等 上图就具体展示了 VAE 的作用 作图是经过一轮训练之后的输出结果 中间的图是经过 9 轮训练之后的输出结果 而右图就是我们真实地数据 这里我猜测是将图片先编码 再解码这个全过程 而不是仅仅通过一个随机量去生成 2 VAE 与 GAN 之间的差异性既然 VAE 与 GAN 都是属于最近很火的生成网络序列 那么他们之间有什么不同呢

1)关于VAE

那么什么是VAE呢?简单来讲,一个可以和GAN相媲美的生成网络。我们可以输入一个低维空间的Z,映射到高维空间的真实数据。比如,生成不同样的数字,人脸,卡通头像等等。

VAE变分自编码器
上图就具体展示了VAE的作用,作图是经过一轮训练之后的输出结果,中间的图是经过9轮训练之后的输出结果,而右图就是我们真实地数据。(这里我猜测是将图片先编码,再解码这个全过程,而不是仅仅通过一个随机量去生成)。

2)VAE与GAN之间的差异性

既然VAE与GAN都是属于最近很火的生成网络序列,那么他们之间有什么不同呢?

假设,给定一系列猫的照片,我希望你能够对应我随机输入的一个n维向量,生成一张新的猫的照片,你需要怎么去做?对于GAN就是典型的深度学习时代的逻辑,你不清楚这个n维向量与猫的图片之间的关系,没关系,我直接拟合出来猫的图片对于n维向量的分布,通过对抗学习的方式获得较好的模型效果,这个方法虽然很暴力,但是却是有效的。

VAE则不同,他通过说我希望生成一张新的猫脸,那么这个n维向量代表的就是n个决定最终猫脸模样的隐形因素。对于每个因素,都对应产生一种分布,从这些分布关系中进行采样,那么我就可以通过一个深度网络恢复出最终的猫脸。VAE相比较于GAN它的效果往往会略微模糊一点,但是也不失为一种良好的解决方案。并且相对于GAN的暴力求解,VAE的建模思路无疑要复杂的多,它更能体现理科思维的艺术感。

3)VAE初识

想象这样一个网络,输入是一组全部为一的向量,目标是一张人脸,经过好多好多轮的训练。我们只要输入这个全部唯一的向量就可以得到这张你熟悉的脸。其实这是因为在训练的过程中,我们通过不断地训练,网络已经将这张人脸图片的参数保存起来了。

VAE变分自编码器

这个工作其实已经可以看出他的意义所在了,通过一个网络,将一个高维空间的人脸映射为低维空间的一个向量。那么如果我将这个向量定义为四维,采用one-hot的表达方式表达四张不同的脸,那么这个网络就可以表达四个脸,emm,你输入不同的数据,他就会输出不同的脸来。

VAE变分自编码器

你也许会说,那这个几维向量又代表什么呢?如果每增加一个脸就要相应增加空间的维度,那么这个过程也就太不科学了吧。嗯,科学的是,以上只是我随手为了方便大家理解举的例子,其实,在实际应用中,这个维度往往代表的是决定最后成型的各个因素,大家往往称之为隐形因素,也就是在大量的博客推导中我们所看到的Z。在下面这个图中,我们通过六个因素来描述最终的人脸形状,而这些因素不同的值则代表了不同的特性。

VAE变分自编码器

是不是有朋友会觉得,那你这个VAE到底有什么用呢,就为了把大量的数据存储到网络结构中去呀,当然不能是这么简单的一个事。想象一下,在一个末日大片中,我们需要去搞出一个许多机器人占领世界的场面,但是我们的特效师一张张去画,这无疑会是一个令人头疼的工作,利用VAE,只需要使用有限的数据输入,我们就可以通过隐形参数的调节,获得几乎无限的数量。

有人也许会问了,你为什么可以生成从来没有出现过的图片。这里就要介绍一下VAE中的编码器对于每个隐性参数他不会去只生成固定的一个数,而是会产生一个置信分布区间,这是一种连续的表达方式,通过采样,我们就可以获得许多从来没有见过的数据了。

VAE变分自编码器

这一篇先到这里,更多内容请阅读《VAE全面理解(下)》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201011.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:07
下一篇 2026年3月20日 上午10:07


相关推荐

  • Python中字符串的Format用法。

    Python中字符串的Format用法。一、例子:二、结果:

    2022年7月5日
    23
  • 面试必备:秒杀场景九个细节

    面试必备:秒杀场景九个细节

    2022年2月19日
    51
  • android 功耗测试不通过,手机功耗测试

    android 功耗测试不通过,手机功耗测试和您一起终身学习 这里是程序员 Android 本篇文章主要介绍 Android 开发中的部分功耗知识点 通过阅读本篇文章 您将收获以下内容 1 测试功耗手机配置 2 飞行模式待机功耗 3 单 SIM 卡实网待机功耗 4 双 SIM 卡实网待机功耗 5 单 SIM 卡实网待机 数据连接功耗 6 单 SIM 卡待机 WIFI BT GPS 功耗 7 通话电流功耗 8 home 界面 idle 电流功耗 9 home 界面 idle

    2026年3月19日
    2
  • java常量的定义

    java常量的定义在Java语言中,主要是利用final关键字来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:finaldoublePI=3.1315。在定义这个常量时,需要注意如下内容:一是常量在定义的时候,就需要对常量进行初始化。也就是说,必须要在常量声明时对其进行初始化。都跟局部变量或者成员变量不同。当在常量定义的时候初始化过后,在应用程序中就无法再次对这

    2022年7月8日
    24
  • 4. 在Ubuntu20.04安装Anaconda Pytorch Pycharm

    4. 在Ubuntu20.04安装Anaconda Pytorch Pycharm官网 https www jetbrains com pycharm download section linux 4 所有程序的快捷方式都在 usr share applications 文件夹下 将 jetbrains pycharm ce desktop 复制到桌面 清华镜像 https mirrors tuna tsinghua edu cn anaconda archive 默认安装路径在 home username Anaconda 直接回车安装在默认路径

    2026年3月20日
    2
  • OIDC认证+授权

    OIDC认证+授权五分钟理解什么是 OIDC OpenIDConnec 什么是 OIDC OIDC 的全称是 OpenIDConnec 是一套基于 OAuth2 0 的认证 授权协议 用于用户身份认证 将用户数据安全地暴露给第三方 OIDC 与 OAuth2 0 有何不同 OAuth2 0 是用于授权的行业标准协议 OAuth2 0 致力于简化客户端开发人员的工作 同时为 Web 应用程序 桌面应用程序 移动电话和物联网设备提供特定的授权流程 以上是 OAuth2 0 的官方定义 我们举一

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号