基于前人们的知识成果积累,论文《Categorical Reparameterization with Gumbel-Softmax》的作者还真找到了解决方法,第一个问题的方法是使用Gumbel Max Trick,第二个问题的方法是把Gumbel Max Trick里的argmax换成softmax,综合起来就是Gumbel Softmax。 前置知识 累计分
根据论文公式,可以直接实现Gumbel-Softmax,下面来看Pytorch的实现: defgumbel_softmax(logits:Tensor,tau:float=1,hard:bool=False,eps:float=1e-10,dim:int=-1)->Tensor:ifhas_torch_function_unary(logits):returnhandle_torch_function(gumbel_softmax,(logits,),logits,tau=tau,hard=hard,eps=eps,dim=dim)...
本文对大部分人来说可能仅仅起到科普的作用,因为Gumbel-Max仅在部分领域会用到,例如GAN、VAE等。笔者是在研究EMNLP上的一篇论文时,看到其中有用Gumbel-Softmax公式解决对一个概率分布进行采样无法求导的问题,故想到对Gumbel-Softmax做一个总结,由此写下本文 为什么我们需要Gumbel-Softmax ? 假设现在我们有一个离散随...
所以gumbel softmax成功地引入了随机性,使得每个操作都能以一定的概率被选中,不过貌似也并没有减少内存的消耗,因为还是和DARTS一样计算的mixed值。所以在GDAS这篇论文里作者在选择操作的时候使用的是argmax,而在更新权重的时候采用的是softmax的梯度值,这个可以通过修改pytorch的backward部分代码实现。
论文来源 | CVPR2022 文章解读 | William 摘要 近年来,目标检测和分割领域都取得了重大进展。然而,目前最先进的方法仍然在罕见类别和常见类别之间的性能存在巨大差距。本文发现深层检测器中使用的Sigmoid或Softmax函数是导致长尾检测和分割性能低的主要原因。为了解决这个问题,...
因为Gumbel-Max仅在部分领域会用到,例如GAN、VAE等。笔者是在研究EMNLP上的一篇论文时,看到其中有用...
在讨论 gumbel-softmax 的背景时,我们设想了一个环境,该环境由神经网络提供,其中包含了一个智能体,也是一个神经网络。智能体需要在多种可能的行动中选择一个,将其传给环境进行处理,最终的结果会反馈给智能体,以便智能体根据反馈调整其策略。这类问题在许多深度学习论文中被统称为 SCG(Stochastic ...
在实践中,Gumbel softmax的实现方式可能会有所不同,比如在GDAS论文中,选择操作可能使用argmax,而更新权重则采用softmax的梯度。在PyTorch中,这可能表现为如下的代码片段:ret = y_hard - y_soft.detach() + y_soft。尽管引入了随机性,Gumbel softmax并未显著减少内存需求,因为它仍然计算了混合...
所以gumbel softmax成功地引入了随机性,使得每个操作都能以一定的概率被选中,不过貌似也并没有减少内存的消耗,因为还是和DARTS一样计算的mixed值。所以在GDAS这篇论文里作者在选择操作的时候使用的是argmax,而在更新权重的时候采用的是softmax的梯度值,这个可以通过修改pytorch的backward部分代码实现。
之前看MADDPG论文的时候,作者提到在离散的信息交流环境中,使用了Gumbel-Softmax estimator。于是去搜了一下,发现该技巧应用甚广,如深度学习中的各种GAN、强化学习中的A2C和MADDPG算法等等。只要涉及在离散分布上运用重参数技巧时(re-parameterization),都可以试试Gumbel-Softmax Trick。