$$
\nonumber
\newcommand{aster}{*}
\newcommand{exist}{\exists}
\newcommand{B}{\mathbb B}
\newcommand{C}{\mathbb C}
\newcommand{I}{\mathbb I}
\newcommand{N}{\mathbb N}
\newcommand{Q}{\mathbb Q}
\newcommand{R}{\mathbb R}
\newcommand{Z}{\mathbb Z}
\newcommand{eR}{\overline {\mathbb R}}
\newcommand{cD}{ {\mathbb D}}
\newcommand{dD}{ {\part \mathbb D}}
\newcommand{dH}{ {\part \mathbb H}}
\newcommand{eC}{\overline {\mathbb C}}
\newcommand{A}{\mathcal A}
\newcommand{D}{\mathcal D}
\newcommand{E}{\mathcal E}
\newcommand{F}{\mathcal F}
\newcommand{G}{\mathcal G}
\newcommand{H}{\mathcal H}
\newcommand{J}{\mathcal J}
\newcommand{L}{\mathcal L}
\newcommand{U}{\mathcal U}
\newcommand{M}{\mathcal M}
\newcommand{O}{\mathcal O}
\newcommand{P}{\mathcal P}
\newcommand{S}{\mathcal S}
\newcommand{T}{\mathcal T}
\newcommand{V}{\mathcal V}
\newcommand{W}{\mathcal W}
\newcommand{X}{\mathcal X}
\newcommand{Y}{\mathcal Y}
\newcommand{bE}{\symbf E}
\newcommand{bF}{\symbf F}
\newcommand{bD}{\symbf D}
\newcommand{bI}{\symbf I}
\newcommand{bX}{\symbf X}
\newcommand{bY}{\symbf Y}
\newcommand{nz}{\mathcal Z}
\newcommand{bT}{\mathbb T}
\newcommand{bB}{\mathbb B}
\newcommand{bS}{\mathbb S}
\newcommand{bA}{\mathbb A}
\newcommand{bL}{\mathbb L}
\newcommand{bP}{\symbf P}
\newcommand{bM}{\symbf M}
\newcommand{bH}{\mathbb H}
\newcommand{dd}{\mathrm d}
\newcommand{Mu}{\mathup M}
\newcommand{Tau}{\mathup T}
\newcommand{ae}{\operatorname{a.e.}}
\newcommand{aut}{\operatorname{aut}}
\newcommand{adj}{\operatorname{adj}}
\newcommand{char}{\operatorname{char}}
\newcommand{cov}{\operatorname{Cov}}
\newcommand{cl}{\operatorname{cl}}
\newcommand{cont}{\operatorname{cont}}
\newcommand{e}{\mathbb E}
\newcommand{pp}{\operatorname{primitive}}
\newcommand{dist}{\operatorname{dist}}
\newcommand{diam}{\operatorname{diam}}
\newcommand{fp}{\operatorname{Fp}}
\newcommand{from}{\leftarrow}
\newcommand{Gal}{\operatorname{Gal}}
\newcommand{GCD}{\operatorname{GCD}}
\newcommand{LCM}{\operatorname{LCM}}
\newcommand{fg}{\mathrm{fg}}
\newcommand{gf}{\mathrm{gf}}
\newcommand{im}{\operatorname{Im}}
\newcommand{image}{\operatorname{image}}
\newcommand{inj}{\hookrightarrow}
\newcommand{irr}{\operatorname{irr}}
\newcommand{lcm}{\operatorname{lcm}}
\newcommand{ltrieq}{\mathrel{\unlhd}}
\newcommand{ltri}{\mathrel{\lhd}}
\newcommand{loc}{ {\operatorname{loc}}}
\newcommand{null}{\operatorname{null}}
\newcommand{part}{\partial}
\newcommand{pf}{\operatorname{Pf}}
\newcommand{pv}{\operatorname{Pv}}
\newcommand{rank}{\operatorname{rank}}
\newcommand{range}{\operatorname{range}}
\newcommand{re}{\operatorname{Re}}
\newcommand{span}{\operatorname{span}}
\newcommand{su}{\operatorname{supp}}
\newcommand{sgn}{\operatorname{sgn}}
\newcommand{syn}{\operatorname{syn}}
\newcommand{var}{\operatorname{Var}}
\newcommand{res}{\operatorname{Res}}
\newcommand{data}{\operatorname{data}}
\newcommand{erfc}{\operatorname{erfc}}
\newcommand{erfcx}{\operatorname{erfcx}}
\newcommand{tr}{\operatorname{tr}}
\newcommand{col}{\operatorname{Col}}
\newcommand{row}{\operatorname{Row}}
\newcommand{sol}{\operatorname{Sol}}
\newcommand{lub}{\operatorname{lub}}
\newcommand{glb}{\operatorname{glb}}
\newcommand{ltrieq}{\mathrel{\unlhd}}
\newcommand{ltri}{\mathrel{\lhd}}
\newcommand{lr}{\leftrightarrow}
\newcommand{phat}{^\widehat{\,\,\,}}
\newcommand{what}{\widehat}
\newcommand{wbar}{\overline}
\newcommand{wtilde}{\widetilde}
\newcommand{iid}{\operatorname{i.i.d.}}
\newcommand{Exp}{\operatorname{Exp}}
\newcommand{abs}[1]{\left| {#1}\right|}
\newcommand{d}[2]{D_{\text{KL}}\left (#1\middle\| #2\right)}
\newcommand{n}[1]{\|#1\|}
\newcommand{norm}[1]{\left\|{#1}\right\|}
\newcommand{pd}[2]{\left \langle {#1},{#2} \right \rangle}
\newcommand{argmax}[1]{\underset{#1}{\operatorname{argmax}}}
\newcommand{argmin}[1]{\underset{#1}{\operatorname{argmin}}}
\newcommand{p}[1]{\left({#1}\right)}
\newcommand{c}[1]{\left \{ {#1}\right\}}
\newcommand{s}[1]{\left [{#1}\right]}
\newcommand{a}[1]{\left \langle{#1}\right\rangle}
\newcommand{cc}[2]{\left(\begin{array}{c} #1 \\ #2 \end{array}\right)}
\newcommand{f}{\mathfrak F}
\newcommand{fi}{\mathfrak F^{-1}}
\newcommand{Fi}{\mathcal F^{-1}}
\newcommand{l}{\mathfrak L}
\newcommand{li}{\mathfrak L^{-1}}
\newcommand{Li}{\mathcal L^{-1}}
\newcommand{const}{\text{const.}}
\newcommand{Int}{\operatorname{Int}}
\newcommand{Ext}{\operatorname{Ext}}
\newcommand{Bd}{\operatorname{Bd}}
\newcommand{Cl}{\operatorname{Cl}}
\newcommand{Iso}{\operatorname{Iso}}
\newcommand{Lim}{\operatorname{Lim}}
\newcommand{src}{\operatorname{src}}
\newcommand{tgt}{\operatorname{tgt}}
\newcommand{input}{\operatorname{input}}
\newcommand{output}{\operatorname{output}}
\newcommand{weight}{\operatorname{weight}}
\newcommand{paths}{\operatorname{paths}}
\newcommand{init}{\bullet}
\newcommand{fin}{\circledcirc}
\newcommand{advance}{\operatorname{advance}}
\newcommand{di}[2]{\frac{\part}{\part {#1}^{#2}}}
$$
Gumbel Based Sampling
#
the Gumbel distribution
#
See this
wiki page for more information.
For now, remember that when $X \sim \Exp(1)$, $-\log (X) \sim \operatorname{Gumbel}(0, 1)$, which is called the standard Gumbel distribution.
It is easy to sample from the standard Gumbel distribution.
- First sample from the uniform distribution $U \sim \operatorname{Uniform}(0, 1]$.
- Then do transform $X = -\log (- \log (U))$. Then $X \sim \operatorname{Gumbel(0, 1)}$.
Gumbel-Max trick
#
This is an old trick to sample from distribution $\operatorname{Categroical}(\pi _ 1, \dots, \pi _ K)$.
Here is a result from the extreme value theory. Suppose $\xi _ k \sim _ {\iid} \Exp(1)$. And then
$$
Z := \argmin{k \in \c{1, \cdots, K}} \frac{\xi _ k}{\pi _ k} \implies Z \sim \operatorname{Cat}(\pi _ 1, \ldots, \pi _ K)
$$
Equivalently we can take log on the RHS:
$$
Z = \argmax{k\in \c{1, \cdots, K}}\p{\log \pi _ {k}-\log \xi _ {k}}
$$
Let $E _ k \sim _ {\iid} \operatorname{Gumbel}(0, 1)$ we have equivalently:
$$
Z = \argmax{k \in \c{1, \cdots, K}} \p{\log \pi _ k + E _ k}
$$
This particular sampling method of categorical distribution is called the Gumbel-Max trick.
Softmax function
#
The softmax function $\operatorname{softmax} _ {\tau}(x): \R^d \to (0, \infty)^d$ is a bijection from $\R^d$ to all $d$-ary discrete densities with full support. $\tau > 0$ is called the temperature.
$$
\newcommand{softmax}{\operatorname{softmax}}
\softmax _ {\tau}(x) _ {j}=\frac{\operatorname{exp} \left(x _ {j} / \tau\right)}{\sum _ {k=1}^{K} \operatorname {exp} \left(x _ {k} / \tau\right)}
$$
- As $\tau \downarrow 0$, $\softmax _ \tau \to \operatorname{argmax}$.
- As $\tau \uparrow \infty$, $\softmax _ {\tau}$ returns the uniform distribution.
Gumbel-Softmax
#
When $\tau$ is very small, the following is almost the same as the one-hot encoding of argmax:
$$
\softmax _ {\tau}\p{\log \pi _ k + E _ k},\quad E _ k \sim _ {\iid} \operatorname{Gumbel}(0, 1)
$$
TODO When $\tau \le 1 / (K - 1)$, the output of this function always have maximum value at $\softmax _ \tau \pi _ k$.