Gumbel

参考“https://www.cnblogs.com/initial-h/p/9468974.html”和“https://www.zhihu.com/question/62631725/answer/201338234”和“https://zhuanlan.zhihu.com/p/62478599

Gumbel采样:Gumbel Trick 是一种从离散分布取样的方法,它的形式可以允许我们定义一种可微分的,离散分布的近似取样,这种取样方式不像「干脆以各类概率值的概率向量替代取样」这么粗糙,也不像直接取样一样不可导。

gumbel-softmax 得到的是样本(尽管是近似的),而 softmax 得到的则是样本的均值(对于离散分布来说,其实就是各类概率)。 因为有这个区别,所以他们用的场合是不一样的(如果这也可以看做优势的话)。正像我下面要说的,gumbel-softmax 用在需要对离散分布取样本,而又希望它可导,可以训练的场合,比如最常见的, GAN 里的 generator 。如果你的 model 里不需要对离散分布取样,只需要它的各类概率。比如分类问题,你只需要把最后预测的离散分布的各类概率用 softmax 求出来,就可以带入 CE loss 进行训练了。 当然,如果你还有这样的疑问:『不是要对离散分布的样本进行可导近似吗?我用 softmax 得到的是样本的均值,用均值近似样本不行吗?』 第一个问题在于,离散分布的均值跟样本本身差异还是很大的,两者在数值上只有极端的情况相近,比如某一类的概率非常大的时候(这时候均值和样本都几乎是 one-hot 向量)

那 gumbel-softmax 作用以后,跟样本差异大吗?换句话说 gumbel-softmax 跟样本的近似程度是多少?那就是用这个参数控制了,如果小了当然不大。如果取到无穷那就成了 n-class 的均匀分布了。 第二个问题在于,softmax 得到的均值,是不含任何随机性的。假设现在在生成一个字符,那么 softmax 后得到的均值到底代表什么字符呢?最直接的方法是取概率最大的那个,但是这样的话,不管它的概率是多少,只要是最大的,那么生成的一定是这个字符,至于它到底有多大,那就没有意义了。但是 gumbel-softmax 是会按照它的概率大小随机地出现一些非最大概率的类别样本的,这时候概率有多大就有意义了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值