Deep Learning

¿Qué precio debería tener una hora de GPU?

Advertencia previa: esta entrada está plusquamcondicionada por la fecha de publicación. Quien aterrice en ella meses o años después, habrá de saber que lo que sigue únicamente tiene, tirando por alto, interés paleontológico.

Alguna vez, para mis experimentos, he alquilado una GPU —técnicamente, he contratado una instancia con GPUs—. Por razones que no vienen al caso, —y esto no es una recomendación de compra— mi proveedor habitual para estas cosas es OVH y los precios de las distintas opciones que ofrece pueden consultarse aquí.

Siete problemas matemáticos que plantea el "deep learning"

La emergencia (y el éxito) del llamado aprendizaje profundo (deep learning) plantea innumerables cuestiones matemáticas. Algunos algoritmos funcionan (y otros muchos que han quedado en los cajones no, obviamente) y no está muy claro por qué. He aquí una lista de siete problemas que el aprendizaje profundo ha colocado enfrente de la comunidad matemática:

  1. ¿Cuál es el papel de la profundidad en las redes neuronales? (En el fondo, una red neuronal no deja de ser una función que aproxima otra desconocida; en matemáticas abundan los procedimientos y resultados para aproximaciones planas (p.e., combinaciones lineales de funciones); pero la composición de funciones…)
  2. ¿Qué aspectos de la arquitectura de una red neuronal impactan en su desempeño? (Porque, admitámoslo, los expertos en redes neuronales, en lo concerniente a la arquitectura, no son muy distintos de aquellos artesanos del Pacífico Sur).
  3. ¿Por qué el SGD converge a mínimos locales buenos a pesar de la no-convexidad del problema de optimización? (¡Ah! En este punto, la intriga se mezcla con la envidia: no sabéis lo difícil que es optimizar funciones no lineales más o menos genéricas y las horas que he invertido en ese tipo de problemas.)
  4. ¿Por qué no sobreentrenan las redes neuronales? (¿No lo hacen?)
  5. ¿Por qué funcionan bien en altas dimensiones?
  6. ¿Qué tipo de patrones de los datos son susceptibles de ser aprendidos por las redes neuronales?
  7. ¿Podrían llegar las redes neuronales a reemplazar a los algoritmos teóricos y numéricos especializados que se utilizan en las aplicaciones de las matemáticas?

Estas cuestiones —obviamente, sin soluciones— junto con alguna discusión adicional más, se discuten menos brevemente que aquí en este enlace.

Autoencoders: una serie de lecciones aprendidas

Estos días pasados he tenido que usar autoencoders como mecanismos para reducir la dimensión de una serie de conjuntos de datos. El principal problema al que me he enfrentado —cómo no— ha sido el de diseñar una arquitectura adecuada para el problema en cuestión. El principal motivo es que la práctica totalidad de los tutoriales, ejemplos, etc. disponibles por ahí tienen como aplicación principal el tratamiento de imágenes y en mi caso no.

"Denoising diffusion" en una dimensión (entre otras simplificaciones)

I. Motivación e introducción

Denoising diffusion —DD en lo que sigue— es uno de los principales ingredientes del archipopular stable diffusion. Es un algoritmo que se usa fundamentalmente para generar imágenes y que funciona, a grandes rasgos así:

  • Se parte de un catálogo de imágenes, que son vectores en un espacio (de dimensión alta).
  • Esos vectores se difuminan utilizando un proceso concreto —piénsese en una especie de movimiento Browniano— hasta que su distribución es aproximadamente una normal (en ese espacio de dimensión elevada).
  • A partir de valores aleatorios de esa distribución normal, invirtiendo el proceso de difusión, se obtienen muestras del espacio original (de las fotos).

Subyace a todo este tinglado la conocida como hipótesis de la subvariedad. Todas las fotos son, en el fondo, vectores en $R^N$ donde si las fotos son, digamos, $1000 \times 1000$, $N$ es 3M (número de píxeles por el número de canales). La hipótesis de la subvariedad dice que la distribución de las fotos que reconocemos como tales —piénsese que la mayoría de las fotos de $R^N$ no dejan de ser manchas grises— residen en una subvariedad de dimensión baja incrustada en $R^N$. Generar imágenes equivale entonces a muestrear dicha subvariedad, con el problema de que no sabemos ni qué forma tiene ni dónde está. Lo que proporciona DD es un caminito para llegar a ella desde un punto cualquiera del espacio.

¿Pato o conejo? (Y su moraleja)

Supongo que

es conocido de todos. Según la orientación de la imagen, la red neuronal correspondiente la categoriza bien como conejo o bien como pato.

¿El motivo? La red está entrenada con una serie de fotos etiquetadas por humanos y en ellas, las figuras en que parecen conejos están en ciertos ángulos (los naturales en fotos de conejos) y en las que aparecen patos, en otros.

"Deep learning": una evaluación crítica

Tal vendría a ser la traducción del título de este artículo con el que, mentándolo, hago contrapeso a opiniones enlatadas con sabor a gominola.

Por no dejarlo todo en dos líneas, enumero aquí los diez mayores retos (¿problemas?) que encuentra hoy en día el autor en el deep learning:

  1. Que necesita demasiados datos
  2. Que apenas tiene capacidad de transferencia (i.e., de trasladar lo aprendido en un contexto a otro)
  3. Que no sabe gestionar sistemas jerárquicos
  4. Que no es bueno infiriendo
  5. Que no es lo suficientemente transparente (en este punto cita, por supuesto, a nuestra autora favorita, Catherine O’Neill)
  6. No usa conocimiento previo (¡uh, uh, bayesianos!)
  7. No distingue correlación y causalidad (¿y quién sí?)
  8. Presume un mundo estable, inmutable
  9. Funciona bien como aproximación, pero no es enteramente fiable
  10. Plantea problemas de ingeniería, de integración con otros componentes para crear sistemas

Demasiada gente conozco que todavía no sabe de GPT-2

Así que si eres uno de ellos, lee esto. Todo. Completo. Incluidos los motivos por los que no se va a liberar tal cual.

Si te quedas con ganas de más, lee esto (un divertimento) o, más en serio, esto otro, donde se da cuenta de uno de los logros de GPT-2 que, a primera vista, pasa desapercibido: que ha logrado adquirir determinadas habilidades sin haber sido entrenado específicamente para ello.