变分自编码器(VAE)介绍

news2024/11/15 20:08:37

变分自编码器(VAE)介绍

  • 一、前言
  • 二、变分自编码器
    • 1、VAE的目标
    • 2、理论推导
    • 3、补充
    • 4、重参数技巧

一、前言

变分自编码器(Variational Auto-Encoder,VAE)是以自编码器结构为基础的深度生成模型。

自编码器( Auto-Encoder,AE)在降维和特征提取等领域应用广泛, 基本结构是通过编码 (Encoder) 过程将样本映射到低维空间的隐变量, 然后通过解码 (Decoder) 过程将隐变量还原为重构样本。

在这里插入图片描述

其中,对于编码层:

图中的输入数据 x x x与对应的连接权重 W W W相乘,再加上偏置 b b b,经过激活函数 f ( ⋅ ) f(\cdot) f()变换后,得到 y y y。具体公式如下:

y = f ( W x + b ) y=f(Wx+b) y=f(Wx+b)

对于解码层:

中间层和重构层之间的连接权重及偏置分为记作 W ~ \tilde{W} W~ b ~ \tilde{b} b~,激活函数为 f ~ ( ⋅ ) \tilde{f}(\cdot) f~(),重构结果记作 x ~ \tilde{x} x~

x ~ = f ~ ( W ~ y + b ~ ) \tilde{x}=\tilde{f}\left(\tilde{W}y+\tilde{b}\right) x~=f~(W~y+b~)

因此,自编码器总的过程可以表示为:

x ~ = f ~ ( W ~ f ( W x + b ) + b ~ ) \tilde{x}=\tilde{f}(\tilde{W}f(Wx+b)+\tilde{b}) x~=f~(W~f(Wx+b)+b~)

损失函数(Loss函数) L L L可以使用最小二乘法差函数或者交叉熵代价函数。

L = ∑ n = 1 N ∥ x n − x n ~ ∥ 2 L = − ∑ n = 1 N ( x i l o g x ~ i + ( 1 − x i ) l o g ( 1 − x ~ i ) ) L=\sum_{n=1}^N\|x_n-\tilde{x_n}\|^2\\ L=-\sum_{n=1}^N(x_ilog\tilde{x}_i+(1-x_i)log(1-\tilde{x}_i)) L=n=1Nxnxn~2L=n=1N(xilogx~i+(1xi)log(1x~i))

二、变分自编码器

1、VAE的目标

VAE的目标是先假设一个隐变量 Z Z Z的分布,构建一个从 Z Z Z到目标数据 X X X的模型,即构建 X = g ( Z ) X=g(Z) X=g(Z),使得学出来的目标数据与真实数据的概率分布相近。与GAN基本一致,GAN学的也是概率分布。

在这里插入图片描述
图1 VAE示意图

2、理论推导

首先我们有一批数据样本 { X 1 , … , X n } \{X_1,…,X_n\} {X1,,Xn},其整体用 X X X来描述,我们本想根据 { X 1 , … , X n } \{X_1,…,X_n\} {X1,,Xn}得到 X X X的分布 P ( x ) P(x) P(x),如果能得到的话,那我直接根据 P ( x ) P(x) P(x)来采样,就可以得到所有可能的 X X X了(包括 { X 1 , … , X n } \{X_1,…,X_n\} {X1,,Xn}+ { X 1 , … , X n } \{X_1,…,X_n\} {X1,,Xn}以外的),这是一个终极理想的生成模型了。当然,这个理想很难实现,于是我们将分布改一改,就变成了

原始的样本数据 x x x的概率分布:

P ( x ) = ∫ z P ( z ) P ( x ∣ z ) d z P(x)=\int_zP(z)P(x|z)dz P(x)=zP(z)P(xz)dz

假设 z z z服从标准高斯分布,则 P ( x ) P(x) P(x)就是在积分域上所有高斯分布的累加。

在这里插入图片描述
图2 P ( x ) P(x) P(x)分布累加

由于 P ( z ) P(z) P(z)是已知的, P ( x ∣ z ) P(x|z) P(xz)未知。我们最开始的目标是求解 P ( x ) P(x) P(x),且我们希望 P ( x ) P(x) P(x)越大越好,这等价于求解关于 x x x最大对数似然:

L = ∑ x l o g P ( x ) L=\sum_xlogP(x) L=xlogP(x)

l o g P ( x ) logP(x) logP(x)可变换为:

l o g P ( x ) = ∫ z Q ( z ∣ x ) l o g P ( x ) d z = ∫ z Q ( z ∣ x ) l o g P ( z , x ) P ( z ∣ x ) d z = ∫ z Q ( z ∣ x ) l o g ( P ( z , x ) Q ( z ∣ x ) Q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z Q ( z ∣ x ) l o g ( P ( z , x ) Q ( z ∣ x ) ) d z + ∫ z Q ( z ∣ x ) l o g ( Q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) P ( z ) Q ( z ∣ x ) ) d z + ∫ z Q ( z ∣ x ) l o g ( Q ( z ∣ x ) P ( z ∣ x ) ) d z = ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) P ( z ) Q ( z ∣ x ) ) d z + K L ( Q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) \begin{aligned} logP(x)& =\int_zQ(z|x)logP(x)dz \\ &=\int_zQ(z|x)log\frac{P(z,x)}{P(z|x)}dz \\ &=\int_zQ(z|x)log(\frac{P(z,x)}{Q(z|x)}\frac{Q(z|x)}{P(z|x)})dz \\ &=\int_zQ(z|x)log(\frac{P(z,x)}{Q(z|x)})dz+\int_zQ(z|x)log(\frac{Q(z|x)}{P(z|x)})dz \\ &=\int_zQ(z|x)log(\frac{P(x|z)P(z)}{Q(z|x)})dz+\int_zQ(z|x)log(\frac{Q(z|x)}{P(z|x)})dz \\ &=\int_zQ(z|x)log(\frac{P(x|z)P(z)}{Q(z|x)})dz+KL(Q(z|x)||P(z|x)) \end{aligned} logP(x)=zQ(zx)logP(x)dz=zQ(zx)logP(zx)P(z,x)dz=zQ(zx)log(Q(zx)P(z,x)P(zx)Q(zx))dz=zQ(zx)log(Q(zx)P(z,x))dz+zQ(zx)log(P(zx)Q(zx))dz=zQ(zx)log(Q(zx)P(xz)P(z))dz+zQ(zx)log(P(zx)Q(zx))dz=zQ(zx)log(Q(zx)P(xz)P(z))dz+KL(Q(zx)∣∣P(zx))

注:
∫ z Q ( z ∣ x ) l o g ( Q ( z ∣ x ) P ( z ∣ x ) ) d z = K L ( Q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) \int_zQ(z|x)log(\frac{Q(z|x)}{P(z|x)})dz=KL(Q(z|x)||P(z|x) zQ(zx)log(P(zx)Q(zx))dz=KL(Q(zx)∣∣P(zx)

因为KL散度是大于等于0的,可以进一步得到:

l o g P ( x ) ⩾ ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) P ( z ) Q ( z ∣ x ) ) d z logP(x)\geqslant\int_zQ(z|x)log(\frac{P(x|z)P(z)}{Q(z|x)})dz logP(x)zQ(zx)log(Q(zx)P(xz)P(z))dz

这样我们就找到了一个下界(lower bound),也就是式子的右项,即

L b = ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) d z L_b=\int_zQ(z|x)log(\frac{P(x|z)P(z)}{q(z|x)})dz Lb=zQ(zx)log(q(zx)P(xz)P(z))dz

原式也可表示成:

l o g P ( x ) = L b + K L ( Q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) logP\left(x\right)=L_b+KL(Q(z|x)||P(z|x)) logP(x)=Lb+KL(Q(zx)∣∣P(zx))

实际上,因为后验分布 P ( z ∣ x ) P(z|x) P(zx)很难求,所以才用 Q ( z ∣ x ) Q(z|x) Q(zx)来逼近这个后验分布。在优化的过程中我们发现,首先 Q ( z ∣ x ) Q(z|x) Q(zx) l o g P ( x ) logP\left(x\right) logP(x)是完全没有关系的, l o g P ( x ) logP\left(x\right) logP(x)只跟 P ( z ∣ x ) P(z|x) P(zx)有关,调节 Q ( z ∣ x ) Q(z|x) Q(zx)是不会影响似然,也就是 l o g P ( x ) logP\left(x\right) logP(x)的。所以,当我们固定住 P ( z ∣ x ) P(z|x) P(zx)时,调节 Q ( z ∣ x ) Q(z|x) Q(zx),从而最大化下界 L b L_b Lb,KL则越小。当 Q ( z ∣ x ) Q(z|x) Q(zx)与不断逼近后验分布 P ( z ∣ x ) P(z|x) P(zx)时,KL散度趋于为0, l o g P ( x ) logP\left(x\right) logP(x)就和 L b L_b Lb等价,所以最大化 l o g P ( x ) logP\left(x\right) logP(x)就等价于最大化 L b L_b Lb

因为由前边的推导可以知道

L b = ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) P ( z ) Q ( z ∣ x ) ) d z = ∫ z Q ( z ∣ x ) l o g ( P ( z ) Q ( z ∣ x ) ) d z + ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) ) d z = − K L ( Q ( z ∣ x ) ∣ ∣ P ( z ) ) + ∫ z Q ( z ∣ x ) l o g ( P ( x ∣ z ) ) d z = − K L ( Q ( z ∣ x ) ∣ ∣ P ( z ) ) + E q ( x ∣ z ) [ l o g ( P ( x ∣ z ) ) ] \begin{aligned} L_{b}& =\int_{z}Q(z|x)log(\frac{P(x|z)P(z)}{Q(z|x)})dz \\ &=\int_zQ(z|x)log(\frac{P(z)}{Q(z|x)})dz+\int_zQ(z|x)log(P(x|z))dz \\ &=-KL(Q(z|x)||P(z))+\int_zQ(z|x)log(P(x|z))dz \\ &=-KL(Q(z|x)||P(z))+E_{q(x|z)}[log(P(x|z))] \end{aligned} Lb=zQ(zx)log(Q(zx)P(xz)P(z))dz=zQ(zx)log(Q(zx)P(z))dz+zQ(zx)log(P(xz))dz=KL(Q(zx)∣∣P(z))+zQ(zx)log(P(xz))dz=KL(Q(zx)∣∣P(z))+Eq(xz)[log(P(xz))]

显然,最大化 L b L_b Lb等价于最小化 − K L ( Q ( z ∣ x ) ∣ ∣ P ( z ) ) -KL(Q(z|x)||P(z)) KL(Q(zx)∣∣P(z))和最大化 E q ( x ∣ z ) [ l o g ( P ( x ∣ z ) ) ] E_{q(x|z)}[log(P(x|z))] Eq(xz)[log(P(xz))]

假设 P ( z ) P(z) P(z)服从标准正态分布,且 Q ( z ∣ x ) Q(z|x) Q(zx)服从高斯分布 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2),于是代入计算可得:

K L ( Q ( z ∣ x ) ∣ ∣ P ( z ) ) = K L ( N ( μ , σ 2 ) ∣ ∣ N ( 0 , I ) ) = ∫ 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 ( l o g e − ( x − μ ) 2 2 σ 2 / 2 π σ 2 e − x 2 2 / 2 π ) d x = 1 2 1 2 π σ 2 ∫ e − ( x − μ ) 2 2 σ 2 ( − l o g σ 2 + x 2 − ( x − μ ) 2 σ 2 ) d x = 1 2 ∫ 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 ( − l o g σ 2 + x 2 − ( x − μ ) 2 σ 2 ) d x \begin{aligned} KL(Q(z|x)||P(z))& =KL(N(\mu,\sigma^{2})||N(0,I)) \\ &=\int\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}}\left(log\frac{e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}}/\sqrt{2\pi\sigma^{2}}}{e^{\frac{-x^{2}}{2}}/\sqrt{2\pi}}\right)dx \\ &=\frac{1}{2}\frac{1}{\sqrt{2\pi\sigma^{2}}}\int e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}}\bigg(-log\sigma^{2}+x^{2}-\frac{(x-\mu)^{2}}{\sigma^{2}}\bigg)dx \\ &=\frac{1}{2}\int\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}}\bigg(-log\sigma^{2}+x^{2}-\frac{(x-\mu)^{2}}{\sigma^{2}}\bigg)dx \end{aligned} KL(Q(zx)∣∣P(z))=KL(N(μ,σ2)∣∣N(0,I))=2πσ2 1e2σ2(xμ)2 loge2x2/2π e2σ2(xμ)2/2πσ2 dx=212πσ2 1e2σ2(xμ)2(logσ2+x2σ2(xμ)2)dx=212πσ2 1e2σ2(xμ)2(logσ2+x2σ2(xμ)2)dx

对上式中的积分进一步求解:

(1) 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 \frac{1}{\sqrt{2\pi\sigma^{2}}}e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}} 2πσ2 1e2σ2(xμ)2实际就是概率密度 f ( x ) f(x) f(x),而概率密度的积分为 1 1 1,所以积分第一项等于 − l o g σ 2 -log\sigma^{2} logσ2

(2)而又因为高斯分布的二阶矩就是 E ( x 2 ) = ∫ x 2 f ( x ) d x = μ 2 + σ 2 E(x^{2})=\int x^{2}f(x)dx=\mu^{2}+\sigma^{2} E(x2)=x2f(x)dx=μ2+σ2,正好是对应积分第二项。

(3)根据方差的定义可知 σ 2 = ∫ ( x − μ ) 2 d x \sigma^2=\int(x-\mu)^2dx σ2=(xμ)2dx,所以积分第三项为 − 1 -1 1

最终结果为:

K L ( Q ( z ∣ x ) ∣ ∣ P ( z ) ) = K L ( N ( μ , σ 2 ) ∣ ∣ N ( 0 , 1 ) ) = 1 2 ( − l o g σ 2 + μ 2 + σ 2 − 1 ) \begin{aligned} KL(Q(z|x)||P(z))& =KL(N(\mu,\sigma^{2})||N(0,1)) \\ &=\frac12(-log\sigma^2+\mu^2+\sigma^2-1) \end{aligned} KL(Q(zx)∣∣P(z))=KL(N(μ,σ2)∣∣N(0,1))=21(logσ2+μ2+σ21)

也就是表明在给定 Q ( z ∣ x ) Q(z|x) Q(zx)(编码器输出)的情况下 P ( x ∣ z ) P(x|z) P(xz)(解码器)输出的值尽可能高。具体来讲:

(1)利用encoder的神经网络计算出均值与方差,从中采样得到 z z z,这一过程就对应式子中的 Q ( z ∣ x ) Q(z|x) Q(zx)

(2)利用decoder的NN计算 z z z的均值方差,让均值(或也考虑方差)越接近 z z z,则产生 x x x的几率 l o g ( P ( x ∣ z ) ) log(P(x|z)) log(P(xz))越大,对应于式子中的最大化 l o g ( P ( x ∣ z ) ) log(P(x|z)) log(P(xz))这一部分。

3、补充

其实,在整个VAE模型中,我们并没有去使用 P ( Z ) P(Z) P(Z)(隐变量空间的分布)是正态分布的假设,我们用的是假设 Q ( Z ∣ X ) Q(Z|X) Q(ZX)(后验分布)是正态分布。

具体来说,给定一个真实样本 X k X_k Xk,我们假设存在一个专属于 X k X_k Xk的分布 Q ( Z ∣ X k ) Q(Z|X_k) Q(ZXk)(学名叫后验分布),并进一步假设这个分布是(独立的、多元的)正态分布。

为什么要强调“专属”呢?

因为我们后面要训练一个生成器 X = g ( Z ) X=g(Z) X=g(Z),希望能够把从分布 Q ( Z ∣ X k ) Q(Z|X_k) Q(ZXk)采样出来的一个 Z k Z_k Zk还原为 X k X_k Xk。如果假设 P ( Z ) P(Z) P(Z)是正态分布,然后从 P ( Z ) P(Z) P(Z)中采样一个 Z Z Z,那么我们怎么知道这个 Z Z Z对应于哪个真实的 X X X呢?现在 p ( Z ∣ X k ) p(Z|X_k) p(ZXk)专属于 X k X_k Xk,我们有理由说从这个分布采样出来的 Z Z Z应该要还原到 X k X_k Xk中去。

这时候每一个 X k X_k Xk都配上了一个专属的正态分布,才方便后面的生成器做还原。但这样有多少个 X X X就有多少个正态分布了。我们知道正态分布有两组参数:均值 μ μ μ和方差 σ 2 σ^2 σ2(多元的话,它们都是向量),那我怎么找出专属于 X k X_k Xk的正态分布 Q ( Z ∣ X k ) Q(Z|X_k) Q(ZXk)的均值和方差呢?

用神经网络来拟合

于是我们构建两个神经网络 μ k = f 1 ( X k ) μ_k=f_1(X_k) μk=f1(Xk) l o g σ k 2 = f 2 ( X k ) logσ^2_k=f_2(X_k) logσk2=f2(Xk)来算它们了。

我们选择拟合 l o g σ k 2 logσ^2_k logσk2而不是直接拟合 σ k 2 σ^2_k σk2,是因为 σ k 2 σ^2_k σk2总是非负的,需要加激活函数处理,而拟合 l o g σ k 2 logσ^2_k logσk2不需要加激活函数,因为它可正可负。

到这里,就能知道专属于 X k X_k Xk的均值和方差了,也就知道它的正态分布长什么样了,然后从这个专属分布中采样一个 Z k Z_k Zk出来,然后经过一个生成器得到 X k = g ( Z k ) X_k=g(Z_k) Xk=g(Zk),现在我们可以放心地最小化 D ( X ^ k , X k ) 2 D(\hat{X}_k,X_k)^2 D(X^k,Xk)2,因为 Z k Z_k Zk是从专属 X k X_k Xk的分布中采样出来的,这个生成器应该要把开始的 X k X_k Xk还原回来。示意图如图1所示。

根据上边图1描述的过程,首先,我们希望重构 X X X,也就是最小化 D ( X ^ k , X k ) 2 D(\hat{X}_k,X_k)^2 D(X^k,Xk)2,但是这个重构过程受到噪声的影响,因为 Z k Z_k Zk是通过重新采样过的,不是直接由encoder算出来的。显然噪声会增加重构的难度,不过好在这个噪声强度(也就是方差)通过一个神经网络算出来的,所以最终模型为了重构得更好,肯定会想尽办法让方差为0。而方差为0的话,也就没有随机性了,所以不管怎么采样其实都只是得到确定的结果(也就是均值),只拟合一个当然比拟合多个要容易,而均值是通过另外一个神经网络算出来的。

这样的话,模型会慢慢退化成普通的AutoEncoder,噪声不再起作用。

其实VAE还让所有的 Q ( Z ∣ X ) Q(Z|X) Q(ZX)都向标准正态分布看齐,这样就防止了噪声为零,同时保证了模型具有生成能力。怎么理解“保证了生成能力”呢?如果所有的 Q ( Z ∣ X ) Q(Z|X) Q(ZX)都很接近标准正态分布 N ( 0 , I ) N(0,I) N(0,I),那么根据定义

P ( Z ) = ∑ X Q ( Z ∣ X ) P ( X ) = ∑ X N ( 0 , I ) P ( X ) = N ( 0 , I ) ∑ X P ( X ) = N ( 0 , I ) \begin{aligned} P(Z)&= \sum_XQ(Z|X)P(X) \\ &=\sum_X\mathcal{N}(0,I)P(X) \\ &=\mathcal{N}(0,I)\sum_XP(X) \\ &=\mathcal{N}(0,I) \end{aligned} P(Z)=XQ(ZX)P(X)=XN(0,I)P(X)=N(0,I)XP(X)=N(0,I)

这样我们就能达到我们的先验假设: P ( Z ) P(Z) P(Z)是标准正态分布。此时,原始的示意图1变为了下边的形式。

在这里插入图片描述
图3 分布标准化后的VAE示意图

那怎么让所有的 Q ( Z ∣ X ) Q(Z|X) Q(ZX)都向 N ( 0 , I ) N(0,I) N(0,I)看齐呢?如果没有外部知识的话,其实最直接的方法应该是在重构误差的基础上中加入额外的 l o s s loss loss

L μ = ∥ f 1 ( X k ) ∥ 2 L σ 2 = ∥ f 2 ( X k ) ∥ 2 \begin{aligned} \mathcal{L}_\mu&=\|f_1(X_k)\|^2 \\ \quad\mathcal{L}_{\sigma^2}&=\|f_2(X_k)\|^2 \end{aligned} LμLσ2=f1(Xk)2=f2(Xk)2

因为它们分别代表了均值 μ k μ_k μk和方差的对数 l o g σ k 2 logσ^2_k logσk2,达到 N ( 0 , I ) N(0,I) N(0,I)就是希望二者尽量接近于 0 0 0了。不过,这又会面临着这两个损失的比例要怎么选取的问题,选取得不好,生成的图像会比较模糊。所以,原论文直接算了一般(各分量独立的)正态分布与标准正态分布的KL散度 K L ( N ( μ , σ 2 ) ∥∥ N ( 0 , I ) ) KL(N(μ,σ^2)∥∥N(0,I)) KL(N(μ,σ2)∥∥N(0,I))作为这个额外的 l o s s loss loss,计算结果为

K L ( N ( μ , σ 2 ) ∥ N ( 0 , 1 ) ) = 1 2 ( − log ⁡ σ 2 + μ 2 + σ 2 − 1 ) KL\Big(N(\mu,\sigma^2)\Big\Vert N(0,1)\Big)=\frac12\Big(-\log\sigma^2+\mu^2+\sigma^2-1\Big) KL(N(μ,σ2) N(0,1))=21(logσ2+μ2+σ21)

与之前的结果一致。

4、重参数技巧

要从 Q ( Z ∣ X k ) Q(Z|X_k) Q(ZXk)中采样一个 Z k Z_k Zk出来,尽管我们知道了 Q ( Z ∣ X k ) Q(Z|X_k) Q(ZXk)是正态分布,但是均值方差都是靠模型算出来的,我们要靠这个过程反过来优化均值方差的模型,但是“采样”这个操作是不可导的,而采样的结果是可导的。我们利用

1 2 π σ 2 exp ⁡ ( − ( z − μ ) 2 2 σ 2 ) d z = 1 2 π exp ⁡ [ − 1 2 ( z − μ σ ) 2 ] d ( z − μ σ ) \begin{aligned} &\frac1{\sqrt{2\pi\sigma^2}}\exp\biggl(-\frac{(z-\mu)^2}{2\sigma^2}\biggr)dz \\ =&\frac1{\sqrt{2\pi}}\exp\left[-\frac12\left(\frac{z-\mu}\sigma\right)^2\right]d\left(\frac{z-\mu}\sigma\right) \end{aligned} =2πσ2 1exp(2σ2(zμ)2)dz2π 1exp[21(σzμ)2]d(σzμ)

这说明 ( z − μ ) / σ = ε (z−μ)/σ=ε (zμ)/σ=ε是服从均值为 0 0 0、方差为 1 1 1的标准正态分布的,要同时把 d z dz dz考虑进去,是因为乘上 d z dz dz才算是概率,去掉 d z dz dz是概率密度而不是概率。这时候我们得到:

N ( μ , σ 2 ) N(μ,σ^2) N(μ,σ2)中采样一个 Z Z Z,相当于从 N ( 0 , I ) N(0,I) N(0,I)中采样一个 ε ε ε,然后让 Z = μ + ε × σ Z=μ+ε×σ Z=μ+ε×σ

于是,我们将从 N ( μ , σ 2 ) N(μ,σ^2) N(μ,σ2)采样变成了从 N ( 0 , I ) N(0,I) N(0,I)中采样,然后通过参数变换得到从 N ( μ , σ 2 ) N(μ,σ^2) N(μ,σ2)中采样的结果。这样一来,“采样”这个操作就不用参与梯度下降了,改为采样的结果参与,使得整个模型可训练了。

参考:
1、详解VAE(变分自编码器)
2、变分自编码器(一):原来是这么一回事

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1643579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue点餐系统设计和实现(源码+LW+部署讲解)

🌹作者简介:✌全网粉丝10W,前大厂员工,多篇互联网电商推荐系统专利,现有多家创业公司,致力于建站、运营、SEO、网赚等赛道。也是csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华…

力扣每日一题104:二叉树的最大深度

题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2…

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件&#xff0c;添加配置 因为之后用到lambda&#xff1b; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…

了解并学会使用反射

目录 一、反射的应用场景&#xff08;简单了解&#xff09; 二、反射的定义 三、关于反射的四个重要的类 四、反射的使用 1.Class获取一个class对象的方式 方式一&#xff1a;forName&#xff08;&#xff09;&#xff1a; 方式二&#xff1a;封装类.Class&#xff1a; …

机器学习第37周周报 GGNN

文章目录 week37 GGNN摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构3.1 数据处理部分3.2 门控图神经网络3.3 掩码操作 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 传感器设置策略4.3.2 数据集4.3.3 实验设置4.3.4 模型参数设置4.3.5 实验结果 5. 结论 …

uniapp 安卓腾讯buglyapp性能监控原生插件

插件介绍 腾讯Bugly SDK可以帮助你发现多类异常问题&#xff0c;如崩溃&#xff0c;ANR&#xff0c;OOM&#xff0c;内存使用异常&#xff0c;应用操作卡顿&#xff0c;启动耗时过长等质量问题 插件地址 安卓腾讯buglyapp性能监控原生插件 - DCloud 插件市场 使用文档 uni…

大数据BI可视化(Echarts组件)项目开发-熟悉交互API5.0

全局echarts对象 init初始化 registerTheme注册主题 var mCharts echarts.init(document.querySelector("div"), itcast)registerMap地图图表 connect 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

Vue按照顺序实现多级弹窗(附Demo)

目录 前言1. 单个弹窗2. 多级弹窗 前言 强化各个知识点&#xff0c;以实战融合&#xff0c;以下两个Demo从实战提取 1. 单个弹窗 部署按钮框以及确定的方法即可 截图如下所示&#xff1a; 以下Demo整体逻辑如下&#xff1a; 点击“生成周月计划”按钮会触发showWeekPlanDia…

【前端学习——网络相关】浏览器同源策略和跨域

浏览器的同源策略 为什么要有&#xff1f; 帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。&#xff08;就是为了安全&#xff09; 如果非同源&#xff0c;共有三种行为受到限制 &#xff08;1&#xff09; Cookie、LocalStorage 和 IndexDB 无法读取。 &#xff08;2…

JavaScript中的DOM和BOM

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;Web API&#x1f340;1 API的概念&#x1f340;2 Web API的概念…

闲来装个虚拟机Ubuntu24.04和硬盘分区及挂载

简述 最近ubuntu出新版本了&#xff0c;ubuntu24.04&#xff0c; 俗称高贵食蚁兽。5年前进行Android或者linux开发基本是在windows下的虚拟机中进行。目前&#xff0c;虽然物质基础提高了&#xff0c;功能有独立进行编译、代码管理的服务器了。可以通过ssh登录&#xff0c;但是…

基于java,SpringBoot和Vue的智慧校园在线考试留言讨论系统设计

摘要 基于Java, SpringBoot和Vue的智慧校园在线考试留言讨论系统是一个为现代教育需求定制的Web应用&#xff0c;它结合了最新的前后端技术来提供一个互动性强、用户友好的学习和交流平台。该系统旨在通过提供实时留言和讨论功能&#xff0c;增进学生间的互动以及师生之间的沟…

第九篇:Python编程的魔法:掌握高级语法糖与技巧

Python编程的魔法&#xff1a;掌握高级语法糖与技巧 1 引言 在编程的世界里&#xff0c;"语法糖"这个术语指的是那些让代码更容易读写的语法。Python作为一个强调可读性和效率的语言&#xff0c;提供了大量的语法糖。那么为什么需要掌握Python的高级特性呢&#xff…

C++ | Leetcode C++题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution { public:int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int)round(fibn / sqrt5);} };

Microsoft 365 for Mac(Office 365)v16.84正式激活版

office 365 for mac包括Word、Excel、PowerPoint、Outlook、OneNote、OneDrive和Teams的更新。Office提供了跨应用程序的功能&#xff0c;帮助用户在更短的时间内创建令人惊叹的内容&#xff0c;您可以在这里创作、沟通、协作并完成重要工作。 Microsoft 365 for Mac(Office 36…

【论文阅读笔记】Order Matters(AAAI 20)

个人博客地址 注&#xff1a;部分内容参考自GPT生成的内容 论文笔记&#xff1a;Order Matters&#xff08;AAAI 20&#xff09; 用于二进制代码相似性检测的语义感知神经网络 论文:《Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection》…

华为对于商机的判断工具(收藏):PPVVC工具

来自《LTC与铁三角∶从线索到回款》一书中不错的收藏&#xff1a; 企业的合同商务部把这个模型开发为一个工具&#xff0c;基于 痛点&#xff08; Pain &#xff09;、权力&#xff08; Power &#xff09;、构想&#xff08; Vision &#xff09;、价值 &#xff08; Value …

6层板学习笔记2

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 67、多层板的电源建议直接大面积铺铜,不建议走线,铺铜充分满足其载流能力 68、凡亿推荐表层1OZ的铜厚线宽20MIL能承载1A的电流,内层0.5OZ的铜厚线宽为40MIL能承载1A的电流,过孔直径20MIL(0.5MM)能承载1A左右的电流,实际设…

《QT实用小工具·五十五》带有标签、下划线的Material Design风格输入框

1、概述 源码放在文章末尾 该项目实现了一个带有标签动画、焦点动画、正确提示、错误警告的单行输入框控件。下面是demo演示&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef LABELEDEDIT_H #define LABELEDEDIT_H#include <QObject> #include <QWidget>…

FTP和NFS

一、FTP 1.FTP原理 FTP&#xff08;file Transfer Protocol&#xff0c;文件传输协议&#xff09;&#xff0c;是典型的C/S架构的应用层协议&#xff0c;由客户端软件和服务端软件两个部分共同实现文件传输功能&#xff0c;FTP客户端和服务器之间的连接时可靠的&#xff0c;面…