本文是阅读苏剑林大佬的博客漫谈重参数:从正态分布到Gumbel Softmax之后的记录,算是自己的阅读笔记吧。
在苏大佬的那篇博客中,分别针对连续型和离散型随机变量讲解了如何进行重参数化,但是自己不是特别理解离散型随机变量的重参数化,便记录在此。
什么是连续型和离散型随机变量?
这里没有各种形式化的定义,只是根据自己的理解通俗的来讲解二者的区别。
可以先告诉大家,我们目前经常用到的连续型随机变量的分布有:
- 均匀分布
概率密度函数: f ( x ) = { 1 b − a , a < x < b 0 , 其 他 f(x) = \begin{cases} {1 \over b-a}, &\text a < x < b \\ 0, &\text 其他 \end{cases} f(x)={b−a1,0,a<x<b其他 - 正态分布(高斯分布)
概率密度函数: f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)={1 \over \sqrt{\smash[b]{2\pi}}\sigma} e^{-{(x-\mu)^2} \over2\sigma^{2}} f(x)=2πσ1e2σ2−(x−μ)2 - 指数分布
概率密度函数: f ( x ) = { 1 θ e − x θ , x > 0 0 , 其 他 f(x) = \begin{cases} {1 \over \theta}e^{-{x \over \theta}}, &\text x> 0 \\ 0, &\text 其他 \end{cases} f(x)={θ1e−θx,0,x>0其他
目前常见的离散型随机变量的分布有:
- 二项分布
取各个值的概率分布:
X X X | x 1 x1 x1 | x 2 x2 x2 |
---|---|---|
P | p1 | 1-p1 |
- 多项式分布
取各个值的概率分布:
X | x1 | x2 | … | xk |
---|---|---|---|---|
P | p1 | p2 | … | pk |
- 泊松分布
取各个值的概率分布:
P ( X = k ) = λ k e − λ k ! , k = 0 , 1 , 2 , 3 , , , , P(X = k) = {\lambda^{k}e^{-\lambda} \over k!} ,k = 0,1,2,3,,,, P(X=k)=k!λke−λ,k=0,1,2,3,,,,
从上面可以看到,离散型随机变量的取值是有限个,而且每个取值有对应的概率,但是连续型随机变量的概率密度函数是一个函数形式,连续型随机变量 X X X取某一个实数 x x x的概率也并不是 f ( x ) f(x) f(x)。
在苏大佬那篇博客中,连续型的情形比较好理解,主要是离散型的如何理解?
对于连续型的分布来说,虽然参数未知,但是整个概率密度的形式是已知的,而对于离散型来说,我们已知的只有上述的随机变量取各个值的概率分布,所以如果从离散分布中抽取若干个样本,就相当于是依上述的概率分布抽取若干个样本。也就相当于是k分类模型。
重参数化技巧(reparameterization trick)
但是有的时候我们希望取样过程对于分布的参数可导,这样就可以用bp算法来求分布的参数。比如隐变量的分布是离散分布的时候,或者想要生成的分布是离散分布的时候。
当我们从离散型分布
p
θ
(
y
)
p_{\theta}(y)
pθ(y)中采样了若干个样本,这时是没有办法计算(6)式的梯度的,因为得到了采样的样本后带入(6)式,(6)已经损失了未知参数
θ
\theta
θ的随机性(也就是不含有参数
θ
\theta
θ了),因此就需要一种办法来对离散型分布的采样进行变换,使其也具有未知参数
θ
\theta
θ的随机性(也就是使(6)式对
θ
\theta
θ的梯度存在),这种方法就是Gumbel Softmax。
接下来关于Gumbel Softmax的内容还是看苏剑林大佬的博客漫谈重参数:从正态分布到Gumbel Softmax。还有另一位博主的博客Gumbel-Softmax Trick和Gumbel分布