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

大连科技官方网站网站上传wordpress

大连科技官方网站,网站上传wordpress,滕州网站建设制作,优秀企业建站1.基本概念 1.1 概率 这里有#xff1a; x为真实图像#xff0c;开源为数据集, 编码器将其编码为分布参数 x ^ \hat{x} x^为生成图像, 通过解码器获得 p ( x ) ^ \hat{p(x)} p(x)^​: 观测数据的分布, 即数据集所构成的经验分布 p r e a l ( x ) p_{real}(x) preal​(x): …1.基本概念 1.1 概率 这里有 x为真实图像开源为数据集, 编码器将其编码为分布参数 x ^ \hat{x} x^为生成图像, 通过解码器获得 p ( x ) ^ \hat{p(x)} p(x)^​: 观测数据的分布, 即数据集所构成的经验分布 p r e a l ( x ) p_{real}(x) preal​(x): 真实世界的数据分布这个是最理想的情况 p ( x ) p(x) p(x):生成模型的分布目的是接近 p r e a l ( x ) p_{real}(x) preal​(x)避免过拟合到 p ( x ) ^ \hat{p(x)} p(x)^​ z ∼ N ( μ , σ ) 2 z \sim \mathcal{N}(\mu, \sigma)^2 z∼N(μ,σ)2 :潜空间向量, 通常希望约束于正态分布 p ( z ) p(z) p(z)先验分布即假设分布在 VAE 中通常假设为标准正态分布 q ϕ ( z ∣ x ) q_\phi(z∣x) qϕ​(z∣x): 后验分布是一种近似分布以逼近目标分布。依赖输入数据x预测潜向量分布即编码器 p θ ( x ∣ z ) p_\theta(x∣z) pθ​(x∣z): 条件分布通过z生成x即解码器 KL散度, 衡量分布相似性 当 q ϕ ( z ∣ x ) p ( z ) q_\phi(z∣x)p(z) qϕ​(z∣x)p(z), 散度为 0表示两个分布完全一致。 q ϕ ( z ∣ x ) ≠ p ( z ) q_\phi(z∣x)≠p(z) qϕ​(z∣x)p(z) 时散度为正值越大表示分布之间的差异越大。 KL 散度用于约束编码器生成的后验分布 q ϕ ( z ∣ x ) q_\phi(z∣x) qϕ​(z∣x) 接近先验分布 p ( z ) p(z) p(z) 1.2 模型 VAE与普通自编码器区别如下 普通自编码器AE 会直接将 x映射到一个固定的潜向量z变分自编码器VAE 则通过学习概率分布的参数均值 μ ( x ) \mu(x) μ(x)方差 σ 2 ( x ) \sigma^2(x) σ2(x) 来学习一个潜在分布 q ϕ ( x ∣ z ) q_\phi(x|z) qϕ​(x∣z) VAE训练一个自编码器, 目标是生成潜空间的分布参数即潜向量z的均值和方差而不是z本身。 因为学习的是一个分布参数z具有随机性即 x 和 z 不是一一对应的是一对多的关系 其设计原因分析如下 1.数据分布复杂真实世界中的非结构化数据分布是及其复杂且多样的。如果每个 x都严格映射到一个z,则潜在空间无法表达数据的多样性数据映射的z存在随机性。 2.有助于模型泛化: 学习一个分布近似分布而不是固定映射。在生成任务中随机采样z具有多样性而不仅仅是直接复现训练数据, 适应未见过的数据。 2.方法 2.1 编码器-E E将输入数据映射为潜在空间的概率分布参数 均值 μ \mu μ 与 方差 σ 2 \sigma^2 σ2。 μ \mu μ 和 σ 2 \sigma^2 σ2 分别代表潜空间向量的各元素均值和方差。 这里假定 q q q是可以通过学习参数 θ \theta θ学到公式如下 N ( z ; μ ( x ) , σ 2 ( x ) ) \mathcal{N}(z; \mu(x), \sigma^2(x)) N(z;μ(x),σ2(x)) 表示z服从正态分布其均值为 μ ( x ) \mu(x) μ(x)$ 即 q θ q_\theta qθ​用编码器E来学习: $E(x) \mu(x), \sigma^2(x), z \sim ( \mu(x), \sigma^2(x)) $ 2.2 解码器-D D的目的是输入潜向量 z重构输入数据 x, 得到 x ^ \hat{x} x^ 重参数化 由于分布输出的z是随机采样存在不确定性这里在送入D前重参数化: z u σ ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z u \sigma \cdot \epsilon, \epsilon \sim \mathcal{N}(0,1) zuσ⋅ϵ,ϵ∼N(0,1) 即z是一个确定的函数将随机性与模型参数 μ , σ \mu, \sigma μ,σ分离。 再送入解码器 x ^ D ( z ) \hat{x} D(z) x^D(z) 2.3 训练 VAE是将E和D作为一个整体训练即整个自编码器, 损失函数如下 L VAE E z ∼ q ϕ ( z ∣ x ) [ − log ⁡ p θ ( x ∣ z ) ] D KL ( q ϕ ( z ∣ x ) ∥ p ( z ) ) \mathcal{L}_{\text{VAE}} \mathbb{E}_{z \sim q_\phi(z|x)} \left[ -\log p_\theta(x|z) \right] D_\text{KL}(q_\phi(z|x) \parallel p(z)) LVAE​Ez∼qϕ​(z∣x)​[−logpθ​(x∣z)]DKL​(qϕ​(z∣x)∥p(z)) 简化为: L VAE \mathcal{L}_{\text{VAE}} LVAE​ 重构损失 KL散度 2.3.1 重构损失 表示在潜向量z按照近似后验分布 q ϕ ( z ∣ x ) q_\phi(z∣x) qϕ​(z∣x)采样时模型重构数据 x ^ \hat{x} x^的对数似然期望值: − E z ∼ q ϕ ( z ∣ x ) [ log ⁡ p θ ( x ∣ z ) ] -\mathbb{E}_{z \sim q_\phi(z \mid x)}\left[\log p_\theta(x \mid z)\right] −Ez∼qϕ​(z∣x)​[logpθ​(x∣z)] 这里加了负号即最大化重构概率转为损失值最小化。 直观理解 1.编码器 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ​(z∣x)为每个输入数据x提供一组潜向量z的分布参数。 2.解码器$p_\theta(x|z)尝试根据z重构原始数据x。 3.对 log ⁡ θ ( x ∣ z ) \log_\theta(x|z) logθ​(x∣z)取期望值是对不同z的采样重构结果进行平均。 如果解码器能很好地重构x, log ⁡ θ ( x ∣ z ) \log_\theta(x|z) logθ​(x∣z)值就大相反就小。 如果是二值像素, 即0 和 1。可以用交叉熵即BCEBinary Cross Entropy 即判断像素值接近 0 还是接近 1 BCE − 1 N ∑ i 1 N [ x i log ⁡ ( x ^ i ) ( 1 − x i ) log ⁡ ( 1 − x ^ i ) ] \text{BCE} -\frac{1}{N} \sum_{i1}^{N} \left[ x_i \log(\hat{x}_i) (1 - x_i) \log(1 - \hat{x}_i) \right] BCE−N1​∑i1N​[xi​log(x^i​)(1−xi​)log(1−x^i​)] 如果是[0,255],或者归一化为[0,1],[-1,1]的像素可以用MSE MSE 1 N ∑ i 1 N ( x i − x ^ i ) 2 \text{MSE} \frac{1}{N} \sum_{i1}^{N} (x_i - \hat{x}_i)^2 MSEN1​∑i1N​(xi​−x^i​)2 2.3.2 KL散度 KL 散度的定义 D KL ( q ϕ ( z ∣ x ) ∥ p ( z ) ) E q ϕ ( z ∣ x ) [ log ⁡ q ϕ ( z ∣ x ) p ( z ) ] D_\text{KL}(q_\phi(z|x) \parallel p(z)) \mathbb{E}_{q_\phi(z|x)} \left[ \log \frac{q_\phi(z|x)}{p(z)} \right] DKL​(qϕ​(z∣x)∥p(z))Eqϕ​(z∣x)​[logp(z)qϕ​(z∣x)​] 展开 D KL E z ∼ q ϕ ( z ∣ x ) [ − log ⁡ p θ ( x ∣ z ) log ⁡ q ϕ ( z ∣ x ) p ( z ) ] D_\text{KL} \mathbb{E}_{z \sim q_\phi(z|x)} \left[ -\log p_\theta(x|z) \log \frac{q_\phi(z|x)}{p(z)} \right] DKL​Ez∼qϕ​(z∣x)​[−logpθ​(x∣z)logp(z)qϕ​(z∣x)​] 进一步分解为 D KL − 1 2 ∑ i 1 d ( 1 log ⁡ σ i 2 − μ i 2 − σ i 2 ) D_\text{KL} -\frac{1}{2} \sum_{i1}^d \left( 1 \log \sigma_i^2 - \mu_i^2 - \sigma_i^2 \right) DKL​−21​∑i1d​(1logσi2​−μi2​−σi2​) 3.代码实现 训练VAE生成手写数字。 3.1 参数设置 模型极简的7层全连接自编码器E-4层 D-3层 数据集pytorch自带的mnist手写数据集每个样本像素为单通道 [28,28] epoch: 50次 batch-size64 learing-rate1e-3 或 5e-4 3.2 代码概述 导入必要的库 import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt编码器将输入数据映射为潜在变量 z 的均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2解码器从潜在变量 z 重构原始数据 class VAE(nn.Module):def __init__(self, input_dim, latent_dim):super(VAE, self).__init__()# 编码器self.encoder nn.Sequential(nn.Linear(input_dim, 512),nn.ReLU(),nn.Linear(512, 256),nn.ReLU())self.fc_mu nn.Linear(256, latent_dim) # 均值self.fc_logvar nn.Linear(256, latent_dim) # 对数方差# 解码器self.decoder nn.Sequential(nn.Linear(latent_dim, 256),nn.ReLU(),nn.Linear(256, 512),nn.ReLU(),nn.Linear(512, input_dim),nn.Sigmoid() # 用 Sigmoid 将输出值压缩到 [0, 1])def reparameterize(self, mu, logvar):使用重参数化技巧生成潜在变量 zstd torch.exp(0.5 * logvar) # 标准差eps torch.randn_like(std) # 标准正态分布的随机噪声return mu eps * stddef forward(self, x):# 编码h self.encoder(x)mu self.fc_mu(h)logvar self.fc_logvar(h)# 重参数化z self.reparameterize(mu, logvar)# 解码recon_x self.decoder(z)return recon_x, mu, logvar损失函数 def vae_loss(recon_x, x, mu, logvar):# 重构误差BCErecon_loss nn.functional.binary_cross_entropy(recon_x, x, reductionsum)# KL 散度kl_div -0.5 * torch.sum(1 logvar - mu.pow(2) - logvar.exp())return recon_loss kl_div数据加载和超参数设置 # 超参数 latent_dim 20 # 潜在空间维度 input_dim 28 * 28 # MNIST 图像大小 batch_size 64 epochs 50 lr 0.001# 数据加载器 transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) dataset torchvision.datasets.MNIST(root./data, trainTrue, transformtransform, downloadTrue) dataloader DataLoader(dataset, batch_sizebatch_size, shuffleTrue)训练 VAE, 先初始化模型和优化器 vae VAE(input_diminput_dim, latent_dimlatent_dim).to(cuda) optimizer optim.Adam(vae.parameters(), lrlr)for epoch in range(epochs):vae.train()total_loss 0for images, _ in dataloader:# 预处理数据images images.view(-1, input_dim).to(cuda)# 前向传播recon_images, mu, logvar vae(images)# 计算损失loss vae_loss(recon_images, images, mu, logvar)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()total_loss loss.item()print(fEpoch [{epoch1}/{epochs}] Loss: {total_loss / len(dataloader.dataset):.4f})生成新样本时只需要随机从潜在空间中采样z然后通过解码器生成数据 vae.eval() with torch.no_grad():# 从标准正态分布采样z torch.randn(256, latent_dim).to(cuda) # 16x16 256 个样本generated_images vae.decoder(z).view(-1, 1, 32, 32).cpu()# 创建 16x16 的网格grid torchvision.utils.make_grid(generated_images, nrow16, normalizeTrue)# 保存生成的图像为文件torchvision.utils.save_image(grid, generated_images.png, normalizeTrue)# 显示图像plt.imshow(grid.permute(1, 2, 0))plt.axis(off) # 去除坐标轴plt.show()4.实验结果 4.1 损失函数 损失函数值有效下降,在数据集迭代34次ep33后下降约一半 4.2 最终效果 epoch-1: epoch-12: epoch-33: 5.概率相关补充 5.1 条件概率-贝叶斯定理 p ( x , z ) p ( x ∣ z ) p ( z ) p(x,z) p(x|z)p(z) p(x,z)p(x∣z)p(z) p ( z ∣ x ) p ( x , z ) p ( x ) p ( x ∣ z ) p ( z ) p ( x ) p(z \mid x) \frac{p(x, z)}{p(x)} \frac{p(x \mid z) p(z)}{p(x)} p(z∣x)p(x)p(x,z)​p(x)p(x∣z)p(z)​ 5.2 KL散度函数 D K L ( q ( z ∣ x ) ∥ p ( z ) ) E q ( z ∣ x ) [ log ⁡ p ( z ) q ( z ∣ x ) ] ∫ q ( z ∣ x ) log ⁡ q ( z ∣ x ) p ( z ) d z ∑ z q ( z ∣ x ) log ⁡ q ( z ∣ x ) p ( z ) D_{KL}(q(z|x) \parallel p(z)) \mathbb{E}_{q(z|x)} \left[ \log \frac{p(z)}{q(z|x)} \right] \int q(z|x) \log \frac{q(z|x)}{p(z)} \, dz \sum_{z} q(z|x) \log \frac{q(z|x)}{p(z)} DKL​(q(z∣x)∥p(z))Eq(z∣x)​[logq(z∣x)p(z)​]∫q(z∣x)logp(z)q(z∣x)​dz∑z​q(z∣x)logp(z)q(z∣x)​ KL衡量一个分布相对于另一个分布的信息损失或“距离”是一个正数 证明可利用 log ⁡ x ≤ x − 1 , ∀ x 0 \log x \leq x - 1, \quad \forall x 0 logx≤x−1,∀x0 给log内分数上负号颠倒分子分母则 ∑ z q ( z ∣ x ) log ⁡ p ( z ) q ( z ∣ x ) ≤ ∑ z − p ( z ) q ( z ∣ x ) 0 \sum_{z}q(z|x) \log \frac{p(z)}{q(z|x)} \leq \sum_z -\frac{p(z)}{q(z|x)} 0 ∑z​q(z∣x)logq(z∣x)p(z)​≤∑z​−q(z∣x)p(z)​0 5.3 概率密度函数: p ( z ) ∼ N ( 0 , 1 ) p(z) \sim \mathcal{N}(0,1) p(z)∼N(0,1): p ( z ) 1 ( 2 π ) d / 2 exp ⁡ ( − 1 2 ∑ i 1 d z i 2 ) p(z) \frac{1}{(2\pi)^{d/2}} \exp \left( -\frac{1}{2} \sum_{i1}^{d} z_i^2 \right) p(z)(2π)d/21​exp(−21​∑i1d​zi2​) 注d是维度 p ( z ) ∼ N ( μ , σ ) p(z) \sim \mathcal{N}(\mu,\sigma) p(z)∼N(μ,σ): q ( z ∣ x ) 1 ( 2 π ) d / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ∑ i 1 d ( z i − μ i ) 2 σ i 2 ) ; Σ d i a g ( σ 1 2 , . . . , σ d 2 ) q(z|x) \frac{1}{(2\pi)^{d/2} |\Sigma|^{1/2}} \exp \left( -\frac{1}{2} \sum_{i1}^{d} \frac{(z_i - \mu_i)^2}{\sigma_i^2} \right); \Sigma diag(\sigma_1^2,...,\sigma_d^2) q(z∣x)(2π)d/2∣Σ∣1/21​exp(−21​∑i1d​σi2​(zi​−μi​)2​);Σdiag(σ12​,...,σd2​) 也可以写成这样 q ( z ∣ x ) 1 ( 2 π ) d / 2 σ 1 σ 2 ⋯ σ d exp ⁡ ( − 1 2 ∑ i 1 d ( z i − μ i ) 2 σ i 2 ) q(z|x) \frac{1}{(2\pi)^{d/2} \sigma_1 \sigma_2 \cdots \sigma_d} \exp \left( -\frac{1}{2} \sum_{i1}^{d} \frac{(z_i - \mu_i)^2}{\sigma_i^2} \right) q(z∣x)(2π)d/2σ1​σ2​⋯σd​1​exp(−21​∑i1d​σi2​(zi​−μi​)2​) Ref Auto-Encoding Variational Bayes / Variational autoencoderhttps://arxiv.org/abs/1312.6114https://www.zhihu.com/question/579890053/answer/38625999761 本文全部代码 https://github.com/disanda/GM.git
http://www.hkea.cn/news/14437304/

相关文章:

  • 北京网站维护浩森宇特湖北高速公路建设网站
  • 做网站找模板资讯网站如何做聚合
  • 鄱阳电商网站建设房地产网站建设背景
  • 请详细说明网站开发流程及原则怎么做网站咨询
  • 网站有源代码如何做seo网站建设合同需要印花税
  • 建微网站需要购买官网主机吗网站建设的考虑
  • 网站的信息量能做什么怎样给网站加外链
  • 怎样选择网站的关键词网站由什么组成
  • 网站建设收费明细表医疗网站建设行情
  • wordpress网站排名杭州公司的网站建设公司
  • 软件开发工程师就业前景怎样做网站关键词优化
  • 网站建设三方协议安徽安庆网站建设公司
  • 公关网站建设如何卸载win上的wordpress
  • 普陀网站建设哪家便宜网络营销方式案例及分析
  • 河北省水利建设市场网站出口电商平台有哪些
  • 建设企业网站的作用vs怎么做网站
  • 大型网站开发 书籍品牌网站设计哪家好
  • 织梦网站更换域名网络营销产品的整体概念
  • 网站版权问题医院网站建设公司价格
  • 营销型企业网站一般具有哪些功能网站备案成功后怎么建设
  • 重庆智能网站建设多少钱织梦网站后台怎么登陆
  • 大连旅游网站建设网站服务器错误怎么解决
  • 临沂兰山建设局网站外贸网站为何搜不到
  • 网站开发要用到的工具有源代码怎么生成网页
  • 广西住房与建设厅网站软文推广营销服务平台
  • 阿克苏网站建设咨询网站开发用啥语言
  • 重庆那家做网站做得好徐州专业网站制作公司
  • wordpress做单页销售网站站内免费推广的方式有哪些
  • 国家建设管理信息网站服务器 网站 app
  • 建材企业网站推广方案wordpress视频缩略图不显示