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[logp1−log(−logϵ1), logp2−log(−logϵ2), ..., logpk−log(−logϵk)],ϵi∼U[0,1]
但因为式子中得
a
r
g
m
a
x
arg\ max
arg max不可导,因此对进行光滑近似(即soft)。注意到在神经网络中,处理离散输入的基本方法是转化为one-hot形式,即寻求one-hot(arg max)d的光滑近似,即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 pi−log(−logϵi))/τ)i=1k=[∑i=1kelogpi−log(−logϵi))/τelogp1−log(−logϵ1))/τ,∑i=1kelogpi−log(−logϵi))/τelogp2−log(−logϵ2))/τ,...,∑i=1kelogpi−log(−logϵi))/τelogpk−log(−logϵk))/τ]
其中
ϵ
∼
U
[
0
,
1
]
\quad \epsilon\sim U[0,1]
ϵ∼U[0,1],参数τ>0称为退火参数,它越小输出结果就越接近one hot形式(但同时梯度消失就越严重)。
相关文章: