通过代码学习 VQ-VAE

本文深入探讨VQ-VAE,一种离散化变分自编码器,通过分析DeepMind的工作和一个简单的GitHub实现,揭示其编码、解码和矢量量化过程,以及损失函数的作用,并探讨其在图像表示学习的应用。
摘要由CSDN通过智能技术生成

VQ-VAE(Vector Quantised Variational AutoEncoder,矢量量化变分自动编码)是【1】提出的一种离散化VAE方案,近来【2】应用VQ-VAE得到了媲美于BigGan的生成模型。由此可见, VQ-VAE 有着强大的潜力,且【1】和【2】皆为DeepMind的作品,让我们通过代码来认识它,学习它。

一、简介

光看论文一知半解,需要看看它的实现。我在GitHub中找到一个很简单的代码【3】,不妨一起研究研究。以下叙述是结合【3】的实现一起叙述的。
VQ-VAE属于VAE范畴,它有着与一般VAE都有的Encoder、code(编码)和Decoder,而不同之处在于其code并不是由Encoder直接输出得到,而是经过了一个矢量量化后才得到的,其结构图如下:
在这里插入图片描述
图1 VQ-VAE结构图【3】
在这里插入图片描述
图2 VQ-VAE数据流图【1】

结合 图1、图2 叙述其工作流程

  1. 输入x,其数据结构为[B,3,32,32],由于【3】采用了CIFAR10作为训练集,因此输入参数如此,B是batch的数量;
  2. 经过Encoder,得到 Z e ( x ) Z_e(x) Ze(x), 其结构为 [B, C=D, H, W],其中C是指编码器的Conv网络输出的Channels 的数量,而D是指矢量量化中矢量的维度,也就是后续查表(Embedding)所存储矢量的维度,另外,H,W表示输入图像经编码器处理后的长和宽,本例中,编码器输入是32 * 32,输出时为8 * 8,即H=8, W=8;
  3. Z e ( x ) Z_e(x) Ze(x) 变形为 [B * H * W, D],即每一个图片有 H*W 个编码,每个编码是D维,计算这些编码(B * H * W)与 Embedding 中 K 个矢量(在【3】中 K=512,表示矢量量化编码的矢量个数)之间的距离,通过最近邻算法构成如下映射:
    q ( z = k ∣ x ) = { 1 for  k = arg ⁡ min ⁡ j ∥ Z e ( x ) − e j ∥ 2 0 otherwise ( 1 ) q(z=k|x)=\left\{ \begin{matrix} 1 & \text{for } k=\arg\min_j \Vert Z_e(x)-e_j\Vert_2 \\ 0 & \text{otherwise} \\ \end{matrix}\right. \qquad (1) q(z=kx)={ 10for k=argminjZe(x)ej2otherwise(1)
    公式(1)表示当输入为 x x x 时, z = k z=k z=k 的概率是 :1)当 k k k 是矢量序列 { e 1 , e 2 , ⋯   , e K } \{e_1,e_2,\cdots,e_K\} { e1,e2,,eK}中与 Z e ( x ) Z_e(x) Ze(x) 最近的矢量的下标时,条件概率为1;2)否则为0。这里的矢量距离度量采用常见的欧拉距离 ∥ ⋅ ∥ 2 \Vert \cdot \Vert_2 2,公式(1)便是最近邻算法的实现。
    z q ( x ) = e k  where  k = arg ⁡ min ⁡ j ∥ Z e ( x ) − e j ∥ 2 ( 2 ) z_q(x)=e_k \ \text{where} \ k=\arg\min_j \Vert Z_e(x)-e_j\Vert_2 \qquad(2) zq(x)=ek where k=arg
  • 41
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
音乐转换器是一种能够生成具有长期结构的音乐的技术。传统上,音乐生成模型主要依赖于自回归模型,即根据前面的音符预测下一个音符。这种方法很难捕捉到音乐的长期结构,因为它只关注于当前音符与前面音符的关系。 然而,音乐转换器采用了一种全新的方法。它将音乐的生成问题转化为基于自注意力机制的序列到序列问题。自注意力机制允许模型在生成每个音符时考虑到整个音乐序列的信息,而不仅仅是前面的音符。 此外,音乐转换器还引入了一种基于位置编码和层归一化的技术,来增强模型对音乐序列的表征能力和泛化能力。位置编码在序列中为每个位置分配一个向量,以提供位置信息。而层归一化则可以确保模型的每一层都保持相似的输出分布,从而提高模型的训练稳定性和生成效果。 通过这些创新技术的运用,音乐转换器能够更好地捕捉到音乐的长期结构。它可以生成具有旋律、和声和节奏等多个音乐要素的音乐片段,并且这些片段之间能够形成完整的结构,如引言、主题、发展和回旋等。 总之,音乐转换器是一种利用自注意力机制、位置编码和层归一化等技术生成具有长期结构的音乐的方法。它的创新之处在于能够全局考虑音乐序列的信息,并能够生成具有完整结构的音乐片段。这使得音乐转换器成为一个有潜力的工具,在音乐创作和生成领域有着广阔的应用前景。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值