当前位置: 首页 > news >正文

【神经网络与深度学习】VAE 在解码前进行重参数化

在 VAE 中,解码之前进行重参数化主要有以下几个重要原因:

可微分性

在深度学习里,模型是通过反向传播算法来学习的,而这需要计算梯度。若直接从潜在变量的分布 (q_{\theta}(z|x))(由编码器输出的均值 (\mu) 和方差 (\sigma^2) 确定的正态分布)中采样得到 (z),这个采样操作是不可微分的。因为采样是一个随机过程,无法通过梯度来优化。

重参数化技巧把采样操作转化为可微分的计算。通过引入一个标准正态分布的随机噪声 (\epsilon \sim N(0, I)),使用公式 (z = \mu + \sigma \cdot \epsilon) 来计算 (z)。这样,在反向传播时就可以计算 (z) 相对于 (\mu) 和 (\sigma) 的梯度,进而更新编码器的参数。

让潜在空间具有连续性和可解释性

  • 连续性:重参数化技巧使得潜在空间是连续的。因为 (z) 是由 (\mu) 和 (\sigma) 以及连续的随机噪声 (\epsilon) 计算得到的,微小的 (\mu) 和 (\sigma) 的变化会导致 (z) 的微小变化。这意味着在潜在空间中相邻的点对应的样本在特征上也是相似的,使得潜在空间具有平滑的结构。
  • 可解释性:在这样连续的潜在空间中,可以进行有意义的操作,如插值和外推。例如,在两个不同样本对应的潜在向量之间进行线性插值,然后将插值得到的潜在向量通过解码器生成新的样本,这些新样本会呈现出从一个样本逐渐过渡到另一个样本的特征,从而使得潜在空间具有可解释性。

提高模型的泛化能力

重参数化有助于 VAE 学习到数据的潜在分布,而不只是记忆训练数据。通过在采样过程中引入随机性(即随机噪声 (\epsilon)),模型在训练时能够接触到更多潜在空间中的样本,从而增强了模型的泛化能力,使其能够更好地生成新的、未见过的数据样本。

便于计算 KL 散度

在 VAE 的训练目标中,需要最小化潜在变量分布 (q_{\theta}(z|x)) 与先验分布 (p(z))(通常是标准正态分布 (N(0, I)))之间的 KL 散度。重参数化使得潜在变量 (z) 的分布可以用参数 (\mu) 和 (\sigma) 来明确表示,方便计算 KL 散度,从而实现对潜在空间分布的约束,使潜在空间的分布更接近先验分布。

重参数化在 VAE 里既是一种“技巧(trick)”,同时也是 VAE 实现过程中的关键基本操作,以下从不同角度为你详细解释:

作为“技巧(trick)”的层面

  • 解决不可微问题:在深度学习里,模型借助反向传播算法来更新参数,这就要求所有操作都具备可微性。直接从潜在变量的分布 (q_{\theta}(z|x)) 中采样获取 (z) 属于随机操作,是不可微的。重参数化技巧通过引入标准正态分布的随机噪声 (\epsilon \sim N(0, I)),并运用公式 (z = \mu + \sigma \cdot \epsilon) 来计算 (z),将原本不可微的采样操作转化为可微的计算,从而使模型能够正常进行反向传播和参数更新。这一处理方式并非深度学习中的常规做法,而是为了解决特定问题所采用的巧妙手段,所以可看作是一种技巧。
  • 优化潜在空间结构:重参数化技巧使得潜在空间具备连续性与可解释性。它保证了潜在空间中相邻的点对应的样本在特征上相近,使得在潜在空间中进行插值和外推等操作变得有意义。这种对潜在空间结构的优化并非是模型自然形成的,而是通过重参数化技巧人为实现的,因此也体现了其“技巧”的特性。

作为基本操作的层面

  • VAE 架构的必要组成:在 VAE 的标准架构里,重参数化是必不可少的步骤。编码器输出潜在变量的均值 (\mu) 和方差 (\sigma^2) 后,必须通过重参数化来得到潜在变量 (z),再由解码器根据 (z) 重构数据。缺少重参数化步骤,VAE 就无法正常训练和工作,所以它是 VAE 模型实现过程中的基本操作。
  • 广泛应用与标准化:在 VAE 相关的研究和应用中,重参数化已经成为一种被广泛接受和使用的标准操作。无论是在学术研究还是实际项目里,只要涉及到 VAE 模型,都会采用重参数化技巧。它已经成为了 VAE 模型的一个标志性特征和基本组成部分。
http://www.xdnf.cn/news/316549.html

相关文章:

  • 指定Docker镜像源,使用阿里云加速异常解决
  • lvgl多语言设置
  • Diamond iO:实用 iO 的第一缕曙光
  • 台州智惠自动化签约智橙PLM,让创新持续发生
  • 开发搭载阿里云平台的物联网APP(支持数据接收与发送)
  • 【C++】类和对象
  • Vue3+TS+vite项目本地测试数据接口搭建
  • 1.1.2 简化迭代器 yield return的使用
  • 音乐网站|基于SprinBoot+vue的音乐网站(源码+数据库+文档)
  • RPA与After Effects 2024深度融合:自动化影视特效全链路革命
  • ESP32蓝牙开发笔记(十五)
  • 开发 Chrome 扩展中的侧边栏图标设置实录(Manifest V3)
  • [特殊字符] Milvus + LLM大模型:打造智能电影知识库系统
  • Python入门(二)
  • 融合静态图与动态智能:重构下一代智能系统架构
  • 2025年渗透测试面试题总结-渗透岗位全职工作面试(附回答)(题目+回答)
  • 【Redis】哨兵机制和集群
  • MATLAB的cvpartition函数用法
  • AI辅助DevOps与自动化测试:重构软件工程效率边界
  • stm32之ADC
  • 什么是智能合约?区块链上的自动化契约
  • 文章记单词 | 第67篇(六级)
  • ​​大疆无人机SDR 链路​​
  • 28. C++位图 布隆过滤器 哈希切割相关
  • PostgreSQL 系统管理函数详解
  • Rest架构解说
  • idea里maven自定义的setting.xml文件不生效问题
  • 基于DR模式的LVS集群案例
  • AI检测的荒谬性:当规则沦为一场概率游戏
  • LLaMA-Omni 2:基于 LLM 的自回归流语音合成实时口语聊天机器人