河北做网站哪家公司好,jsp做网站实例,宁夏建设学院官方网站,relive模板wordpress分享#x1f33a;历史文章列表#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络#xff08;前馈神经网络与反馈神经网络#xff09;、常见算法概要汇总 万字长…历史文章列表 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络前馈神经网络与反馈神经网络、常见算法概要汇总 万字长文解读深度学习——卷积神经网络CNN 万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN 万字长文解读深度学习——Transformer 深度学习——3种常见的Transformer位置编码【sin/cos、基于频率的二维位置编码2D Frequency Embeddings、RoPE】 万字长文解读深度学习——GPT、BERT、T5 万字长文解读深度学习——ViT、ViLT、DiT DiTDiffusion Transformer详解——AIGC时代的新宠儿 万字长文解读深度学习——CLIP、BLIP 万字长文解读深度学习——AE、VAE 万字长文解读深度学习——GAN 万字长文解读深度学习——训练、优化、部署细节 万字长文解读深度学习——多模态模型BLIP2 万字长文解读深度学习——VQ-VAE和VQ-VAE-2 文章目录 前情提要VAEVQ-VAEVAE vs. VQ-VAE区别不可导问题及解决方法 dVAEVQ-VAE 和 dVAE 的对比背景VQ-VAE 的停止梯度策略局限性 dVAE的结构dVAE 引入 Gumbel-Softmax 替代停止梯度策略Gumbel 分布Gumbel和高斯分布对比 Gumbel-Softmax 采样过程Gumbel-Max Trick与Gumbel-Softmax区别 采样过程详细介绍端到端优化的实现替代的好处 前情提要
VAE
深度学习——AE、VAE
AE 和 VAE 在结构、目的和优化方式上存在多个重要区别
特性AEVAE编码器输出固定的低维向量确定性的表示隐藏变量的均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2表示潜在空间的分布潜在空间没有明确的分布假设假设潜在空间遵循某种概率分布通常为正态分布解码器从固定低维向量生成输入数据的近似使用 重参数化技巧 从潜在变量的分布中采样再通过解码器生成输入数据的近似损失函数仅有重构损失最小化输入数据与重构数据的差异重构损失 KL 散度既保证数据重构效果又保证潜在空间的分布合理目的数据降维、特征提取或数据去噪生成新数据如图像生成、文本生成等同时保留对输入数据的重构能力生成新数据的能力无法直接生成新数据可以通过在潜在空间中采样生成与训练数据相似的全新数据
VQ-VAE
万字长文解读深度学习——VQ-VAE和VQ-VAE-2
VAE vs. VQ-VAE
区别
需要明白的是VAE的主要作用是生成数据而VQ-VAE的主要作用是压缩、重建数据与AE一样如果需要生成新数据则需要结合 PixelCNN 等生成模型。 VAE 的核心思想是通过编码器学习潜在变量的连续分布通常是高斯分布非离散并从该分布中采样潜在变量 z然后由解码器生成数据。VQ-VAE模型的目标是学习如何将输入数据编码为离散潜在表示并通过解码器重建输入数据量化过程通过最近邻搜索确定嵌入向量是一个确定性操作这一过程并不涉及离散采样。如果需要生成新数据则需要在离散潜在空间中随机采样嵌入向量。VQ-VAE 本身没有内置采样机制通常需要结合 PixelCNN 或PixelSNAIL 等模型来完成离散采样。 不可导问题及解决方法
VAE 通过连续潜在空间和重参数化技巧避免了采样操作的不可导问题。VQ-VAE 的潜在空间是离散的量化过程是不可导的通过在最近邻搜索中使用停止梯度传播来解决不可导问题dVAE中引入Gumbel-Softmax 替代停止梯度。原本的VQ-VAE不涉及生成数据所以不需要采样如果需要生成数据则需要结合 PixelCNN 等生成模型。
VAE 和 VQ-VAE 的不可导问题及解决方法
特性VAEVQ-VAE潜在空间连续空间离散空间不可导问题来源采样操作不可导最近邻搜索不可导解决方法重参数化技巧停止梯度传播实现方式分离随机性直接优化 μ , σ \mu, \sigma μ,σ解码器损失绕过量化过程优化编码器适用场景平滑采样和连续潜在变量建模离散特征学习和高分辨率生成
重新参数化梯度是一种常用于训练变分自编码器VAE等生成模型的技术。它依赖于连续分布的可分解性而 VQ-VAE 的离散分布通过 one-hot 编码或 Codebook 表示无法通过这种方式重新参数化。 VAE 的不可导问题及解决方法 不可导问题 在训练VAE时我们希望从一个分布中采样出一些隐变量以生成模型的输出。然而由于采样操作是不可导的因此通常不能直接对采样操作求梯度。为了解决这个问题我们可以使用重新参数化技术。在 VAE 中潜在变量 z z z 是通过从编码器输出的分布 q ( z ∣ x ) q(z|x) q(z∣x) 中采样得到的 z ∼ N ( μ , σ 2 ) z \sim \mathcal{N}(\mu, \sigma^2) z∼N(μ,σ2) μ \mu μ 和 σ \sigma σ 是编码器生成的分布参数。采样操作引入随机性而随机采样本身不可导因此无法通过梯度反向传播来优化编码器参数。 解决方法重参数化技巧 重新参数化技术的基本思想是将采样过程拆分为两步首先从一个固定的分布中采样一些固定的随机变量然后通过一个确定的函数将这些随机变量转换为我们所需的随机变量。这样我们就可以对这个确定的函数求导从而能够计算出采样操作对于损失函数的梯度。 VAE 通过 重参数化技巧Reparameterization Trick 将采样过程分解为可导部分和不可导部分 分离随机性 采样公式改写为 z μ σ ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z \mu \sigma \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0, 1) zμσ⋅ϵ,ϵ∼N(0,1) ϵ \epsilon ϵ 是标准正态分布的随机噪声采样只发生在 ϵ \epsilon ϵ 中。 μ \mu μ 和 σ \sigma σ 是由编码器网络直接输出的可导。 作用 随机性仅由不可导的 ϵ \epsilon ϵ 控制而 μ \mu μ 和 σ \sigma σ 的梯度可以正常计算从而实现端到端训练。 VQ-VAE 的不可导问题及解决方法 不可导问题 在 VQ-VAE 中潜在变量是通过将编码器输出 z e ( x ) z_e(x) ze(x) 映射到最近的嵌入向量codebook 中的向量得到的 z q ( x ) arg min e k ∥ z e ( x ) − e k ∥ 2 z_q(x) \arg\min_{e_k} \|z_e(x) - e_k\|_2 zq(x)argekmin∥ze(x)−ek∥2 最近邻搜索是一个不可导操作因为argmin或argmax 是一个离散操作涉及离散索引 k k k因此不可导。 解决方法停止梯度传播Stop Gradient VQ-VAE 使用 停止梯度传播Stop Gradient 技巧来解决不可导问题 停止梯度 在计算量化操作时不允许梯度传播到最近邻搜索的部分。假设 z q ( x ) z_q(x) zq(x) 是量化后的嵌入向量VQ-VAE 中的梯度计算会直接将解码器损失作用到编码器输出 z e ( x ) z_e(x) ze(x)而不会涉及量化过程。 公式 z q ( x ) z_q(x) zq(x) 的生成 z q ( x ) e k , k arg min i ∥ z e ( x ) − e i ∥ 2 z_q(x) e_k, \quad k \arg\min_{i} \|z_e(x) - e_i\|_2 zq(x)ek,kargimin∥ze(x)−ei∥2在优化过程中损失的梯度会通过以下方式传播 z q ( x ) z e ( x ) ( e k − z e ( x ) ) . d e t a c h ( ) z_q(x) z_e(x) (e_k - z_e(x)).detach() zq(x)ze(x)(ek−ze(x)).detach() ( e k − z e ( x ) ) . d e t a c h ( ) (e_k - z_e(x)).detach() (ek−ze(x)).detach() 表示停止梯度传播仅用 z e ( x ) z_e(x) ze(x) 来优化编码器。 dVAE dVAE第一次出现是在 Open AI 的 DALL·E 模型论文Zero-Shot Text-to-Image Generation中DALL·E模型是我最近开始研究VAE系列模型的根源论文中并没有详细给出dVAE的模型架构更多详细的dVAE结构强烈推荐下面三篇外文博客 Understanding VQ-VAE (DALL-E Explained Pt. 1) How is it so good ? (DALL-E Explained Pt. 2) How OpenAI’s DALL-E works? Discrete VAEdVAE整体来说与 VQ-VAE 类似主要的区别是
在 VQ-VAE 中使用停止梯度传播来解决最近邻搜索的离散化方法造成的不可导问题。在 dVAE 中使用Gumbel-Softmax为离散变量提供了一种连续化的近似来解决的离散化方法造成的不可导问题。
具体来说Gumbel-Softmax 为离散变量提供了一种连续化的近似使得离散潜变量的采样过程可以进行梯度反向传播而不需要依赖停止梯度策略。dVAE 本身可以独立生成图像不一定需要与生成模型如 PixelCNN 或 Transformer结合使用。
VQ-VAE 和 dVAE 的对比
特性VQ-VAEdVAE离散化方法最近邻搜索Gumbel-Softmax不可导问题解决策略停止梯度传播连续化近似端到端可微性部分可微完全可微训练效率间接优化编码器通过解码器接收反馈高效优化编码器直接接收梯度信号潜变量表示离散嵌入向量平滑 one-hot 表示灵活性完全离散固定 Codebook可调节连续与离散之间的平衡生成能力通常需要结合生成模型如 PixelCNN独立生成能力强适用场景离散建模适合高分辨率图像生成或压缩任务灵活生成适合快速原型开发或连续采样任务
背景VQ-VAE 的停止梯度策略
在 VQ-VAE 中量化操作如最近邻搜索会将连续编码器输出 z e ( x ) z_e(x) ze(x) 映射到离散 Codebook 中的某个嵌入向量 e k e_k ek z q ( x ) e k , k argmin i ∥ z e ( x ) − e i ∥ 2 z_q(x) e_k, \quad k \text{argmin}_i \| z_e(x) - e_i \|_2 zq(x)ek,kargmini∥ze(x)−ei∥2
由于最近邻搜索的离散性梯度无法直接通过离散化操作反向传播到编码器因此 VQ-VAE 使用 停止梯度策略Stop Gradient 来解决不可导问题
解码器的梯度绕过量化操作直接作用于编码器输出 z e ( x ) z_e(x) ze(x)。停止梯度的关键公式 z q ( x ) z e ( x ) ( e k − z e ( x ) ) . d e t a c h ( ) z_q(x) z_e(x) (e_k - z_e(x)).detach() zq(x)ze(x)(ek−ze(x)).detach() ( e k − z e ( x ) ) . d e t a c h ( ) (e_k - z_e(x)).detach() (ek−ze(x)).detach() 表示量化部分的梯度被截断编码器无法接收到量化过程的直接信号。
局限性
停止梯度策略只是一种间接优化编码器无法完全利用量化的反馈信号。这种间接的训练方法可能导致训练效率较低或模型收敛较慢。 dVAE的结构 图片来源
dVAE 引入 Gumbel-Softmax 替代停止梯度策略
论文CATEGORICAL REPARAMETERIZATION WITH GUMBEL-SOFTMAX
Gumbel-Softmax 为离散变量提供了一种连续化的近似使得离散潜变量的采样过程可以进行梯度反向传播而不需要依赖停止梯度策略同时保持端到端可微性。
Gumbel 分布
Gumbel 分布是一种概率分布用于建模极值最大值或最小值的分布情况。它经常在极值理论Extreme Value Theory中使用描述数据集中最大值或最小值的分布特性。具体来说Gumbel(0, 1) 是一种标准化的 Gumbel 分布其位置参数为 0尺度参数为 1。
定义域Gumbel 分布定义在整个实数范围 ( − ∞ , ∞ ) (-\infty, \infty) (−∞,∞)。极值理论Gumbel 分布常用于建模一组数据的极值最大值或最小值。标准化形式Gumbel(0, 1) 位置参数 μ 0 \mu 0 μ0分布的中心在 0。尺度参数 β 1 \beta 1 β1控制分布的离散程度。
Gumbel和高斯分布对比
特点Gumbel 分布高斯分布数据类型离散类别离散分布的采样连续实数值连续分布的采样应用场景离散变量采样如 dVAE, Gumbel-Softmax连续变量采样如 VAE, 正态分布噪声目标极值建模、离散采样数据建模、噪声建模可微性结合 Softmax 可实现连续化支持梯度反传本身是连续分布天然可微尾部行为长尾分布适合极值建模轻尾分布适合一般建模数学特性极值分布理论适合最大值或最小值问题中心极限定理适合数据聚类和分布建模
Gumbel-Softmax 采样过程
使用 Gumbel 分布生成一组噪声样本 对每个类别 i i i 从 Gumbel 分布 Gumbel ( 0 , 1 ) \text{Gumbel}(0, 1) Gumbel(0,1) 中采样噪声 g i g_i gi模拟离散采样中的随机性。 通过 Softmax 函数将这些噪声样本映射到一个类别分布 将 logits类别概率的对数加上 Gumbel 噪声后通过 Softmax 转化为一个概率分布 y i exp ( ( log ( π i ) g i ) / τ ) ∑ j 1 k exp ( ( log ( π j ) g j ) / τ ) y_i \frac{\exp((\log(\pi_i) g_i)/\tau)}{\sum_{j1}^k \exp((\log(\pi_j) g_j)/\tau)} yi∑j1kexp((log(πj)gj)/τ)exp((log(πi)gi)/τ)输出的 y y y 是一个平滑的概率分布近似 one-hot 编码。 温度控制 温度系数 τ \tau τ 控制分布的平滑程度 当 τ → 0 \tau \to 0 τ→0Softmax 逼近 ArgMax输出接近离散 one-hot。当 τ → ∞ \tau \to \infty τ→∞分布接近均匀类别无显著差异。
Gumbel-Max Trick与Gumbel-Softmax区别
特性Gumbel-Max TrickGumbel-Softmax采样目标精确离散采样连续化近似采样输出形式单一类别离散值连续概率分布是否可微不可微可微适用场景需要离散采样的任务深度学习中的端到端训练任务温度参数 τ \tau τ不涉及控制分布的平滑程度推理阶段直接使用通常替换为 argmax \text{argmax} argmax 采样过程详细介绍
这个过程是可微分的因此可以在反向传播中进行梯度计算。
如下图所示 一个图像经 Encoder 编码会生成 32x32 个 embedding embedding 和 codebook 8192 个进行内积 内积再经 Softmax 即可得到在每个 codebook 向量的概率。 dVAE获取图像并输出每个潜在特征的码本向量集上的分类分布 应用 Gumbel Softmax 采样即可获得新的概率分布 然后将概率分布作为权重对相应的 codebook 向量进行累积就可以获得 latent vector。 然后 Decoder 可以基于此 latent vector 重构输出图像。 从Gumbel softmax分布中采样码本向量然后将它们传递到解码器以重建原始的编码图像
在上述的过程中通过添加 Gumbel 噪声的方式进行离散采样可以近似为选择 logits 中概率最大的类别从而提供一种可微分的方式来处理离散采样问题。具体来说其关键为 Gumbel-Max Trick其中 g i g_i gi 是从 Gumbel(0, 1) 分布中采样得到的噪声τ 是温度系数。需要说明的是t 越小此处的 Softmax 就会越逼近于 ArgMax。τ 越大就越接近于均匀分布。这也就引入了训练的一个 Trick训练起始的温度系数 τ 很高在训练的过程中逐渐降低 τ以便其逐渐逼近 ArgMax。在推理阶段就不再需要 Gumbel Softmax直接使用 ArgMax 即可。 图片来源
通过 Gumbel-Softmax编码器输出的 logits 可以生成一个连续近似的 one-hot 表示 y y y公式如下 y i exp ( ( log ( π i ) g i ) / τ ) ∑ j 1 k exp ( ( log ( π j ) g j ) / τ ) , g i ∼ Gumbel ( 0 , 1 ) y_i \frac{\exp((\log(\pi_i) g_i)/\tau)}{\sum_{j1}^k \exp((\log(\pi_j) g_j)/\tau)}, \quad g_i \sim \text{Gumbel}(0, 1) yi∑j1kexp((log(πj)gj)/τ)exp((log(πi)gi)/τ),gi∼Gumbel(0,1) π i \pi_i πi 类别 i i i 的概率表示离散分布中类别 i i i 被选择的概率满足 π i 0 \pi_i 0 πi0 且 ∑ i 1 k π i 1 \sum_{i1}^k \pi_i 1 ∑i1kπi1。 log ( π i ) \log(\pi_i) log(πi) 类别 i i i 的对数概率也称为 logits表示每个类别的概率得分。它是为了将概率值映射到对数空间便于数值稳定性和与 Gumbel 噪声结合。 g i g_i gi 从 Gumbel 分布 Gumbel ( 0 , 1 ) \text{Gumbel}(0, 1) Gumbel(0,1) 中采样的噪声用于引入随机性模拟离散采样过程。 τ \tau τ 温度参数控制生成分布的平滑程度 当 τ → 0 \tau \to 0 τ→0 y i y_i yi 趋于 one-hot 表示接近离散分布。当 τ → ∞ \tau \to \infty τ→∞ y i y_i yi 趋于均匀分布所有类别的概率接近相等。 端到端优化的实现
Gumbel-Softmax 的输出是一个连续变量可以近似离散的 one-hot 表示。由于其公式中仅包含可导操作梯度可以通过 Gumbel-Softmax 直接传递到编码器的 logits实现端到端的可微优化。不需要像 VQ-VAE 一样依赖停止梯度策略来绕过不可导的离散化操作。 替代的好处
完全可微 Gumbel-Softmax 的连续近似使得整个模型可以端到端训练而不需要手动截断梯度。 更直接的优化 编码器可以接收到更完整的梯度信号而不是依赖解码器的间接反馈。 灵活的离散化 通过调节温度参数 τ \tau τ可以在连续和离散之间找到平衡进一步增强模型的优化能力。 总体而言dVAE与VQ-VAE的目标相同它们都试图学习复杂数据分布的离散潜在表示例如自然图像的分布。每种方法都以自己独特的方式解决问题。VQ-VAE使用矢量量化而dVAE将离散采样问题放宽为连续近似。虽然每种技术都有自己的一套权衡但最终它们似乎都是解决这个问题的同样有效和同样成功的方法。
参考 文生图模型演进AE、VAE、VQ-VAE、VQ-GAN、DALL-E 等 8 模型 【论文精读】DALLE: Zero-Shot Text-to-Image Generation零样本文本到图像生成 【论文精读】DALLE2: Hierarchical Text-Conditional Image Generation with CLIP Latents 【论文精读】DALLE3Improving Image Generation with Better Captions 通过更好的文本标注改进图像生成 AI绘画原理解析从CLIP、BLIP到DALLE、DALLE 2、DALLE 3、Stable Diffusion(含ControlNet详解)
参考博文DALL·E和dVAE的很多国内文章图片都来自下面的博文 Understanding VQ-VAE (DALL-E Explained Pt. 1) How is it so good ? (DALL-E Explained Pt. 2) How OpenAI’s DALL-E works?