Pros:
- Las GAN son un buen método para entrenar clasificadores de forma semi-supervisada. Vea nuestro documento NIPS y el código que lo acompaña. Puede usar nuestro código directamente casi sin modificaciones cada vez que tenga un problema en el que no pueda usar muchos ejemplos etiquetados. Por lo general, esto se debe a que simplemente no tiene muchos ejemplos etiquetados. También recientemente utilicé este código con mucho éxito para una colaboración con Google Brain sobre privacidad diferencial para el aprendizaje profundo.
- Las GAN generan muestras más rápido que las redes de creencias totalmente visibles (NADE, PixelRNN, WaveNet, etc.) porque no hay necesidad de generar las diferentes entradas en la muestra de forma secuencial.
- Las GAN no necesitan ninguna aproximación de Monte Carlo para entrenar. Las personas se quejan de que las GAN son inestables y difíciles de entrenar, pero son mucho más fáciles de entrenar que las máquinas Boltzmann, que se basaban en aproximaciones de Monte Carlo al gradiente de la función de partición de registros. Debido a que los métodos de Monte Carlo no funcionan muy bien en espacios de alta dimensión, las máquinas de Boltzmann nunca han escalado a tareas realistas como ImageNet. Las GAN son al menos capaces de aprender a dibujar algunos perros en mal estado cuando entrenan en ImageNet.
- En comparación con los codificadores automáticos variacionales, las GAN no introducen ningún sesgo determinista. Los métodos variacionales introducen sesgos deterministas porque optimizan un límite inferior en la probabilidad logarítmica en lugar de la probabilidad en sí misma. Esto parece dar lugar a que los VAE aprendan a generar muestras borrosas en comparación con las GAN.
- En comparación con ICA no lineal (NICE, NVE real, etc., que son los ejemplos más recientes), no es necesario que el código latente tenga una dimensionalidad específica o que la red del generador sea invertible.
- En comparación con los VAE, es más fácil usar variables latentes discretas.
- En comparación con las máquinas de Boltzmann y los GSN, generar una muestra requiere solo un paso a través del modelo, en lugar de un número desconocido de iteraciones de una cadena de Markov.
Contras:
• Entrenar una GAN requiere encontrar el equilibrio de Nash de un juego. A veces, el descenso de gradiente hace esto, a veces no. Realmente todavía no tenemos un buen algoritmo de búsqueda de equilibrio, por lo que el entrenamiento GAN es inestable en comparación con el entrenamiento VAE o PixelRNN. Yo diría que todavía se siente mucho más estable que el entrenamiento de Boltzmann en la práctica.
- Inteligencia artificial: ¿Cómo las redes neuronales convolucionales identifican las emociones humanas?
- ¿Google Neural Machine Translation tendrá una precisión del 95% de un nivel humano para finales de 2017?
- ¿Qué hace que un sonido parezca artificial?
- ¿Obtener un título en CS me ayudará a entrar en el aprendizaje automático y la IA?
- ¿Por qué tantos videojuegos tienen terribles IA?
• Es difícil aprender a generar datos discretos, como el texto.
• En comparación con las máquinas Boltzmann, es difícil hacer cosas como adivinar el valor de un píxel dado otro píxel. Las GAN están realmente capacitadas para hacer una sola cosa, que es generar todos los píxeles de una sola vez. Puede solucionar esto utilizando un BiGAN, que le permite adivinar los píxeles faltantes utilizando el muestreo de Gibbs, lo mismo que en una máquina Boltzmann.
Hablo un poco sobre esto en los primeros 20 minutos de esta conferencia en Berkeley: