第三课.图变分自编码器&图对抗生成网络

自编码器与变分自编码器

自编码器

自编码器即 Auto Encoders,简称 AE,假设存在一个神经网络:
fig1
容易发现,该神经网络的输入与输出维度相同,隐藏层的张量维度远小于输入或输出数据,通常目标是用输入还原输出,应使两者相接近,所以有损失函数 L ( x , x ^ ) L(x,\widehat{x}) L(x,x ),参数前者是输入,后者是网络输出;可以看出,自编码器是一种无监督学习,在这种技术中,利用神经网络进行表征学习;

理想的自编码器模型应具备如下性质:

  • 对输入足够敏感,能够准确重建数据;
  • 模型对输入不够敏感,不能简单地记忆或过拟合训练数据;

通常,将自编码器中生成的最小维度张量称为 Embedding Space 或者 Latent Space:
fig2
自编码器是一个包含编码器和解码器的神经网络;编码器以数据点 X X X 作为输入,并将其转换为低维表达 Z Z Z;解码器取低维的表达 Z Z Z,返回一个与输入 X X X 相似的重构数据 X ^ \widehat{X} X ;下图给出了一个以MNIST图像为输入的自编码器的例子:
fig3
自编码器的损失函数用于衡量重建过程中丢失的信息:
L ( X , X ^ ) = ∣ ∣ X − X ^ ∣ ∣ 2 L(X,\widehat{X})=||X-\widehat{X}||^{2} L(X,X )=XX 2
将高维输入转为低维embedding的意义在于:

  • 存储图像的低维嵌入与存储其像素相比,可以节省存储空间;
  • 存储图像的低维嵌入也可以节省计算能力,因为输入维数较低;
  • 低维数据利于可视化;

低维embedding的可视化举例:
fig4
这样,可以直观看出,高维图像各自所属于的分布;对embedding空间的数据进行分类,将会更加方便,提高准确率,提高计算速度

变分自编码器

变分自编码器原理

变分自编码器 Variational Auto Encoders,简称VAE;在传统的 AE 里,只能生成与原始输入相似的图像。然而,VAE 可以从原始数据集中生成新数据;VAE 不需要像 AE 一样让输出数据非常接近输入数据;

VAE 的主要思想是将输入 X X X 嵌入到一个分布而不是一个点上,然后从分布中抽取一个随机样本 Z Z Z,而不是直接从编码器中产生;VAE 的编码器通常写为 P ( z ∣ x ; φ ) P(z|x;\varphi) P(zx;φ),它取一个数据点 X X X,产生一个分布(多元高斯),编码器预测高斯分布的均值和标准差;从这个分布中采样低维嵌入 Z Z Z,解码器为 P ( x ∣ z ; θ ) P(x|z;\theta) P(xz;θ),它取一个嵌入 Z Z Z,产生输出 x ^ \widehat{x} x


  • 1.生成领域的早期由 AE 与 VAE 主导,当时还没有出现 GAN(对抗生成网络) ;
  • 2. P ( z ∣ x ; φ ) P(z|x;\varphi) P(zx;φ) 指在参数为 φ \varphi φ的模型下(比如编码器使用全连接神经网络或卷积网络),给定某个输入 x x x,生成某个输出 z z z的概率;
  • 3. P ( x ∣ z ; θ ) P(x|z;\theta) P(xz;θ)指在参数为 θ \theta θ的模型下(比如解码器使用全连接神经网络或卷积网络),给定某个输入 z z z,生成某个输出 x x x的概率;
  • 4.VAE和GAN比较,它们两个的目标基本是一致的——希望构建一个从隐变量 Z Z Z生成目标数据 X X X的模型,但是实现上有所不同。它们是假设了 Z Z Z服从某些常见的分布(比如正态分布或均匀分布),然后希望训练一个模型 X = g ( Z ) X=g(Z) X=g(Z),这个模型能够将原来的概率分布映射到训练集的概率分布,也就是说,它们的目的都是进行分布之间的变换;

变分自编码器可以表示如下:
fig5
可见,编码器接收输入数据 X X X,并产生 μ \mu μ l o g ( σ 2 ) log(\sigma^{2}) log(σ2),注意,如果直接输出 σ 2 \sigma^{2} σ2,必然要求必须为正值,使用对数后,值将映射到正负空间,这有利于帮助网络输出得更轻松;最后,从高斯分布中生成 embedding Z Z Z,生成的方式为:
z = μ + σ × ε , ε ∼ N ( 0 , 1 ) z=\mu+\sigma \times \varepsilon ,\varepsilon \sim N(0,1) z=μ+σ×ε,εN(0,1)
将 embedding Z Z Z 传入解码器(和 AE 的解码器一样),得到一个输出 X ^ \widehat{X} X

变分自编码器的损失函数

变分自编码器的损失函数为:
l i ( θ , φ ) = − E z ∼ P ( z ∣ x i ; φ ) [ l o g P ( x i ∣ z ; θ ) ] + K L ( P ( z ∣ x i ; φ ) ∣ ∣ P ( z ) ) l_{i}(\theta,\varphi)=-E_{z\sim P(z|x_{i};\varphi)}[logP(x_{i}|z;\theta)]+KL(P(z|x_{i};\varphi)||P(z)) li(θ,φ)=EzP(zxi;φ)[logP(xiz;θ)]+KL(P(zxi;φ)P(z))
VAE 的损失函数分为两部分"变分下界+正则化器":

  • 1.变分下界:用于测量网络重构数据的程度,以防重构数据过度偏离原始数据;
    其中, z ∼ P ( z ∣ x i ; φ ) z\sim P(z|x_{i};\varphi) zP(zxi;φ)表示数据 z z z采样自一个分布,这个分布服从概率分布 P ( z ∣ x i ; φ ) P(z|x_{i};\varphi) P(zxi;φ)
    变分下界计算的是生成输出 x x x的概率分布的期望的相反数,生成的 x x x越接近原始输入, P ( x i ∣ z ; θ ) P(x_{i}|z;\theta) P(xiz;θ)越大(数值在0-1之间),最终变分下界越小;
  • 2.正则化器:通过KL散度衡量两个分布,KL散度衡量输出分布 P ( z ∣ x i ; φ ) P(z|x_{i};\varphi) P(zxi;φ)与隐分布 P ( z ) P(z) P(z)的相似性,两个分布越相似,KL散度越小;
    正则化器的存在约束了编码器输出的分布 P ( z ∣ x i ; φ ) P(z|x_{i};\varphi) P(zxi;φ),强迫该分布去接近隐分布 P ( z ) P(z) P(z),隐分布是人为可定义的,常常使用高斯分布,实际上隐分布也可以采用其他的概率分布;

VAE的中“变分”,是因为损失函数的推导过程用到了KL散度及其性质


图变分自编码器

定义回顾

涉及到图数据的处理时,首先回顾邻接矩阵(Adjacency Matrix),邻接矩阵代表图的结构:

  • i i i和列 j j j的值为1表示顶点 i i i和顶点 j j j之间存在一条边;
  • m m m和列 n n n处的值为0表示顶点 m m m和顶点 n n n之间没有边;

fig6
关于图数据,还要回顾特征矩阵(Feature Matrix),特征矩阵代表图的特征:

  • 我们使用特征矩阵 X X X来表示输入图中每个节点的特征;
  • 特征矩阵 X X X的行 i i i表示顶点 i i i的特征向量;

fig7

图变分自编码器

图变分自编码器 Variational Graph Autoencoders,简称 VGAE 或者 GVAE,是用于处理图数据的变分自编码器;VGAE的编码器(推理模型)由图卷积网络( GCN )组成,它以邻接矩阵 A A A和特征矩阵 X X X作为输入,输出 embedding 空间的变量 Z Z Z
fig8


GCN回顾 第二课.图卷积神经网络


Encoder

第一个GCN层生成一个低维特征矩阵:
X ‾ = G C N ( X , A ) = R e L U ( A ~ X W 0 ) , A ~ = D ~ − 1 2 ( A + λ I ) D ~ − 1 2 \overline{X}=GCN(X,A)=ReLU(\widetilde{A}XW_{0}),\widetilde{A}=\widetilde{D}^{-\frac{1}{2}}(A+\lambda I)\widetilde{D}^{-\frac{1}{2}} X=GCN(X,A)=ReLU(A XW0),A =D 21(A+λI)D 21
第二个GCN层生成 μ \mu μ l o g σ 2 log\sigma^{2} logσ2
μ , l o g σ 2 = G C N μ , σ ( X , A ) = A ~ X ‾ W 1 \mu,log\sigma^{2}=GCN_{\mu,\sigma}(X,A)=\widetilde{A}\overline{X}W_{1} μ,logσ2=GCNμ,σ(X,A)=A XW1
联立一层GCN和二层GCN,可以得到编码器的计算:
μ , l o g σ 2 = A ~ [ R e L U ( A ~ X W 0 ) ] W 1 \mu,log\sigma^{2}=\widetilde{A}[ReLU(\widetilde{A}XW_{0})]W_{1} μ,logσ2=A [ReLU(A XW0)]W1
然后可以从分布中采样 Z Z Z
z = μ + σ × ε , ε ∼ N ( 0 , 1 ) z=\mu+\sigma \times \varepsilon ,\varepsilon \sim N(0,1) z=μ+σ×ε,εN(0,1)

Decoder

解码器又称为生成模型,解码器(生成模型)由embedding变量 Z Z Z 之间的内积定义;解码器的输出是一个重构的邻接矩阵 A ^ \widehat{A} A ,定义为:
A ^ = s i g m o i d ( z z T ) \widehat{A}=sigmoid(zz^{T}) A =sigmoid(zzT)
注释:假设图数据中共 n n n个节点,得到隐变量的形状为 z ∈ R n × ∗ z\in \mathbb{R}^{n\times \ast} zRn× ∗ \ast 表示任意维数,经过内积, A ^ \widehat{A} A 的形状和邻接矩阵 A A A的形状一致,均为 n × n n\times n n×n

Decoder使用内积的原因:想寻求一种方法,衡量各个顶点之间的相似性(存在顶点之间的关系信息),从而达到生成一个新邻接矩阵的目标,这个新邻接矩阵包含了节点之间的关系信息,因此是具有意义的

图变分自编码器的损失函数

VGAE 的损失函数和 VAE 的损失函数形式一致:
L = − E Z ∼ P ( Z ∣ X , A ; W 0 , W 1 ) [ l o g P ( A ^ ∣ Z ) ] + K L ( P ( Z ∣ X , A ; W 0 , W 1 ) ∣ ∣ P ( Z ) ) L=-E_{Z\sim P(Z|X,A;W_{0},W_{1})}[logP(\widehat{A}|Z)]+KL(P(Z|X,A;W_{0},W_{1})||P(Z)) L=EZP(ZX,A;W0,W1)[logP(A Z)]+KL(P(ZX,A;W0,W1)P(Z))
第一项变分下界用于测量网络重构数据的程度,以防重构数据过度偏离原始数据;第二项正则化器约束编码器输出的分布接近人为定义的隐分布 P ( Z ) P(Z) P(Z)(比如高斯分布);

图对抗生成网络

对抗生成网络

GAN即Generative Adversarial Network,GAN由两部分组成,一个是生成器Generator,另一个是判别器Discriminator,GAN 的内容回顾 Pytorch笔记本-第十课.图片风格迁移和GAN;GAN 广泛用于图像生成和语音生成:
fig10

一般游戏开发和动画制作费用昂贵,往往需要雇佣许多艺术家从事相对常规的工作,通过GAN就能快速且低成本生成动画人物:
fig9

通过额外的姿态输入,也可以将图像转换为不同的姿态(多用于电商行业):
fig11

图对抗生成网络 GraphGAN

图对抗生成网络即 GraphGAN,由一个Generator和Discriminator组成;关于GraphGAN,需要注意以下符号说明:

  • G r a p h Graph Graph:图数据 G r a p h ( V , E ) Graph(V,E) Graph(V,E)
  • V V V:节点集合; v c v_{c} vc:当前节点; N ( v c ) N(v_{c}) N(vc):当前节点的一阶邻居(与 v c v_{c} vc有边直接相连的节点);
  • E E E:边集合;
  • 生成器模型 G ( v ∣ v c ; θ G ) G(v|v_{c};\theta_{G}) G(vvc;θG)尽可能拟合出真实数据的分布 p t r u e ( v ∣ v c ) p_{true}(v|v_{c}) ptrue(vvc) G ( v ∣ v c ; θ G ) G(v|v_{c};\theta_{G}) G(vvc;θG)反映了在参数为 θ G \theta_{G} θG的模型下,预测出节点集合中的某个任意节点 v v v与当前节点 v c v_{c} vc有边连接的概率;
  • 判别器模型 D ( v , v c ; θ D ) D(v,v_{c};\theta_{D}) D(v,vc;θD)用于判断哪些边连接正确,哪些边连接错误,即预测一对顶点之间存在边的概率 p ( e d g e ∣ ( v i , v j ) ) p(edge|(v_{i},v_{j})) p(edge(vi,vj))

GraphGAN的训练过程如下:

fig12
训练方式其实与GAN是一样的,也是交替训练,最开始固定生成器,训练判别器,再固定判别器,训练生成器,以此交替训练;

训练的目标:
m i n { θ G } m a x { θ D } V ( G , D ) min_{\left\{\theta_{G}\right\}}max_{\left\{\theta_{D}\right\}}V(G,D) min{θG}max{θD}V(G,D)
其中:
V ( G , D ) = ∑ c = 1 V ( E v ∼ p t r u e ( v ∣ v c ) [ l o g D ( v , v c ; θ D ) ] ) + ( E v ∼ G ( v ∣ v c ; θ G ) [ l o g ( 1 − D ( v , v c ; θ D ) ) ] ) V(G,D)=\sum_{c=1}^{V}(E_{v\sim p_{true}(v|v_{c})}[logD(v,v_{c};\theta_{D})])+(E_{v\sim G(v|v_{c};\theta_{G})}[log(1-D(v,v_{c};\theta_{D}))]) V(G,D)=c=1V(Evptrue(vvc)[logD(v,vc;θD)])+(EvG(vvc;θG)[log(1D(v,vc;θD))])
可看出,先对于 θ D \theta_{D} θD最大化 V ( G , D ) V(G,D) V(G,D),即固定 G G G,训练 D D D;再对于 θ G \theta_{G} θG最小化 V ( G , D ) V(G,D) V(G,D),即固定 D D D,训练 G G G

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值