Gumbel-Softmax Trick+VAE重参数化技巧

本文探讨了如何将前端技术如Vue与人工智能技术如TensorFlow结合,分享实例和实践,适合开发者了解前沿趋势。
部署运行你感兴趣的模型镜像

在这里插入图片描述
更多详见 https://www.cnblogs.com/initial-h/p/9468974.html

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### Gumbel-Softmax 算法原理及通俗解释 Gumbel-Softmax 是一种用于离散变量分布优化的技术,它通过引入连续松弛来近似离散随机变量的选择过程[^2]。这种方法允许梯度能够流经采样操作,从而使得模型可以利用反向传播算法进行端到端的学习。 #### 原理概述 Gumbel-Softmax 方法的核心在于将离散概率分布转化为可微分的形式。假设有一个离散的概率分布 \( p(z) \),其中 \( z \in \{1, ..., K\} \) 表示可能的状态集合,则可以通过加入噪声项并应用 softmax 函数将其映射为连续空间上的表示: \[ y_i = \frac{\exp((\log(\pi_i) + g_i)/\tau)} {\sum_{j=1}^{K}\exp((\log(\pi_j)+g_j)/\tau)}, i = 1,...,K \] 这里: - \( g_i \sim Gumble(0,1) \) 是独立同分布的标准 Gumbel 随机变量, - \( \pi_i \) 是原始类别 \( i \) 的先验概率, - \( \tau > 0 \) 被称为温度参数 (temperature parameter)[^3]。 当温度参数趋近于零 (\( \tau \to 0 \)) 时,上述表达式会逐渐逼近 one-hot 编码形式;而较大的温度则会使输出更加平滑,接近均匀分布。 #### 通俗理解 可以把这个机制想象成掷骰子游戏:如果每面都有不同的权重(即各个类别的可能性),那么我们不仅要知道哪一面朝上,还需要考虑如何调整这些权值以便更好地适应目标函数的要求。然而,在传统的方法里,“选择哪个数”的动作本身不可导,因此无法直接计算损失相对于输入数据的变化率。于是乎,借助 Gumbel 分布制造一些可控扰动之后再做软最大化处理,就相当于给每个候选答案赋予了一个介于完全确定与彻底模糊之间的中间状态值,这样既保留了原有逻辑关系又实现了数值意义上的光滑过渡,最终达到既能保持决策多样性又能有效训练神经网络的目的[^4]。 ```python import torch from torch.distributions import OneHotCategorical def sample_gumbel_softmax(logits, temperature): """ Sample from the Gumbel-Softmax distribution and optionally discretize. Args: logits: Unnormalized log probabilities as a Tensor of shape [..., n_categories]. temperature: Non-negative scalar controlling smoothness. Returns: A tensor sampled according to the Gumbel-Softmax reparameterization trick. """ uniform_noise = torch.rand_like(logits) gumbel_noise = -torch.log(-torch.log(uniform_noise + 1e-20) + 1e-20) noisy_logits = (logits + gumbel_noise) / temperature return torch.nn.functional.softmax(noisy_logits, dim=-1) # Example usage logits = torch.tensor([[1., 2., 3.]]) # Log-probabilities for three categories temperature = 0.5 # Temperature hyperparameter sampled_values = sample_gumbel_softmax(logits, temperature) print(sampled_values) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值