Ciencia De Datos

Sobre el modelo beta-binomial con "deriva"

Planteamiento del problema

El modelo beta-binomial es precisamente el que estudió el reverendo Bayes. Es tan viejo como la estadística bayesiana: tienes una moneda, la tiras repetidamente y vas afinando progresivamente la estimación de la probabilidad de cara asociada a tal moneda.

Una variante habitual del problema anterior ocurre cuando hay una deriva (uso deriva como traducción de shift) en la probabilidad de la cara de la moneda: puedes estar tratando de vender productos en Amazon y estimar el número de ventas por impresión; es tentador usar el modelo beta-binomial, pero hay un problema: ¿los datos de hace tres años, siguen siendo relevantes?; ¿habrán cambiado en tanto las probabilidades?; en tal caso, ¿qué se puede hacer?

El discreto encanto de los árboles olvidadizos

I.

A mediados de los ochenta, hubo un momento fundacional en la historia del aprendizaje automático: la aparición de los árboles de decisión. El artículo de Breiman sobre las dos culturas puede entenderse así: existe —o existía en esa época— la cultura de los que usan métodos estadísticos tradicionales y la de los que usan árboles de todo tipo.

Herramientas de minería de datos de entonces, tales como las que vendían SAS o IBM, no encerraban debajo del capó otra cosa —u otra cosa novedosa— que árboles de decisión propietarios. Por todo lo anterior había mucho interés en conseguir mejores árboles, árboles que permitiesen crear mejores modelos —en el sentido, claro está, de cometer errores pequeños—.

Organización de proyectos... ¿viejuna?

I.

Este blog tiene muchos años. Cuando comencé a escribir en él, la gestión de proyectos de ciencia de datos era un carajal. Muchos de los que se dedicaban a esto organizaban los proyectos en plan TFG: ficheros y tablas con nombres de andar por casa, desorden, código que viajaba en correos electrónicos,…

Muchos eran renuentes a utilizar herramientas de control de versiones. Por aquel entonces reinaba —cuando se utilizaba, que era la excepción más que la regla— subversion. Tanto git como Github eran todavía más promesas que otra cosa. Había forjas —¡se ve que todavía existe R-forge!—, que era lo mejorcito con lo que se podía contar para trabajar colaborativamente, pero solo con los cuatro friquis que estaban dispuestos a adoptar métodos de trabajo modernos. A los más les incomodaba tener que abandonar sus mal adquiridos hábitos.

Aprendizaje por refuerzo: ¿Q o no Q?

Esta entrada está motivada por mis cavilaciones alrededor de un potencial futuro proyecto de Circiter. Es posible que por primera vez tengamos que recurrir a técnicas de aprendizaje por refuerzo y quiero aprovechar para dejar por escrito algunas cuestiones al respecto. En particular, algunas potenciales simplificaciones con respecto a la teoría general que, afortunadamente, aplicarían a nuestro caso particular.

En lo que sigue voy a dar por sabidos conceptos básicos sobre el aprendizaje por refuerzo que casi nadie conoce pero que están a un click de distancia del cerebro de cualquiera.

De qué va TimesNet

Toca TimesNet. Se trata de un modelo para la predicción (y más cosas: imputación, detección de outliers, etc.) en series temporales. Tiene que ser muy bueno porque los autores del artículo dicen nada menos que

As a key problem of time series analysis, temporal variation modeling has been well explored.

Many classical methods assume that the temporal variations follow the pre-defined patterns, such as ARIMA (Anderson & Kendall, 1976), Holt-Winter (Hyndman & Athanasopoulos, 2018) and Prophet (Taylor & Letham, 2018). However, the variations of real-world time series are usually too complex to be covered by pre-defined patterns, limiting the practical applicability of these classical methods.

Cuidado con ChatGPT (advertencia núm. 232923423)

I.

Cuando éramos críos e íbamos al colegio, todos hemos participado en conversaciones que discurrían más o menos así:

— Quiero ver el programa X.
— No puedes porque A, B y C.
— Pero Fulanito lo ve todos los días.
— No te fijes en lo que hace el más tonto; fíjate en lo que hace el más listo.

Los primeros buscadores de internet eran catastróficos. Un día apareció uno nuevo, Google, con una filosofía de madre de los setenta: fijarse en lo que hacía el más listo, no el más tonto. En el fondo, tecnicismos aparte, era en lo que se basaba el PageRank.

LLMs: grados de libertad en la generación de texto

Me he entretenido dibujando

que representa gráficamente los grados de libertad de un LLM según va generando texto. Brevemente, he arrancado con

Never in the history of

y he dejado que mi LLM fuese construyendo

Never in the history of “The Bachelor” has a contestant been so hated by the viewing public.

The “Bachelor” franchise has had its share of villains, but the one who has

mientras registraba el vector de probabilidades en cada iteración, es decir, el vector que permite que el LLM elija, por ejemplo, villains en lugar de maples, vikings or frenchmen.

LLMs en perspectiva

I.

Llevamos muchos años —muchos más de los que la mayoría de la gente piensa— detrás de mecanismos del tipo

$$f(h) = x$$

donde $h$ es una historia y $x$ es una continuación suya coherente con $h$. El texto

IN NO IST LAT WHEY CRATICT FROURE BIRS GROCID PONDENOME OF DEMONSTURES OF THE REPTAGIN IS REGOACTIONA OF CRE

se construyó en 1948 usando un procedimiento básico: $h$ son dos caracteres y $x$ es otro caracter que se elige al azar de acuerdo cierta probabilidad condicional $P(x | h)$ que se estima a partir de frecuencias observadas en un determinado corpus.

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.

Sobre la correlación entre Y y la predicción de Y

Supongamos que tenemos un modelo construido sobre unos datos $(x_i, y_i)$. Para cada $x_i$, el valor $y_i$ es una realización de una variable aleatoria $Y_i$ con distribución $F_i(y)$. Por simplificar, podemos suponer, además, que para el ajuste se utiliza el error cuadrático.

Entonces, lo mejor que puede hacer el modelo es encontrar la media $\mu_i$ de cada $Y_i$ —bueno, en realidad, querría encontrar $\mu_x$ para cada $x$ potencial, pero hoy vamos a dejar esa discusión aparcada—.