生成模型 VQVAE:Neural Discrete Representation Learning

news2024/11/16 0:44:14

注:加粗+下划线名词详解见文章末

了解VQGAN之前,还学习了VQVAE(Vector QuantisedVariational AutoEncoder))这篇论文Neural Discrete Representation Learning,看了几个不错的学习视频 进行了深入了解

VQVAE的思想来源 vector quantisation (VQ) 向量矢量化 

VQVAE的核心思想是:在无监督预训练中学到有用的表征,即学习一个离散的潜在表征,用于规避VAE framework中出现的posterior collapse 后验坍塌问题

VQVAE和VAE 的不同点在于

1编码器的输出是离散编码的而不是连续编码

2 先验是学习的(一个离散的类别分布)而不是静态的(vae 的先验(p(z)是一个标准的正态分布)

VQ-VAE(Vector Quantized Variational Autoencoder)模型的主要贡献,具体可以分解为以下几点:

  1. 引入VQ-VAE模型
    • 简单性:VQ-VAE模型设计得相对简单。
    • 使用离散隐变量:与许多其他生成模型(如传统的VAE)使用连续隐变量不同,VQ-VAE采用离散隐变量。这种离散性有助于模型学习到更加稳定和可解释的表示。
    • 避免“后验坍塌”:VQ-VAE由于其特殊的离散性和训练机制,有效避免了在训练过程中常见的“后验坍塌”问题,即编码器输出的后验分布过早地坍塌到先验分布,导致隐变量无法有效编码输入数据的信息。
    • 无方差问题:由于使用离散隐变量,VQ-VAE在训练过程中不会遇到与连续隐变量相关的方差问题。
  2. 性能表现
    • 与连续模型相当的对数似然度:研究表明,尽管VQ-VAE使用离散隐变量,但其在对数似然度这一指标上的表现与连续隐变量的模型(如传统的VAE)相当,甚至可能更优。
  3. 高质量的样本生成
    • 搭配强大的先验分布:当VQ-VAE模型与强大的先验分布(如自回归模型或流模型)结合使用时,能够在多种应用(如语音和视频生成)中生成连贯且高质量的样本。
  4. 无监督学习的应用
    • 通过原始语音学习语言:研究表明,VQ-VAE模型能够在没有任何监督的情况下,通过原始语音数据学习到语言结构,展示了其强大的无监督学习能力。
    • 无监督说话人转换:此外,VQ-VAE还被应用于无监督说话人转换任务中,展示了其在实际应用中的潜力和价值。

VQ-VAE 方法

3.1Discrete Latent variables

离散潜变量(Discrete Latent Variables)在生成模型中,特别是在变分自编码器(VAE)的变种如Vector Quantized Variational Autoencoder(VQ-VAE)中,扮演着重要角色。为了更好地理解这一概念,我们可以从以下几个方面深入:

1. 潜在嵌入空间 e

  • 定义:首先,我们定义了一个潜在嵌入空间 e∈RK×D,其中 K 是嵌入向量的数量(即离散潜变量的类别数),D 是每个嵌入向量 ei​ 的维度。这个空间包含了 K 个可能的嵌入向量,每个向量都是 D 维的。

  • 物理意义:这些嵌入向量可以被视为“代码本”中的条目,模型通过学习这些条目来有效地表示输入数据 x 的关键特征。

2. 编码器与离散潜变量的计算

  • 编码器输出:给定输入 x,编码器 ze​(x) 产生一个连续的表示(通常是一个向量),这个表示在训练过程中会尝试接近某个嵌入向量。

  • 最近邻查找:然后,通过比较编码器输出与嵌入空间 e 中的所有向量,找到最近的嵌入向量 ek​。这个过程通常通过计算欧几里得距离或余弦相似度来实现。

  • 离散潜变量 z:找到的最近嵌入向量的索引 k 被用作离散潜变量 z 的值。因此,z 是一个整数,表示选择了哪个嵌入向量。

3. 解码器与重构

  • 解码器输入:解码器的输入是找到的嵌入向量 ek​,而不是编码器的原始输出。这意味着解码器直接基于离散的、量化的表示来重构输入 x。

  • 重构过程:解码器通过学习如何根据嵌入向量 ek​ 生成接近原始输入 x 的输出来训练。

4. 后验分类分布 q(z|x)

  • 定义:在VQ-VAE中,后验分布 q(z∣x) 通常被简化为一个one-hot分布,其中只有一个元素为1(对应于最近的嵌入向量的索引),其余元素为0。

  • 解释:这种简化的后验分布反映了模型对输入 x 潜在表示的确定性选择。在训练过程中,模型试图最大化这种选择的准确性,即确保编码器输出尽可能接近其最近的嵌入向量。

5. 模型的完整性与训练

  • 参数集:模型的完整参数集包括编码器的参数、解码器的参数以及嵌入空间 e 中的嵌入向量本身。

  • 训练目标:训练目标通常包括两部分:重构损失(确保解码器能够准确重构输入)和嵌入损失(鼓励编码器输出接近某个嵌入向量)。此外,还可能包括正则化项来防止过拟合。

3.2 学习

总训练目标为:

 

我们详细探讨了VQ-VAE(Vector Quantized Variational Autoencoder)模型的学习过程和训练目标。以下是对这段描述的逐点理解:

1. 梯度估计

  • 直通梯度估计:由于VQ-VAE中的量化操作(将连续编码器输出映射到最近的嵌入向量)是不可微的,因此不能直接计算梯度。为了绕过这个问题,作者使用了类似于直通估计器(Straight-Through Estimator, STE)的技巧。在前向传播时,使用量化后的嵌入向量 zq​(x) 作为解码器的输入;在后向传播时,将梯度 ∇z​L(关于解码器输入的梯度)直接传递给编码器的输出 ze​(x),就好像量化操作是可微的一样。这种方法允许梯度通过量化层进行反向传播,尽管它实际上并不准确反映真实的梯度。

2. 损失函数

  • 总损失函数:VQ-VAE的训练目标由三个部分组成,每个部分针对不同的模型组件进行优化。
    • 重构损失(第一项):优化解码器和编码器(通过直通梯度估计)。这个损失项鼓励解码器根据量化后的嵌入向量 zq​(x) 重构输入 x,同时编码器通过调整其输出 ze​(x) 来最小化这个重构误差。
    • 嵌入损失(第二项):仅用于更新嵌入向量 ei​。这个损失项使用 l2​ 误差将嵌入向量拉向编码器的输出 ze​(x),从而优化嵌入空间。由于这个损失项只影响嵌入向量,因此在计算时使用了 stopgradient 运算符来阻止梯度流向编码器。
    • 承诺损失(第三项):确保编码器的输出不会过度偏离嵌入空间。这个损失项防止编码器输出的方差过大,从而确保编码器能够“承诺”到嵌入空间上。

3. 训练细节

  • β 值:承诺损失的权重 β 在不同实验中表现出很强的稳健性,作者在所有实验中使用 β = 0.25。然而,这个值通常取决于重构损失的规模,可能需要针对特定任务进行调整。
  • KL 项的忽略:由于假设 z 有一个统一的先验,并且量化操作使得后验 q(z∣x) 实际上是一个 one-hot 分布,因此 KL 散度项在训练过程中是常数,可以忽略不计。

4. 总结

VQ-VAE通过结合直通梯度估计和特定的损失函数,有效地解决了离散潜变量在训练中的梯度问题,并实现了对编码器、解码器和嵌入空间的联合优化。这种方法不仅避免了后验坍塌的问题,还能够在多种应用中生成高质量、连贯的样本。

3.3 先验

离散潜在变量 p(z) 上的先验分布是一种类别分布,并且可以通过依赖于特征图中的其他 z 来实现自回归。在训练 VQ-VAE 时,先验保持恒定且均匀。训练后,我们在 z 上拟合自回归分布 p(z),以便我们可以通过ancestral sampling生成 x。我们对图像的离散潜在特征使用 PixelCNN,对原始音频使用 WaveNet。联合训练先验和 VQ-VAE,这可以加强我们的结果,留待未来的研究。

后验坍塌

原论文Using the VQ method allows the model to circumvent issues of “posterior collapse” -— where the latents are ignored when they are paired with a powerful autoregressive decoder -— typically observed in the VAE framework.

后验坍塌指的是在训练过程中,VAE的编码器(Encoder)产生的后验分布q(z|x)(用于近似真实的后验分布p(z|x))逐渐退化为一个与先验分布p(z)非常接近的分布,甚至在某些极端情况下,两者几乎完全相同。这导致隐变量z无法有效地捕捉到输入数据x的信息,进而使得解码器(Decoder)在重构输入时几乎不依赖于隐变量z,而是直接基于输入数据x进行重构。

后验坍塌的原因主要可以归结为以下几点:

  1. ELBO目标函数的优化:VAE通过优化证据下界(ELBO)来训练模型。ELBO由两部分组成:重构项(Reconstruction term)和KL散度项(KL term)。重构项鼓励解码器生成与输入相似的输出,而KL散度项则鼓励编码器的后验分布与先验分布相似。然而,在实际训练中,KL散度项容易变得非常小甚至为0,导致后验分布坍塌到先验分布。

  2. 强大的解码器:当解码器非常强大时,它可能能够仅通过输入数据x的重构误差来优化模型,而不需要依赖隐变量z。这导致KL散度项在优化过程中逐渐被忽略,进而引发后验坍塌。

  3. 模型容量不平衡:编码器和解码器之间的容量不平衡也可能导致后验坍塌。如果解码器过于强大而编码器相对较弱,解码器可能会忽略编码器的输出,直接基于输入数据进行重构。

学习视频 

1 简要了解[论文简析]VQ-VAE:Neural discrete representation learning[1711.00937]_哔哩哔哩_bilibili

2 详细了解 

68、VQVAE预训练模型的论文原理及PyTorch代码逐行讲解_哔哩哔哩_bilibili

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

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

相关文章

搜狐视频的长期主义,让高精尖知识走近普罗大众

“如果你忽略了量子力学,就没有稳定的电磁系统。” “没有结构,我们就像灰烬一样。” 近日,在一场对谈中,张朝阳与美国哈佛大学教授、物理系系主任,美国国家科学院院士、狄拉克奖与基础物理学突破奖获得者库姆伦瓦法…

Matlab编程资源库(11)多项式计算

一、多项式的四则运算 1.多项式的加减运算 2.多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里,P1、P2是两个多项式系数向量。 3.多项式除法 函数[Q,r]deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项…

这么发sci论文,审稿人看了都流泪

前言 早上起来,忐忑的你打开审稿人的意见,看到这样一条评语,我们表述不够精准,口语化严重,学视性较弱。 你瞬间就清醒了,只能再次打开不知修改了多少遍的终稿,再次修改,心里想着&a…

魔法项链-小红书2024笔试(codefun2000)

题目链接 魔法项链-小红书2024笔试(codefun2000) 题目内容 你有一个魔法项链,现在你想要强化一下这件装备。你可以将魔法项链看做一条从头到尾串有 n 个不同魔力值宝石的绳子。根据你目前的冒险等级,你可以仅将其中的一颗宝石的魔力值强化并改变为 v 。…

基于OpenCV C++的网络实时视频流传输——Windows下使用TCP/IP编程原理

1.TCP/IP编程 1.1 概念 IP 是英文 Internet Protocol (网络之间互连的协议)的缩写,也就是为计算机网络相互连接进行通信而设计的协议。任一系统,只要遵守 IP协议就可以与因特网互连互通。 所谓IP地址就是给每个遵循tcp/ip协议连…

书生大模型实战营--L1关卡-Llamaindex RAG实践

一、安装llamaindex库 pip install llama-index pip install llama-index-embeddings-huggingface 二、问2024年巴黎奥运会 中国队获得几枚金牌,无法回答该问题 三、构建Llamaindex RAG 1、初始化llm 2、构建词向量模型 下载模型:git clone https://…

【论文阅读笔记】Lite-SAM Is Actually What You Need for Segment Everything

1.论文介绍 Lite-SAM Is Actually What You Need for Segment Everything Lite-SAM是您实际上所需的分割一切的工具 2024年 arxiv Paper 2.摘要 Segment Anything模型(SAM)以其优越的性能给分割领域带来了重大变化,但其对计算资源的巨大需…

设置浏览器ie兼容模式

点击设置 设置IE模式

VMware安装(有的时候启动就蓝屏建议换VM版本)

当你开始使用虚拟化技术来管理和运行多个操作系统时,VMware 是一个强大且广泛使用的选择。本篇博客将指导你如何安装 VMware Workstation Pro,这是一个功能强大的虚拟机软件,适用于个人和专业用户。 一、下载 VMware Workstation Pro 访问官网…

使用EasyAR打包安卓操作注意

EasyAR for Scene 4.6.3 丨Unity2020.3.15f2 打包Unity注意事项 一、默认渲染管线 官方参考链接:ARFoundation 简单注意 1.打包设置为Android平台 2.PackageName和EasyAR中保持一致 3.Scripting Backend设置为IL2CPP,以及设置为ARM64 4.取消Auto …

【虚拟化】虚拟化简介 | Hypervisor介绍

目录 一、什么是虚拟化? 二、虚拟化的优点 三、Hypervisor 3.1 Hypervisor概述 3.2 Hypervisor 分类 3.3 Hypervisor 与虚拟机协作技术路线 (1) 全虚拟化 (2) 硬件辅助虚拟化 (3) 半虚…

电梯节能设备 安装现场

夏天到了,高温来了。电梯修理升级,安装 电梯节能设备。可立即降温, 节能率达 15%-45%。 为电梯加装节能设备,都在行动。 跟【523】一起绿色低碳范儿,欢迎私询哦

springboot高校学生技能成长档案管理系统71080

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 高校学生技能成长档案管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2 数据修改…

Hbase简介和快速入门

一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的,一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文,论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…

玩转usbserver之usbserver日志报警

一、graylog 介绍 graylog是一个简单易用、功能较全面的日志管理工具,graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比…

maven项目如何将自定义的jar引入本地仓中,并编译通过

只需3步&#xff0c;轻松实现自定义jar包引入本地仓。 1、在pom.xml文件中加入坐标 <dependency><groupId>com.hicap.echannelservice.ncclib</groupId> //随便写<artifactId>ncclib-jar</artifactId> //随便写<version>1.0</version…

Qwen2模型Text2SQL微调​以及GGUF量化

Qwen2-1.5B微调 准备python环境 conda create --name llama_factory python3.11 conda activate llama_factory部署llama-factory git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip3 install -e ".[torch,metrics]" # 如果…

【全面讲解下Docker in Docker的原理与实践】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉目录 👉前言👉原理👉实践👉安全和最佳实践👉前言 🦛…

【保姆级教程】免费内网穿透,手把手搭建,三步搞定

在内网部署的一个应用&#xff0c;想分享给外网的小伙伴玩玩&#xff1f; 学校实验室有一台高性能服务器&#xff0c;在外网就无法使用&#xff1f; 来吧&#xff0c;内网穿透&#xff0c;了解一下&#xff1f; 1. 关于内网穿透 1.1 什么是内网穿透 且看百度百科的说法&am…

【AI人工智能】文心智能体,00后疯感工牌生成器,低代码工作流的简单应用以及图片快速响应解决方案,干货满满,不容错过哦

背景 文心智能体平台&#xff0c;开启新一轮活动&#xff0c;超级创造营持续百日活动。 在AI 浪潮席卷的今天&#xff0c;如雨后春笋般丛生的 AI 应用&#xff0c;昭告着时代风口显然已随之到来。 如何能把握住时代红利&#xff0c;占据风口&#xff0c;甚至打造新风向&#x…