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

网站安全建设架构wordpress页面都在

网站安全建设架构,wordpress页面都在,网站后台建设公司,如何推广自己的产品Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么#xff1f;VAE的本质结构正态分布#xff1f;变分在哪里参考博客仅做学习记录#xff0c;侵删分布变换 VAE和GAN都是生成式模型#xff0c;它们俩的目标基本一致#x… Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么VAE的本质结构正态分布变分在哪里参考博客仅做学习记录侵删分布变换 VAE和GAN都是生成式模型它们俩的目标基本一致希望构建一个从隐变量Z来生成目标数据X的模型但实现上有所不同。 更准确地讲它们是假设Z服从了某些常见的分布(比如正态分布或均匀分布)然后希望训练一个模型Xg(Z), g为生成器generator, 这个模型可以将原来的概率分布映射到训练集的概率分布即它们的目的都是进行分布之间的变换。 生成模型的难题就是判断生成分布与真实分布的相似度因为我们只知道两者的采样结果不知道它们的分布表达式。 那现在假设 Z 服从标准的正态分布那我们就可以从中采样得到若干个 Z1,Z2,Z3,⋯,ZnZ_{1}, Z_{2}, Z_{3},\cdots, Z_{n}Z1​,Z2​,Z3​,⋯,Zn​, 然后输入到生成器中得到X^1g(Z1),X^2g(Z2),⋯X^ng(Zn)\hat{X}_{1}g(Z_{1}), \hat{X}_{2}g(Z_{2}), \cdots\hat{X}_{n}g(Z_{n})X^1​g(Z1​),X^2​g(Z2​),⋯X^n​g(Zn​), 我们怎么判断这个通过 ggg 构造出来的数据集它的分布跟我们目标的数据集分布是不是一样的呢 思考 Q1KL散度用来衡量两个分布之间的相似度用KL散度可以吗 答不行因为 KL 散度是根据两个概率分布的表达式来算它们的相似度的然而目前我们并不知道它们的概率分布的表达式。 我们只有一批从构造的分布采样而来的数据{X^1,X^2,X^3,⋯,X^n\hat{X}_{1}, \hat{X}_{2}, \hat{X}_{3},\cdots, \hat{X}_{n}X^1​,X^2​,X^3​,⋯,X^n​}, 还有一批从真实的分布采样而来的数据{X1,X2,X3,⋯,XnX_{1}, X_{2}, X_{3},\cdots, X_{n}X1​,X2​,X3​,⋯,Xn​}, 即训练集我们只有样本本身没有分布表达式当然也就没有办法算 KL 散度。 虽然遇到困难但还是要想办法解决的。GAN 的思路很直接粗犷既然没有合适的度量那我干脆把这个度量也用神经网络训练出来吧。 VAE慢谈 首先我们有一批数据样本{X1,X2,⋯,XnX_{1}, X_{2}, \cdots, X_{n}X1​,X2​,⋯,Xn​}其整体用 X 来描述我们本想根据{X1,X2,⋯,XnX_{1}, X_{2}, \cdots, X_{n}X1​,X2​,⋯,Xn​}得到 X 的分布 p(X), 如果能得到的话那我直接根据 p(X) 来采样这样就可以得到所有的 X 了(包括{X1,X2,⋯,XnX_{1}, X_{2}, \cdots, X_{n}X1​,X2​,⋯,Xn​}之外的 XiX_{i}Xi​), 这是一个终极理想的生成模型了。 当然这个理想很难实现于是我们将分布改一改 p(X)∑Zp(X∣Z)p(Z)①p(X)\sum_{Z}p(X|Z)p(Z)\quad\quad①p(X)Z∑​p(X∣Z)p(Z)① 这里我们就不区分求和还是求积分了意思对了就行。此时 p(X|Z) 就描述了一个由 Z 来生成 X的模型而我们假设 Z 服从标准正态分布也就是 p(Z)N(0,I)p(Z)N(0,I)p(Z)N(0,I)。如果这个理想能实现那么我们就可以先从标准正态分布中采样一个 Z然后根据 Z 来算一个 X也是一个很棒的生成模型。 接下来就是结合自编码器来实现重构保证有效信息没有丢失再加上一系列的推导最后把模型实现。框架的示意图如下: 上图的疑惑所在 对于上图的话我们其实完全不清楚究竟经过重新采样出来的ZkZ_{k}Zk​是不是还对应着原来的 XkX_kXk​所以我们如果直接最小化 D(X^k,Xk)2D(\hat{X}_k, X_k)^2D(X^k​,Xk​)2这里 D 代表某种距离函数是很不科学的而事实上你看代码也会发现根本不是这样实现的。 VAE 初现 其实在整个 VAE 模型中我们并没有去使用 p(Z)先验分布是正态分布的假设我们用的是假设 p(Z|X)后验分布是正态分布。 具体来说给定一个真实样本 XkX_kXk​我们假设存在一个专属于 XkX_kXk​ 的分布 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​)学名叫后验分布并进一步假设分布 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 是(独立的、多元的)正态分布。 为什么要强调“专属”呢因为我们后面要训练一个生成器 Xg(Z)希望能够把从分布 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 采样出来的一个 ZkZ_kZk​ 还原为 XkX_kXk​。 如果假设 p(Z) 是正态分布然后从 p(Z) 中采样一个 Z那么我们怎么知道这个 Z 对应于哪个真实的 X 呢现在 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 专属于 XkX_kXk​我们有理由说从这个分布采样出来的 Z 应该要还原到 XkX_kXk​ 中去。 事实上在论文 Auto-Encoding Variational Bayes 的应用部分也特别强调了这一点 In this case, we can let the variational approximate posterior be a multivariate Gaussian with a diagonal covariance structure: log⁡qϕ(z∣xi)log⁡N(z;μi,σi2I)②\log q_{\phi}(z|x_{i})\log N(z;\mu_{i}, \sigma^{2}_{i}I)\quad②logqϕ​(z∣xi​)logN(z;μi​,σi2​I)② 论文中的上式是实现整个模型的关键不知道为什么很多教程在介绍 VAE 时都没有把它凸显出来。尽管论文也提到 p(Z) 是标准正态分布然而那其实并不是本质重要的。 再次强调这时候每一个 XkX_kXk​ 都配上了一个专属的正态分布才方便后面的生成器做还原。但这样有多少个 X 就有多少个正态分布了。我们知道正态分布有两组参数均值 μ\muμ 和方差 σ2\sigma^{2}σ2如果X为向量的话则μ\muμ 和σ2\sigma^{2}σ2都是向量。 那怎么找出专属于 XkX_kXk​ 的正态分布 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 的均值和方差呢好像并没有什么直接的思路。 好吧就用神经网络来拟合出来。这就是神经网络时代的哲学难算的我们都用神经网络来拟合在 WGAN 那里我们已经体验过一次了现在再次体验到了。 于是我们构建了两个神经网络 μkf1(Xk),log⁡σ2f2(Xk)\mu_{k}f_{1}(X_{k}), \log \sigma^{2} f_{2}(X_{k})μk​f1​(Xk​),logσ2f2​(Xk​)来求 μ\muμ 和 σ\sigmaσ。我们选择拟合 log⁡σ2\log \sigma^{2}logσ2, 而不是直接拟合 σ2\sigma^{2}σ2, 是因为 σ2\sigma^{2}σ2 总是非负的需要加激活函数处理而拟合 log⁡σ2\log \sigma^{2}logσ2 不需要加激活函数因为它可正可负。 具体这个是咋用神经网络去求μ,σ\mu,\sigmaμ,σ呢可以参看下图 或者可以去看这篇博客用VAE生成图像会得到更深刻的理解 到这里我能知道专属于 XkX_kXk​ 的均值和方差了也就知道它的正态分布长什么样了然后从这个专属分布中采样一个 ZkZ_kZk​ 出来然后经过一个生成器得到 X^kg(Zk)X̂_kg(Z_k)X^k​g(Zk​)。 其实就是 Zkμϵ∗σ,ϵ∼N(0,1)③Z_{k} \mu \epsilon*\sigma,\quad\quad\epsilon\sim N(0,1)\quad\quad③Zk​μϵ∗σ,ϵ∼N(0,1)③ 也可以写成Zkμϵ∗e12.log⁡σ2,ϵ∼N(0,1)④Z_{k} \mu \epsilon*e^{\frac{1}{2}.\log \sigma^2},\quad\quad\epsilon\sim N(0,1)\quad④Zk​μϵ∗e21​.logσ2,ϵ∼N(0,1)④这俩式子本质都是一样的。 现在我们可以放心地最小化 D(X^k,Xk)2D(X̂_k,X_k)^2D(X^k​,Xk​)2因为 ZkZ_kZk​ 是从专属 XkX_kXk​ 的分布中采样出来的这个生成器应该要把开始的 XkX_kXk​ 还原回来。于是可以画出 VAE 的示意图 事实上VAE 是为每个样本构造专属的正态分布然后采样来重构。 分布标准化 让我们来思考一下根据上图的训练过程最终会得到什么结果。 首先我们希望重构 X也就是最小化 D(X^k,Xk)2D(X̂_k,X_k)^2D(X^k​,Xk​)2但是这个重构过程受到噪声的影响因为 ZkZ_kZk​ 是通过重新采样过的即上面式子③Zkμϵ∗σ,ϵ∼N(0,1)Z_{k} \mu \epsilon*\sigma,\quad\epsilon\sim N(0,1)Zk​μϵ∗σ,ϵ∼N(0,1)不是直接由 encoder 算出来的,直接由encoder算出来的是μ,σ\mu, \sigmaμ,σ或者log⁡σ2\mathrm{\log \sigma^2}logσ2。 显然噪声会增加重构的难度不过好在这个噪声强度也就是方差σ\sigmaσ通过一个神经网络算出来的所以最终模型为了重构得更好肯定会想尽办法让方差为0。即让这个Z 更接近 X。 但是由Zkμϵ∗σ,ϵ∼N(0,1)Z_{k} \mu \epsilon*\sigma,\quad\epsilon\sim N(0,1)Zk​μϵ∗σ,ϵ∼N(0,1)可知当σ0\sigma0σ0时也就没有随机性了即固定有ZμZ\muZμ所以不管怎样采样其实都只是得到确定的结果(也就是均值μ\muμ)只拟合一个当然比拟合多个要容易而均值是通过另外一个神经网络算出来的。 说白了模型会慢慢退化为普通的AE(autoEncoder)噪声不再起作用。 但是自编码器AE不能随意产生合理的潜在变量从而导致它无法产生新的内容。因为潜在变量Z都是编码器从原始图片中产生的。这样不就白费力气了吗说好的生成模型呢 别急别急其实 VAE 还让所有的 p(Z|X) 都向标准正态分布看齐这样就防止了噪声为零同时保证了模型具有生成能力。即不能都是ZμZ\muZμ, 那为什么这样就可以保证“生成能力”了呢 如果所有的 p(Z|X) 都很接近标准正态分布 N(0,I)那么根据定义 p(Z)∑Xp(Z∣X)p(X)∑XN(0,I)p(X)N(0,I)∑Xp(X)N(0,I)⑤p(Z)\sum_{X}p(Z|X)p(X)\sum_{X}N(0,I)p(X)N(0,I)\sum_{X}p(X)N(0,I)\quad⑤p(Z)X∑​p(Z∣X)p(X)X∑​N(0,I)p(X)N(0,I)X∑​p(X)N(0,I)⑤ 这样我们就能达到我们的先验假设p(Z) 是标准正态分布。然后我们就可以放心地从 N(0,I) 中采样来生成图像了。 为什么符合先验假设p(Z)是标准正态分布就可以放心从N(0,I)中采样生成图像了呢 答个人理解是如下图中的{Z1,Z2⋯,Z6Z_1,Z_2\cdots,Z_6Z1​,Z2​⋯,Z6​}都是从N(0,I)中采样得到的然后通过生成器可以得到{X1^,X2^,⋯X6^\hat{X_1},\hat{X_2},\cdots\hat{X_6}X1​^​,X2​^​,⋯X6​^​}假设已经经过训练好了那就是说训练后我们认为训练的还不错即Xi^≈Xi\hat{X_i}\approx X_iXi​^​≈Xi​,即生成样本和真实样本很像即符合真实样本的分布。这个时候拿训练好的模型然后从标准正态分布N(0,I)中随机采样Z然后inference得到生成的样本也就可以认为是符合真实样本的分布了。 为了使模型具有生成能力VAE要求每个p(Z|X)都向正态分布看齐。 那怎么让所有的 p(Z|X) 都向 N(0,I) 看齐呢如果没有外部知识的话其实最直接的方法应该是在重构误差的基础上中加入额外的 loss Lμ∥f1(Xk)∥2⑥\mathcal{L}_{\mu}\left\|f_{1}\left(X_{k}\right)\right\|^{2} \quad ⑥Lμ​∥f1​(Xk​)∥2⑥ Lσ2∥f2(Xk)∥2⑦\mathcal{L}_{\sigma^{2}}\left\|f_{2}\left(X_{k}\right)\right\|^{2}\quad⑦Lσ2​∥f2​(Xk​)∥2⑦ 因为它们分别代表了均值μk\mu_kμk​和方差的对数log⁡σ2\log \sigma^2logσ2 达到N(0,I)就是希望Lμ\mathcal{L}_{\mu}Lμ​和Lσ2\mathcal{L}_{\sigma^{2}}Lσ2​尽量接近于0。不过这又会面临着这两个损失的比例要怎么选取的问题选取得不好生成的图像会比较模糊。 说明 1.希望Lμ\mathcal{L_{\mu}}Lμ​尽量接近于0 首先要知道f1(Xk)f_{1}(X_{k})f1​(Xk​)就是指用神经网络求出来的μ\muμ那自然是希望μ\muμ越接近0了。 2.为啥希望Lσ2\mathcal{L}_{\sigma^{2}}Lσ2​也尽量接近于0呢 f1(Xk)f_{1}(X_{k})f1​(Xk​)就是指用神经网络求出来的log⁡σ2\log \sigma^2logσ2。 因为是希望σ≈1\sigma\approx1σ≈1, 那就是log⁡σ2≈0\log \sigma^2\approx0logσ2≈0。 所以原论文直接算了一般各分量独立的正态分布与标准正态分布的 KL 散度 KL(N(μ,σ2)‖N(0,I))KL(N(μ,σ^2)‖N(0,I))KL(N(μ,σ2)‖N(0,I)) 作为这个额外的 loss计算结果为 Lμ,σ212∑i1d(μ(i)2σ(i)2−log⁡σi2−1)⑧\mathcal{L}_{\mu,\sigma^2}\frac{1}{2}\sum_{i1}^{d}(\mu_{(i)}^{2}\sigma_{(i)}^{2}-\log \sigma_{i}^{2}-1)\quad⑧Lμ,σ2​21​i1∑d​(μ(i)2​σ(i)2​−logσi2​−1)⑧ 这里的 d 是隐变量 Z 的维度而 μ(i)μ_{(i)}μ(i)​ 和 σ(i)2σ_{(i)}^{2}σ(i)2​ 分别代表一般正态分布的均值向量和方差向量的第 i 个分量。直接用这个式子做补充 loss就不用考虑均值损失和方差损失的相对比例问题了。 显然这个loss也可以分为两部分理解 Lμ,σ2LμLσ2⑨\mathcal{L}_{\mu, \sigma^2}\mathcal{L_{\mu}L_{\sigma^2}}\quad⑨Lμ,σ2​Lμ​Lσ2​⑨ Lμ12∑i1dμ(i)212∥f1(X)∥2⑩\mathcal{L_{\mu}}\frac{1}{2}\sum_{i1}^{d}\mu_{(i)}^{2}\frac{1}{2}\left\|f_{1}\left(X\right)\right\|^{2}\quad⑩Lμ​21​i1∑d​μ(i)2​21​∥f1​(X)∥2⑩ Lσ212∑i1d(σ(i)2−log⁡σ(i)2−1)\mathcal{L_{\sigma^{2}}}\frac{1}{2}\sum_{i1}^{d}(\sigma_{(i)}^2-\log \sigma_{(i)}^2 - 1)Lσ2​21​i1∑d​(σ(i)2​−logσ(i)2​−1) 说明 式⑧的由来 具体可以见高斯分布的KL散度了解详细推导过程 重参数技巧 Reparameterization Trick 其实很简单就是我们要从 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 中采样一个 ZkZ_kZk​ 出来尽管我们知道了 p(Z∣Xk)p(Z|X_k)p(Z∣Xk​) 是正态分布但是均值方差都是靠模型算出来的我们要靠这个过程反过来优化均值方差的模型但是“采样”这个操作是不可导的而采样的结果是可导的于是我们利用了一个事实 从N(μ,σ2)N(\mu, \sigma^2)N(μ,σ2)中采样一个Z, 相当于从N(0,I)N(0,I)N(0,I)中采样一个ϵ\epsilonϵ, 然后让Zμϵ∗σZ\mu \epsilon * \sigmaZμϵ∗σ 所以我们将从 N(μ,σ2)N(μ,σ^2)N(μ,σ2) 采样变成了从 N(0,I)N(0 ,I)N(0,I) 中采样然后通过参数变换得到从N(μ,σ2)N(μ,σ^2)N(μ,σ2) 中采样的结果。这样一来“采样”这个操作就不用参与梯度下降了改为采样的结果参与使得整个模型可训练了。 具体可以参看这篇博客 VAE的本质是什么 VAE 的本质是什么VAE 虽然也称是 AEAutoEncoder的一种但它的做法或者说它对网络的诠释是别具一格的。 在 VAE 中它的 Encoder 有两个一个用来计算均值一个用来计算方差这已经让人意外了Encoder 不是用来 Encode 的是用来算均值和方差的这真是大新闻了还有均值和方差不都是统计量吗怎么是用神经网络来算的 VAE 从让普通人望而生畏的变分和贝叶斯理论出发最后落地到一个具体的模型中虽然走了比较长的一段路但最终的模型其实是很接地气的。 它本质上就是在我们常规的自编码器的基础上对 encoder 的结果在VAE中对应着计算均值的网络加上了“高斯噪声”使得结果 decoder 能够对噪声有鲁棒性而那个额外的 KL loss目的是让均值为 0方差为 1事实上就是相当于对 encoder 的一个正则项希望 encoder 出来的东西均有零均值。 那另外一个 encoder对应着计算方差σ\sigmaσ的网络的作用呢它是用来动态调节噪声的强度的。 直觉上来想当 decoder 还没有训练好时重构误差远大于 KL loss就会适当降低噪声KL loss 增加使得拟合起来容易一些重构误差开始下降。 反之如果 decoder 训练得还不错时重构误差小于 KL loss这时候噪声就会增加KL loss 减少使得拟合更加困难了重构误差又开始增加这时候 decoder 就要想办法提高它的生成能力了。 VAE的本质结构 说白了重构的过程是希望没噪声的而 KL loss 则希望有高斯噪声的两者是对立的。所以VAE 跟 GAN 一样内部其实是包含了一个对抗的过程只不过它们两者是混合起来共同进化的。 说明 重构即训练的过程中从XaX_{a}Xa​到Z再到XbX_{b}Xb​自然是希望Z能稳定下来为一个定值这样恢复出来的XbX_{b}Xb​就更具有确定性更能接近真实样本XaX_{a}Xa​。 KL loss: 因为我们训练的目的就是为了让模型有生成能力即从噪声出发通过模型来生成符合真是样本分布的新样本。如果我们在训练过程中让Z稳定下来为一个定值那我们在inference的时候就不能从噪声出发了。 因为我们最终的目的是拿训练好的模型然后从标准正态分布N(0,I)中随机采样Z然后inference得到生成的样本也就可以认为是符合真实样本的分布了所以我们并不能真的让Z为一个定值固定下来。这样用含有噪声的Z去生成Xi^\hat{X_{i}}Xi​^​, 然后来衡量生成数据Xi^的分布\hat{X_{i}}的分布Xi​^​的分布与原始数据XiX_{i}Xi​的分布之间的相似度自然是越相似越好。 可以结合前面这个问题**为什么符合先验假设p(Z)是标准正态分布就可以放心从N(0,I)中采样生成图像了呢**来进行思考。 正态分布 对于 p(Z|X) 的分布读者可能会有疑惑是不是必须选择正态分布可以选择均匀分布吗 首先这个本身是一个实验问题两种分布都试一下就知道了。但是从直觉上来讲正态分布要比均匀分布更加合理因为正态分布有两组独立的参数均值和方差而均匀分布只有一组。 前面我们说在 VAE 中重构跟噪声是相互对抗的重构误差跟噪声强度是两个相互对抗的指标而在改变噪声强度时原则上需要有保持均值不变的能力不然我们很难确定重构误差增大了究竟是均值变化了encoder的锅还是方差变大了噪声的锅。 而均匀分布不能做到保持均值不变的情况下改变方差所以正态分布应该更加合理。 变分在哪里 还有一个有意思但不大重要的问题是VAE 叫做“变分自编码器”它跟变分法有什么联系在VAE 的论文和相关解读中好像也没看到变分法的存在 其实如果读者已经承认了 KL 散度的话那 VAE 好像真的跟变分没多大关系了因为 KL 散度的定义是 KL(p(x)∣∣q(x))∫p(x)ln⁡p(x)q(x)dxKL(p(x)||q(x))\int p(x)\ln \frac{p(x)}{q(x)}dxKL(p(x)∣∣q(x))∫p(x)lnq(x)p(x)​dx 如果是离散概率分布就要写成求和我们要证明已概率分布 p(x)或固定q(x)的情况下对于任意的概率分布 q(x)或 p(x)都有 KL(p(x)‖q(x))≥0而且只有当p(x)q(x)时才等于零。 KL散度的非负性证明 因为 KL(p(x)‖q(x))实际上是一个泛函要对泛函求极值就要用到变分法当然这里的变分法只是普通微积分的平行推广还没涉及到真正复杂的变分法。而 VAE 的变分下界是直接基于 KL 散度就得到的。所以直接承认了 KL 散度的话就没有变分的什么事了。 一句话VAE 的名字中“变分”是因为它的推导过程用到了 KL 散度及其性质。
http://www.dnsts.com.cn/news/261475.html

相关文章:

  • 大型网站技术架构 pdf如何做外贸品牌网站建设
  • 王烨峰seo教程seo教程
  • wordpress访问子网站珠海网站建设推广公司
  • wordpress建站教程阿里云建设旅游服务类网站的可行性报告
  • 使用flashfxp上传网站重庆企业建站系统
  • 个人建站教程wordpress js 被改
  • 企业网站管理系统模板活动策划网站
  • 成都响应式网站建设手机报价网站大全
  • 钓鱼网站源码深圳市建设设计院网站
  • ftp怎么修改网站游戏推广员每天做什么
  • 如何设计好网站新手小白学编程
  • 百度开户做网站2400产品型网站
  • 500强企业网站建设wordpress+主题页脚
  • 做网站要服务器和什么软件wordpress修改数据库
  • 亚洲建行网站打不开关键词录入榜
  • 高端html5网站建设织梦模板网站建设的教程
  • 高端网站优化网站图标怎么换
  • 电子商务网站建设 考卷简述嵌入式软件开发流程
  • 铜山网站建设网站建设综合实训总结
  • 网站优化排名提升针对人群不同,网站做细分
  • 建网站模板wordpress密码阅读
  • 网站地图php的网站架构建设框架
  • 网站开发项目职责学做网站要学什么
  • 镇江网站seo单页销售型网站
  • 网站定制站下做图软件在哪个网站下载器
  • 网站删除关键词python开发一个wordpress
  • 开发网站的基本过程wordpress伪静态化后百度地图显示404错误页面
  • 合肥做网站汇站网织梦仿商城网站
  • 公司网站建设找谁wordpress 酒店模板
  • 成都网站建设有哪些wordpress添加自定义tag标签