Gumbel-Softmax trick

Gumbel-Softmax 是一种可导采样技巧,它可以用来对离散分布进行重参数采样。与softmax区别是,gumbel-softmax得到得是样本(即采样,对于神经网络,离散输入常转化为one-hot形式,采样出来的样本是经soft后one-hot向量 [ x 1 , x 2 , . . . , x n ] [x_1,x_2,...,x_n] [x1,x2,...,xn]),而softmax得到是样本得均值(即各分类概率, [ p 1 , p 2 , . . . , p n ] [p_1,p_2,...,p_n] [p1,p2,...,pn])。
假设每个类别得概率是 p 1 p_1 p1, p 2 p_2 p2,…, p k p_k pk, 那么下述过程提供了一种依概率采样类别的方案,称为Gumbel Max:
arg max ⁡ i [ l o g p 1 − l o g ( − l o g ϵ 1 ) ,   l o g p 2 − l o g ( − l o g ϵ 2 ) ,   . . . ,   l o g p k − l o g ( − l o g ϵ k ) ] , ϵ i ∼ U [ 0 , 1 ] \mathop{\argmax}_{i} [log p_1 - log(-log\epsilon_1),\ log p_2 - log(-log\epsilon_2),\ ...,\ log p_k - log(-log\epsilon_k)], \quad \epsilon_i \sim U[0,1] argmaxi[logp1log(logϵ1), logp2log(logϵ2), ..., logpklog(logϵk)],ϵiU[0,1]
但因为式子中的 a r g   m a x arg\ max arg max不可导,因此对其进行光滑近似(即soft)。注意到在神经网络中,处理离散输入的基本方法是转化为one-hot形式,即寻求one-hot(arg max)的光滑近似,即softmax.具体可参考苏剑林老师《函数光滑化杂谈:不可导函数的可导逼近》。自此得到Gumbel Max的光滑近似版本–Gumbel Softmax:
s o f t m a x ( ( l o g   p i − l o g ( − l o g ϵ i ) ) / τ ) i = 1 k = [ e l o g p 1 − l o g ( − l o g ϵ 1 ) ) / τ ∑ i = 1 k e l o g p i − l o g ( − l o g ϵ i ) ) / τ , e l o g p 2 − l o g ( − l o g ϵ 2 ) ) / τ ∑ i = 1 k e l o g p i − l o g ( − l o g ϵ i ) ) / τ , . . . , e l o g p k − l o g ( − l o g ϵ k ) ) / τ ∑ i = 1 k e l o g p i − l o g ( − l o g ϵ i ) ) / τ ] softmax((log\ p_i - log(-log \epsilon_i))/\tau)^k_{i=1}\\ =[\frac{e^{logp_1 -log(-log\epsilon_1))/\tau}} {\sum_{i=1}^k e^{logp_i-log(-log\epsilon_i))/\tau}}, \frac{e^{logp_2 -log(-log\epsilon_2))/\tau}} {\sum_{i=1}^k e^{logp_i-log(-log\epsilon_i))/\tau}}, ..., \frac{e^{logp_k -log(-log\epsilon_k))/\tau}} {\sum_{i=1}^k e^{logp_i-log(-log\epsilon_i))/\tau}}] \\ softmax((log pilog(logϵi))/τ)i=1k=[i=1kelogpilog(logϵi))/τelogp1log(logϵ1))/τ,i=1kelogpilog(logϵi))/τelogp2log(logϵ2))/τ,...,i=1kelogpilog(logϵi))/τelogpklog(logϵk))/τ]
其中 ϵ ∼ U [ 0 , 1 ] \quad \epsilon\sim U[0,1] ϵU[0,1],参数τ>0称为退火参数,它越小输出结果就越接近one hot形式(但同时梯度消失就越严重)。

Gumbel-Softmax trick_第1张图片

你可能感兴趣的:(GAN,深度学习)