在表格数据集上训练变分自编码器 (VAE)示例
变分自编码器 (VAE) 是在图像数据应用中被提出,但VAE不仅可以应用在图像中。在这篇文章中,我们将简单介绍什么是VAE,以及解释“为什么”变分自编码器是可以应用在数值类型的数据上,最后使用Numerai数据集展示“如何”训练它。
Numerai数据集数据集包含全球股市数十年的历史数据,在Numerai的锦标赛中,使用这个数据集来进行股票的投资收益预测和加密币NMR的收益预测。
为什么选择VAE?
一般来说 VAE 可以进行异常检测、去噪和生成合成数据。
异常检测
异常检测可以关于识别偏离大多数数据和不符合明确定义的正常行为概念的样本。在 Numerai 数据集中这些异常可能是存在财务异常时期,检测到这些时期会为我们的预测提供额外的信息。
去噪
去噪是从信号中去除噪声的过程。我们可以应用 VAE 对大多数偏离的特征进行降噪。去噪转换噪声特征,一般情况下我们会将异常检测出的样本标记为噪声样本。
生成合成数据
使用 VAE,我们可以从正态分布中采样并将其传递给解码器以获得新的样本。
为什么选择变分自编码器呢?
什么是VAE?
自编码器由两个主要部分组成:
1)将输入映射为潜在空间的编码器
2)使用潜在空间重构输入的解码器
潜在空间在原论文中也被称为表示变量或潜在变量。那么为什么称为变分呢?将潜在表示的分布强制转换到一个已知的分布(如高斯分布),因为典型的自编码器不能控制潜在空间的分布而(VAE)提供了一种概率的方式来描述潜在空间中的观察。因此我们构建的编码器不是输出单个值来描述每个潜在空间的属性,而是用编码器来描述每个潜在属性的概率分布。在本文中我们使用了最原始的VAE,我们称之为vanilla VAE(以下称为原始VAE)
VAE架构
编码器由一个或多个全连接的层组成,其中最后一层输出正态分布的均值和方差。均值和方差值用于从相应的正态分布中采样,采样将作为输入到解码器。解码器由也是由一个或多个完全连接的层组成,并输出编码器输入的重建版本。下图展示了VAE的架构:
与普通自动编码器不同,VAE编码器模型将输出潜伏空间中每个维度的分布特征参数,而不是潜在空间的值。编码器将输出两个向量,反映潜在状态分布的均值和方差,因为我们假设先验具有正态分布。然后,解码器模型将通过从这些定义的分布中采样来构建一个潜在向量,之后它将为解码器的输入重建原始输入。
普通 VAE 的损失函数中有两个项:1)重建误差和 2)KL 散度:
普通 VAE 中使用的重建误差是均方误差 (MSE)。MSE 损失试图使重构的信号与输入信号相似性。KL 散度损失试图使代码的分布接近正态分布。q(z|x) 是给定输入信号的代码分布,p(z) 是正态分布。PyTorch 代码如下所示:
完整文章:
https://avoid.overfit.cn/post/144af920f43240be9ed07f0a8e0d6051
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库