Suponiendo una variable discreta $z_j$ con no normalizados probabilidad de $\alpha_j$, una manera de ejemplo es la aplicación de argmax(softmax($\alpha_j$)), otro es el de Gumbel truco argmax($\log\alpha_j+g_j$) donde $g_j$ es gumbel ruido generado. Este segundo enfoque es útil si queremos hacer algo como variacional auto de codificación (es decir, los codifica para una entrada de $x_j$ en un latente variable discreta $z_j$). Entonces, si el objetivo era tener la completa distribución de posibles resultados para $z_j$, podemos utilizar softmax transformación en la parte superior de la perturbación con Gumbel ruido: $$\pi_j = \frac{e^{\log \alpha_j+g_j}}{\sum_{k=1}^{k=K}e^{\log \alpha_k+g_k}}\ \ \ \text{donde}\ \ g_k=-\log(-\log(\epsilon\sim {U}(0,1))).$$ Por qué esto no es suficiente? ¿Por qué tenemos que incluir la temperatura de $\tau$ plazo en esto? Y volver a escribir, $$\pi_j = \frac{e^{\frac{\log\alpha_j+g_j}{\tau}}}{\sum_{k=1}^{k=K}e^\frac{\log \alpha_k+g_k}{\tau}}\ \ \ \text{donde}\ \ g_k=-\log(-\log(\epsilon\sim {U}(0,1)))$$ Entiendo que la temperatura hace que el vector $\pi=[\pi_1, ...,\pi_k]$ más suave o más duro (es decir, de alta temperatura hace que todos los $\pi_i$s a ser el mismo, y genera un plano de distribución, y $\tau=1$ sólo hace que las dos ecuaciones son idénticas), pero ¿por qué lo necesitamos en la práctica? Todos queremos (es decir, en VAE) es disociar el estocástico aspecto de la toma de muestras (i.e, mover el estocástico parte de ella a la entrada) que es alcanzado por el Gumbel truco, y luego de alguna manera sustituir a la caliente vector de dibujo con un continuo de vectores, de la que podemos obtener haciendo el softmax($\log\alpha_j+g_j$) que vamos a obtener mediante el uso de la primera ecuación. Estoy seguro de que me estoy perdiendo algo fundamental, pero no puede ver lo que es...
Respuesta
¿Demasiados anuncios?una manera de ejemplo es la aplicación de argmax(softmax($\alpha_j$))
Que no es "muestreo", dado que de manera determinista recoger el mayor $\alpha_j$ cada vez. (también, usted dijo que $\alpha$ es el no normalizados probabilidad, pero que no tiene sentido ver como registro de probabilidades de ir a la softmax). La forma correcta de la muestra sería de la muestra(softmax($x$)), donde: $x$ son los logits. De hecho, la meta de gumbel-softmax no es reemplazar el softmax operación como la que has escrito, pero el muestreo de operación:
Se puede sustituir la muestra($p$) donde $p$ son un vector de probabilidades con argmax($\log p + g$) donde $g$ es el gumbel ruido. Por supuesto, esto es equivalente a argmax($x + g$) donde $x$ son de nuevo los logits. Para concluir, la muestra(softmax($x$)) y argmax($x+g)$ son procedimientos equivalentes.
Entonces, si el objetivo era tener la completa distribución de posibles resultados para $z_j$, podemos utilizar softmax transformación en la parte superior de la perturbación con Gumbel ruido.
De hecho, usted ya tiene una distribución a través de todos los resultados posibles.
Sin embargo, argmax($x+g$) no es diferenciable wrt $x$, por lo tanto, a backpropagate nos reemplazar su gradiente con el gradiente de softmax($(x+g)\tau^{-1}$). Al $\tau \rightarrow 0$, la expresión de los enfoques argmax.
Escoger un razonables, valores pequeños de a $\tau$ va a garantizar una buena estimación del gradiente asegurándose de que los gradientes son numéricamente portado bien.
y $\tau=1$ sólo hace que las dos ecuaciones idénticas
De hecho, no tiene un significado especial a $\tau = 1$. Más bien, $\tau \rightarrow 0$ hace que el gradiente de estimación insesgada pero de alta en la varianza, donde los mayores valores de $\tau$ agregar más sesgo a la gradiente de estimar, pero inferior a la varianza.