【生成模型】变分自编码器(VAE)及图变分自编码器(VGAE)

【生成模型】变分自编码器(VAE)及图变分自编码器(VGAE)这段时间在学习机器学习中有关不确定性和概率分布的知识 发现了 VAE 这样一个有趣的方向 想抓紧时间整理一下 VAE 的主要思想和方法 然后思考如何迁移应用到自己的研究方向上 从直观上理解 VAE 变分自编码器 VariationalA Encoders VAE 是深度生成模型的一种形式 GAN 也是其中一种 VAE 是基于变分贝叶斯推断的生成式网络结构 传统自编码器是通过数值方式描述潜在空间的不同 而 VAE 以概率的方式描述潜在空间的不同 是一种无监督式学习的生成模型 举个简单的例子说明变分自编码模型 输


从直观上理解VAE

变分自编码器(Variational Auto-Encoders,VAE)是深度生成模型的一种形式(GAN也是其中一种),VAE是基于变分贝叶斯推断的生成式网络结构。传统自编码器是通过数值方式描述潜在空间的不同,而VAE以概率的方式描述潜在空间的不同,是一种无监督式学习的生成模型。

VAE模型结构

现在学习VAE的模型结构是什么样的。如下图所示,模型分为两个部分:推断网络(编码器encoder)和生成网络(decoder)。

  • 推断网络:用于原始输入数据的变分推断,生成隐变量的变分概率分布情况;
  • 生成网络:根据生成的隐变量变分概率分布还原为原始数据近似概率分布。
    在这里插入图片描述
    在这里插入图片描述

在VAE中,假设 p ( Z ∣ X ) p(Z|X) p(ZX)(后验分布)是满足正态分布的。给定一个真实样本 K k K_k Kk,假设存在一个专属于 X k X_k Xk的分布 p ( Z ∣ X k ) p(Z|X_k) p(ZXk),进一步假设这个分布是正态分布(独立的、多元的)。由于这个专属性,有多少个样本X就有多少个正态分布,能更好让decoder做还原。

VAE原理分析

KL散度
KL散度是两个概率分布的差值,要想保证 q ( z ∣ x ) q(z|x) q(zx) p ( z ∣ x ) p(z|x) p(zx)尽可能相似,我们的目的即是最小化这个KL散度:
m i n K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) minKL(q(z|x)||p(z|x)) minKL(q(zx)p(zx))
转换一下,通过最大化下式,即最小化了上式:
E q ( z ∣ x ) l o g p ( z ∣ x ) − K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) E_{q(z|x)}logp(z|x)-KL(q(z|x)||p(z)) Eq(zx)logp(zx)KL(q(zx)p(z))
其中, E q ( z ∣ x ) l o g p ( z ∣ x ) E_{q(z|x)}logp(z|x) Eq(zx)logp(zx)表示重构的可能性, m i n K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) minKL(q(z|x)||p(z|x)) minKL(q(zx)p(zx))表示要学习的分布 q ( z ∣ x ) q(z|x) q(zx)有多逼近真实的后验分布 p ( z ∣ x ) p(z|x) p(zx).




损失函数
损失函数包含两部分:
L ( x , x ^ ) + K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) L(x,\hat{x})+KL(q(z|x)||p(z)) L(x,x^)+KL(q(zx)p(z))

分布标准化处理
有博主把这一部分写得非常清楚,借鉴一部分过来供大家理解学习,出处附在参考资料中。
在这里插入图片描述

重参数技巧(reparameterization trick)
为什么要用重参数技巧?在decoder过程中,我们要从 p ( z ∣ x ) p(z|x) p(zx)中采样一个 z z z出来,尽管采样的结果 p ( z ∣ x ) p(z|x) p(zx)是一个分布(已知高斯分布的参数,故可求导训练),但是随机采样这个过程是不可求导训练的。
如何解决这个问题?用重参数技巧。从 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)中采样一个 z z z出来,相当于从 N ( 0 , I ) N(0,I) N(0,I)中采样一个 ϵ \epsilon ϵ出来,然后做参数的线性变换让 z = μ + ϵ × σ . z=\mu+\epsilon\times\sigma. z=μ+ϵ×σ.
在这里插入图片描述


图生成模型:变分图自编码器(VGAE)

主要思想
将变分自编码器(VAE)迁移到图领域中(graph),将已知图通过图卷积层(GCN)编码(decoder),学习到节点向量表示的分布,在分布中采样得到节点的向量表示,然后解码(link prediction)重构图。

模型结构
在这里插入图片描述
输入:邻接矩阵A和特征矩阵X
过程:通过编码器(图卷积网络)学习节点低维向量表示的均值 μ \mu μ和方差 σ \sigma σ,然后用解码器(链路预测)生成图。
编码器是简单的两层GCN网络:
q ( Z ∣ X , A ) = ∑ i = 1 N q ( z i ∣ X , A ) q(Z|X,A)=\sum_{i=1}^N q(z_i|X,A) q(ZX,A)=i=1Nq(ziX,A)
其中, q ( z i ∣ X , A ) = N ( z i ∣ μ i , d i a g ( σ 2 ) ) q(z_i|X,A)=N(z_i|\mu_i,diag(\sigma^2)) q(ziX,A)=N(ziμi,diag(σ2)) μ \mu μ是节点向量表示 μ = G C N μ ( X , A ) \mu = GCN_{\mu}(X,A) μ=GCNμ(X,A)的均值, σ \sigma σ是节点向量表示的方差 l o g σ = G C N σ ( X , A ) log\sigma=GCN_\sigma(X,A) logσ=GCNσ(X,A)
两层卷积网络定义如下:
G C N ( X , A ) = A ~ R e L U ( A ~ X W 0 ) W 1 GCN(X,A)=\widetilde{A} ReLU(\widetilde{A}XW_0)W_1 GCN(X,A)=A
ReLU(A
XW0)W1

其中, A ~ = D ^ − 1 2 A ^ D ^ − 1 2 \widetilde{A}=\widehat{D}^{-\frac{1}{2}}\widehat{A}\widehat{D}^{-\frac{1}{2}} A
=
D
21
A
D
21
A ^ = A + I \widehat{A}=A+I A
=
A+I
D ^ \widehat{D} D
A ^ \widehat{A} A
对应的度矩阵。
值得注意的是, G C N μ ( X , A ) GCN_{\mu}(X,A) GCNμ(X,A) G C N σ ( X , A ) GCN_\sigma(X,A) GCNσ(X,A)共享参数 W 0 W_0 W0,而各自的 W 1 W_1 W1不同。采样过程和VAE相同,都是用了重参数技巧(reparameterization trick)。









损失函数
损失函数包含两部分:生成图和原始图之间的距离度量、节点表示向量分布和正态分布的散度。
L = E q ( Z ∣ X , A ) [ l o g p ( A ∣ Z ) ] − K L [ q ( Z ∣ X , A ) ∣ ∣ P ( Z ) ] L=E_q(Z|X,A)[logp(A|Z)]-KL[q(Z|X,A)||P(Z)] L=Eq(ZX,A)[logp(AZ)]KL[q(ZX,A)P(Z)]
其中, E q ( Z ∣ X , A ) [ l o g p ( A ∣ Z ) ] E_q(Z|X,A)[logp(A|Z)] Eq(ZX,A)[logp(AZ)]是交叉熵损失函数。


理解到VAE的思想后,理解VGAE就会稍轻松一些,VAE用在CV领域比较多,通过生成模型生成具有相似特征的图像,但是将VAE应用到graph领域,有什么价值呢?在前面的推导中,VGAE得到图节点编码后,两两计算节点间存在边的概率大小,基于此重构图。可以看到,VGAE其实有做链路预测(link prediction) 的作用,举个简单的例子:在推荐系统中,通过重构图来捕获user与item之间可能的connection。

补充:图自编码器(GAE)

参考资料

  • 变分自编码器是什么?
  • PAPER:《Auto-Encoding Variational Bayes》
  • 从自编码器到变分自编码器(其二)
  • 变分自编码器(一):原来是这么一回事
  • VGAE(Variational graph auto-encoders)论文详解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216510.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:41
下一篇 2026年3月18日 上午11:42


相关推荐

  • webpack基本配置项_webpack配置文件详解

    webpack基本配置项_webpack配置文件详解前言上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境webpac

    2022年8月7日
    12
  • mmse评估量表_MMSE评估评分指导[通俗易懂]

    简易智能精神状态检查量表(MMSE)操作说明I、定向力(最高分:10分)1、每答对一题得1分星期几?几号?几月?什么季节?哪一年?2、每答对一题得1分省?市?区或县?什么地方?第几层楼?II、记忆力(最高分:3分)告诉被测试者您将问几个问题来检查他的记忆,然后清楚、缓慢的说出3个相互无关的东西的名称(大约1秒钟说1个),说完所有的3个名称后,要求被测试者重复它们。被测试者的得分取决于他们首次重复的…

    2022年4月18日
    109
  • 最长公共子串 动态规划_最长公共子串 DNA序列

    最长公共子串 动态规划_最长公共子串 DNA序列原题链接题目描述给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。输入描述:输出包括两行,第一行代表字符串str1,第二行代表str2。( 1<= length(str1),length(str2)<= 5000)输出描述:输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。示例1输入1A2C3D4B56B1D23CA45B6A输出123456说明”123456″和“12C4B6”都是最长公共

    2022年8月8日
    11
  • KVM——迁移KVM虚拟机

    KVM——迁移KVM虚拟机一 KVM 虚拟机迁移的方式 KVM 平台中的 KVM 虚拟机迁移分为以下两种 1 冷迁移 静态迁移 我们存放虚拟机磁盘的目录都是挂在的一个 nfs 文件系统的磁盘 进行冷迁移时 只要在目标主机上挂载这个 nfs 文件系统 就可以看到要迁移的那个虚拟机的磁盘文件 通常以 qcow2 或 raw 结尾的 然后 只需将虚拟机的 xml 配置文件发送到目标服务器上 然后重新定义一下迁移过来的虚拟机即可 2 热迁移 动态迁移 如果源宿主机和目的宿主机共享存储系统 则只需要通过网络发送客户机的 vCPU 执行状态 内存中的内容

    2026年3月19日
    3
  • 豆包AI学生管理设计与代码实现

    豆包AI学生管理设计与代码实现

    2026年3月13日
    4
  • CQRS架构

    CQRS架构命令查询的责任分离 CommandQuery 简称 CQRS 模式是一种架构体系模式 能够使改变模型的状态的命令和模型状态的查询实现分离 这属于 DDD 应用领域的一个模式 为了使得项目逻辑更加清晰 便于对不同部分进行针对性的优化 一 背景问题在以前的管理系统中 命令 Command 通常用来更新数据 操作 DB 和查询 Query 通常使用

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号