Gumbel Max Trickについて勉強した
はじめに
Gumbel Max Trickについて勉強したからメモ. Gumbel Max Trickのお気持ちとしてはカテゴリカル分布から効率よくサンプリングしたいというもの(多分。。。). 言ってしまえばカテゴリカル分布におけるreparameterization trick.
accept-rejectアルゴリズム
カテゴリカル分布からの基本的なサンプリング方法の一つにaccept-rejectアルゴリズムがある. カテゴリカル分布のパラメータ(各カテゴリがサンプリングされる確率)をとする.と{} を一様にサンプリングし,の時にを返し,の時にはまたサンプリングを繰り返すというもの.である限り二つの変数をサンプリングし続けなければならないから効率がわるい.
Gumbel Max Trick
Gumbel Max Trickでは標準Gumbel分布からカテゴリの数だけサンプリングを行い,得られた値を摂動としてカテゴリカル分布のパラメータに加えた後,argmaxを取ることでサンプリングをしようというもの.
これならサンプリングの回数がカテゴリ数になりaccept-rejectアルゴリズムに比べ効率が良い.
Gumbel分布とは
突然出てきたGumbel分布だが,Gumbel分布は極値分布と呼ばれる分布の一つで,確率変数の最大値や最小値が従う分布らしい.極値分布の詳しい性質等は教科書とかで勉強しないと理解できなさそうなので割愛. Gumbel分布の密度関数と分布関数は以下で定義される.
はlocation parameter,はscale parameterと呼ばれる分布のパラメータで,標準Gumbel分布の場合となる.
なぜGumbel分布
ここで疑問になるのはなぜGumbel分布を使ってサンプリングができるのかということ.証明の方法は色々あるようだけど一番分かり易かったのがこれ. 手順としては,location parameterが,scale parameterが1のGumbel分布からサンプリングされた値をとし,がもっとも大きくなる確率(すなわちiがサンプリングされる確率)が元のカテゴリカル分布のパラメータと一致すればいいでしょうというもの.すなわち
を証明する.location parameterがのgumbel分布に関して考えているのは,locaton parameterが正規分布の平均と同様の役割をするため,VAEの論文で使用されている正規分布のreparameterization trickと同様にと書けるから.はi.i.dにサンプリングされるため,と分解され,はGumble分布の分布関数であることから
と書直せる.さらにこれをに対して周辺化,すなわちを計算する.
ここでとのの項をくくるとでまとめて書ける.
4行目はがに関係ないこととの掛け算を足し算にして書き直した.後は出てきた積分を計算するだけ.ここはちょっとしたテクニックが必要でという変数変換をするとガンマ分布の確率密度関数の形になるから積分はclosed formに求まって最終的には
となり,元のカテゴリカル分布の値になる.素晴らしい.
Gumbel分布からサンプリング
Gumbel分布を使えばいいのは納得したとして,標準Gumbel分布からサンプリングするのは簡単なのかという疑問が残る.これは逆関数法を使って簡単にできる. 分布関数は広義単調増加関数で値が区間(0,1)に一様に分布するため,一般にある確率変数が従う分布関数はという関係を満たす.ただし,はによりから一意にきまりの範囲で値をとる.この時に関してとは一対一に対応するので分布関数には逆関数が存在する.するとからはによりから一意に決まることがわかる.よって,のように一様分布からサンプリングすることで任意の確率変数を一様分布からサンプリングできる.以上が逆関数法. 標準Gumbel分布の分布関数の逆関数はとなるため
として簡単にサンプリングが行える.
Gumbel Max Trickを応用した論文は最近Google中心にいっぱい出ているみたいなので読んで理解を深めていきたいという思い.