神经网络疯了!它们现在可以从离散分布中采样!

了解如何使用 Gumbel 分布形成包含离散随机分量的 NN。

来源:Another Datum

神经网络疯了!它们现在可以从离散分布中采样了!¶

训练深度神经网络通常归结为定义模型的架构和损失函数,并观察梯度传播。

但是,有时事情没那么简单:某些架构包含随机组件。前向传递不再是输入和权重的确定性函数。随机组件通过从中采样引入随机性。

你会问,什么时候会发生这种情况?每当我们想要近似一个难以解决的和或积分时。然后,我们可以形成蒙特卡罗估计。变分自动编码器就是一个很好的例子。基本上,它是一种强化版的自动编码器:编码器的工作是学习潜在空间上的分布。损失函数包含该分布的难以解决的期望,因此我们从中采样。

变分自动编码器 分布

与任何架构一样,梯度需要传播到模型的权重。一些权重负责将输入转换为我们从中采样的分布的参数。这里我们面临一个问题:梯度不能通过随机节点传播!因此,这些权重不会更新。

解决该问题的一个方法是重新参数化技巧:用无参数随机变量的确定性参数化变换替换采样的随机变量。

如果您不知道这个技巧,我强烈建议您阅读它。我将使用高斯情况进行演示:

阅读它

对于许多类型的连续分布,您可以执行重新参数化技巧。但是如果您需要分布在离散值集上,您该怎么办?

在以下部分中,您将了解:

    Gumbel 分布是什么 如何将其用于从离散分布中进行采样 如何训练影响分布参数的权重 如何在玩具示例中使用所有这些(带代码)
  • Gumbel 分布是什么