Paper - Neural Discrete Representation Learning (VQ-VAE) 论文简读

news2024/9/21 10:39:08

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/133992971

VQ-VAE 是基于变分自编码器(VAE)的生成模型,可以学习离散的潜在表示。VQ-VAE 的主要创新是引入了一个向量量化(VQ)层,将连续的编码器,输出映射到离散的潜在空间。VQ 层由一组可学习的向量组成,称为代码本 (Coding Book)。编码器输出的每个部分都被替换为最接近的代码本向量,从而实现了离散化。VQ-VAE 使用直接优化目标来训练编码器和解码器,而不是使用重参数化技巧或离散梯度估计。VQ-VAE 还使用了一个自回归模型,如 PixelCNN,来对离散的潜在变量进行建模,从而提高了生成质量和多样性。VQ-VAE 在图像和语音生成任务上表现出了优异的性能,证明了能够学习有意义和可控制的潜在表示。

VQ-VAE: Neural Discrete Representation Learning,神经离散表征学习

  • Vector Quantised Variational AutoEncoder (VQ-VAE),矢量量化变分自编码器

大模型,预训练,自监督学习。高维信息(图像或音频)更加稀疏,信息压缩,隐空间,特征紧凑,VQ-VAE。

发表于 2018.5.30,作者 Google DeepMind - Aaron

OpenAI 在 DALLE 中,也使用了 VQ-VAE 技术。

GitHub 源码:

  • DeepMind Tensorflow
  • PyTorch

VQ-VAE

VQ-VAE 与 VAE 不同:

  1. 编码器网络产生的是离散 (Discrete) 的编码,而不是连续的编码。
  2. 先验 (Prior) 是可学习的而不是静态的。

避免后验坍塌 (Posterior Collapse),和方差过大 (Large Variance),同时,可生成高质量的不同模态的对象。

VAE:编码器网络 (Encoder Network) q ( z ∣ x ) q(z|x) q(zx)、先验分布 (Prior Distribution) p ( z ) p(z) p(z)、分布解码 (Distribution Decoder) p ( x ∣ z ) p(x|z) p(xz)

  • 后验和先验,都是标准的对角协方差 (Diagonal Covariance) 的高斯分布

VQ (Vector Quantisation): 隐变量不是从连续的高斯分布中生成,而是从离散的分布中生成。

  • 后验和先验,都是类别 (Categorical) 分布,都是索引,从 Embedding Table 中选择 Embedding。

离散的隐变量 (Discrete Latent variables)

隐变量空间 e ∈ R K x D e \in R^{KxD} eRKxD ,K 个 Embedding Vectors,输入 x,经过 Encoder,输出 z e ( x ) z_{e}(x) ze(x),后验类别分布 q ( z ∣ x ) q(z|x) q(zx) 概率被定义成 one-hot 的形式:

Img1

即 k 概率为 1,其他都是 0,最近邻查找,编码器输出的是离散的索引,one-hot vector 与 embedding table 做矩阵乘法。

Img2

编码器的输出 k,解码器的输入是 e k e_{k} ek 。VAE loss 一般分为 2 个,一个是重构 loss,一个是 KL 散度 loss,量化后验分布与先验分布的距离。VQ-VAE 假设 先验分布是均匀分布,后验分布是类别分布,KL 散度是 log(k) 常数,可以忽略。

argmin 操作是不可导的,让解码器的重构 loss,传递至 编码器,直接将 解码器的梯度复制 (copy gradients) 到编码器。编码器的输出维度 z e ( x ) z_{e}(x) ze(x),与解码器的输入维度一致,这样梯度才能复制。直接复制,embedding space 无法训练,还需要其他 Loss。

Loss 由 3 个部分组成:

  1. 重构 Loss: l o g   p ( x ∣ z q ( x ) ) log\ p(x|z_{q}(x)) log p(xzq(x)),可以优化到解码器和编码器,梯度直接 copy。
  2. 字典学习算法 (Dictionary Learning Algorithm): ∣ ∣ s g [ z e ( x ) − e ] ∣ ∣ 2 2 ||sg[z_{e}(x)-e]||^{2}_{2} ∣∣sg[ze(x)e]22,sg 表示 stopgradient 梯度截断,embedding table 逼近编码器的输出。
  3. 与字典学习算法相反,让 e 逼近 z e ( x ) z_{e}(x) ze(x),其中 β \beta β 小于 1,建议参数是 0.25。

Overall Loss Function:

在这里插入图片描述

两个类别分布的 KL 散度是常数 log(k),即没有影响,不需要反传。重构 Loss,不同类型的数据不同,图像数据即 MSE Loss,即可。

评估 VQ-VAE 的模型训练效果,监督信号判断 VQ-VAE 的效果,自编码器包括编码和解码,经过编码器,输出编码,进行重构,判断输出图像的相似度。如果,训练不够充分或坍塌,无论输入什么图像,都会映射到相同的类别,可以通过编码器的信息熵,观测 VQ-VAE 的训练效果,即 − p   l o g ( p ) -p\ log(p) p log(p) ,均匀分布是最大,如果值很小,则可能出现坍塌。VQ-VAE 如何生成新的图像,即通过编码生成不同的图像。无监督的生成,大规模的图像预训练 VQ-VAE 之后,使用类别索引,与另外一个模型,对于文本进行自回归的建模,随机生成;条件生成对于离散的索引进行建模,文本作为条件输入,对于隐空间模型进行建模。即两个阶段,大规模预训练图像,再使用文本条件与离散序列对齐。

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

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

相关文章

【Python】基于非侵入式负荷检测与分解的电力数据挖掘

文章目录 前言一、案例背景二、分析目标三、分析过程四、数据准备4.1 数据探索4.2 缺失值处理 五、属性构造5.1 设备数据5.2 周波数据 六、模型训练七、性能度量文末送书:《Python数据挖掘:入门、进阶与实用案例分析》 前言 本案例将根据已收集到的电力…

Nodejs和Node-red的关系

NPM相关知识 npm概念 npm:Node Package Manager,Node包管理器。是Node.js默认的,以JavaScript编写的软件包管理系统。 npm工作原理 npm的操作原理是各个官网使用npm publish把代码提交到npm的服务器,其他人想要使用这些代码&am…

20 行为型模式-策略模式

1 策略模式概述 策略模式(strategy pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 2 策略模式原理 3 策略模式实现 策略模式的本质是通过Context类…

高数基础常用公式(持续更新)

1、求根公式 2、三角函数特殊度数对应值 3、三角函数常用公式

4个方法,提高excel表格制作效率

使用excell文件的时候总是会少不了要大批量的数据进行操作,今天分享4个快速使用excel操作的小技巧。希望能够帮大家提高excel制作效率。 技巧一:快速求和 当你想要分别得到行列的总和,我们可以选中表格数据以及总和的单元格,按住…

SAP-PP-查询报工数据

有两个报表可以查询报工数据,COOIS和COHV 两个程序大致差不多 都需要在清单里选择工序或者确认, 工序查询的是有效的报工,而确认查询到的是所有报工,包括冲销的报工, 当然也可以在底表中查询,底表包括&am…

迎重阳,话养老:平安养老险如何助力国民“养老梦”?

10月23日,我们将迎来传统节日重阳节,又称敬老节,自古就有祭祖、登高、赏菊三大风俗,流传至今,已成为人们孝老敬老的重要节日。 随着老龄化日益加深,在“敬老”的同时如何“备老”成为人民群众长期热议的话题…

储能PCS的负载测试需求

储能PCS测试应覆盖的最小和最大负载范围,以确保其在不同负载条件下的正常运行,测试时可以逐步增加负载,直到达到最大负载,然后逐步减小负载,直到达到最小负载。测试应涵盖不同类型的负载,例如恒定负载、脉冲…

对于构建自定义协议的思考(Java)

工作转眼也1年时间了,回顾历程,协议占了绝大多数 JSON(比较常见的通信文本了),protoBuf(小编有写过教程),自定义协议(字节拼接,在一些iot领域中的标准几乎都…

【Java网络原理】 四

本文主要介绍了TCP/IP五层协议中的应用层常见的数组组织格式和传输层UDP协议。 一.应用层 1.网络通信数据的实质 网络上传输的数据,本质就是字符串(准确的说,是二进制的字符串) Java中的各种对象,是无法直接传输的 &…

共享WiFi贴项目地推技巧,轻松学会推广!

共享WiFi贴代理是一种热门的赚钱方式,通过推广共享WiFi贴来获取收益。但要想在竞争激烈的市场中脱颖而出并赚到钱,并不是一件容易的事情。在本文中,我们将介绍一些推广及赚钱的方法。 选择合适的位置是推广共享WiFi贴的关键。你需要选择人流量…

SpringAOP源码解析之advice执行顺序(三)

上一章我们分析了Aspect中advice的排序为Around.class, Before.class, After.class, AfterReturning.class, AfterThrowing.class,然后advice真正的执行顺序是什么?多个Aspect之间的执行顺序又是什么?就是我们本章探讨的问题。 准备工作 既…

QML(26)——多层qml界面传递信号

目录 使用场景传统方式高效方式代码效果展示 使用场景 界面嵌套关系如下 #mermaid-svg-Pt8AQGPjE5lV7nJh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Pt8AQGPjE5lV7nJh .error-icon{fill:#552222;}#mermaid-svg…

2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 C题 影视评价与定制 原题再现 中华人民共和国成立以来,特别是政治改革和经济开放后,随着国家经济的增长、科技的发展和人民生活水平的提高,中国广播电视媒体取得了显著的成就,并得到了迅速的发展…

如何通过在线培训考试系统进行远程教育

随着互联网技术的不断发展,远程教育正在成为一种新型的学习方式,它使学生能够在任何地点、任何时间通过在线培训考试系统接受教育。 利用在线培训考试系统进行远程教育具有很大的灵活性。学生可以根据自己的时间和需求自由选择课程,无需受制…

MySQL进阶(日志)——MySQL的日志 bin log (归档日志) 事务日志redo log(重做日志) undo log(回滚日志)

前言 MySQL最为最流行的开源数据库,其重要性不言而喻,也是大多数程序员接触的第一款数据库,深入认识和理解MySQL也比较重要。 本篇博客阐述MySQL的日志,介绍重要的bin log (归档日志) 、 事务日志redo log(重做日志) 、 undo lo…

C语言系统化精讲(四):C语言变量和数据类型-下篇

文章目录 一、C语言中的小数1.1 小数的输出1.2 小数的后缀1.3 小数和整数相互赋值 二、在C语言中使用英文字符2.1 字符的表示2.2 字符的输出2.3 字符与整数2.4 C语言转义字符 四、C语言布尔类型(_BOOL)五、补充:C语言中的几个重要概念5.1 标识…

损失函数总结(六):KLDivLoss、BCEWithLogitsLoss

损失函数总结(六):KLDivLoss、BCEWithLogitsLoss 1 引言2 损失函数2.1 KLDivLoss2.2 BCEWithLogitsLoss 3 总结 1 引言 在前面的文章中已经介绍了介绍了一系列损失函数 (L1Loss、MSELoss、BCELoss、CrossEntropyLoss、NLLLoss、CTCLoss、Poi…

【mysql】实现设置表中所有数据的update_time,要求每1000条设置在一天

实现效果示例 执行SQL:(mysql 版本查看: select VERSION() :5.7.36-log) 实现效果: 这里最后一个id 9 > 总条数 6,所以没有更新到,直接手动补下就行 SELECT * FROM my_test S…

Capture One 23 Enterprise 16.3.0.76

Capture One 23 Enterprise是一款图像处理软件,旨在为企业用户提供高效、快速和灵活的工作流程。以下是该软件的主要特点和功能: 强大的图像编辑工具:Capture One 23 Enterprise提供了一系列强大的图像编辑工具,包括色彩校正、曲…