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.
El resto (y la fuente), aquí.
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.
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.
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).
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.
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.
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.
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:
¿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.
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.
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).
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—.
Por motivos que quedarán claros en entradas futuras, he estado investigando sobre medidas de proximidad entre distribuciones de probabilidad. En mi caso concreto, además, multidimensionales (y de dimensión alta, en $R^N$, con $N$ del orden de docenas o centenas).
Supongamos que tenemos dos variables aleatorias $X, Y \in R^N$ y queremos ver estudiar en qué medida son próximas sus distribuciones. Idealmente, además, utilizando un método que pueda utilizarse a través de muestras de dichas variables.