A partir de diversas explicaciones (por ejemplo https://www.youtube.com/watch?v=uaaqyVS9-rM ), la parte del decodificador del autocodificador variacional corresponde a p(x|z) (o p(x_i|z_i)). Sin embargo, si fijamos z (muestreamos una z concreta del espacio latente), entonces la salida es fija en lugar de una distribución. Entonces, ¿por qué corresponde a p(x|z)? Gracias de antemano.
Respuesta
¿Demasiados anuncios?En los VAE, el descodificador se implementa mediante una red neuronal. La red toma una realización $z$ de la variable latente como entrada, y los parámetros de salida de la distribución condicional $p(x \mid z)$ sobre la variable observada $x$ .
Por ejemplo, si $x = [x_1, \dots, x_d]^T$ es un vector binario, es común definir $p(x \mid z)$ como una distribución Bernoulli multivariada factorizada, donde cada elemento $x_i$ es condicionalmente independiente de los demás. En este caso, la red decodificadora suele tener una capa de salida sigmoidal $o$ donde cada unidad $o_i$ especifica la probabilidad de que $x_i=1$ :
$$p(x \mid z) = \prod_i \operatorname{Bernoulli}(x_i \mid o_i)$$
Si $x \in \mathbb{R}^d$ es continua, es común definir $p(x \mid z)$ como una distribución gaussiana isotrópica. En este caso, la red decodificadora suele tener una capa de salida lineal $o$ con $d+1$ unidades, donde la primera $d$ unidades especifican la media, y la última unidad especifica la varianza logarítmica:
$$p(x \mid z) = \mathcal{N}(x \mid \mu, \sigma^2 I)$$
$$\mu = [o_1, \dots, o_d]^T \quad \sigma^2 = \exp(o_{d+1})$$
El uso de la varianza logarítmica nos permite evitar las restricciones en el problema de optimización, ya que la exponenciación siempre produce un valor válido y positivo para la varianza.