← Proyectos

A mí me strofa

Visitar sitio · Ver código

Motivación

Con el crecimiento de la inteligencia artificial, me estaba preguntando si los gustos literarios se pueden reducir a un sencillo modelo o si los gustos son íntimos al punto que una IA no puede predecir nada.

Este proyecto también sirvió como una clase en cloud ML con Google.

Lo que hice

Al utilizar las funcionalidades de ML en Google, creé embeddings de unos 187 poemas a los que di una nota de 1, 2 o 3. Luego entrené 3 modelos: hay un modelo sin ninguna indicación de mis preferencias, uno con una colección mínima (40) de mis notas, y uno de regresión logística con todos los poemas.

El tercer modelo, un modelo más sencillo que un LLM, rinde significativamente mejor: 0,410 frente a 0,340 del LLM.

Hay dos explicaciones: 1. que, con más datos (solo tiene cerca de 200 notas mías), el modelo sería mucho mejor; 2. que los gustos humanos son complicados: dependen de más de un texto. Dependen de lo que estamos experimentando; si queremos explorar algo nuevo o quedarnos con lo mismo; si estamos cansados y no queremos algo tan largo; si conocemos algo sobre el autor...

Me interesa más esa segunda explicación porque muestra que pase lo que pase, nuestro juicio como seres humanos siempre nos servirá.

Arquitectura

   Qué Mal Poema (blog diario)                 Cloud Scheduler (cada 10 min)
   poema citado + mi nota                             │
                 │ HTTPS, solo lectura                │
                 └──────────────────┬─────────────────┘
                                    ▼
                  Cloud Run · FastAPI (escala a cero)
                  clasificador cargado en memoria
                                    │
                 ┌──────────────────┴──────────────────┐
                 ▼                                     ▼
       gemini-embedding-001                    Gemini genérico
       → regresión logística                   (el rival)
                 └──────────────────┬──────────────────┘
                                    ▼
                  BigQuery · predicciones congeladas
                  (una por día, antes de conocer mi nota)
                                    │
               ┌────────────────────┴────────────────────┐
               ▼                                         ▼
     Página del blog                         corpus → compuerta
     mi nota · mi modelo · Gemini            campeón–challenger
                                                         │
                                                         ▼
                                           Cloud Storage → nuevo campeón

Stack técnico

CapaTecnología
EmbeddingsVertex AI · gemini-embedding-001 (256 dimensiones)
RivalVertex AI · Gemini (genérico y con mis notas en el prompt)
Modeloscikit-learn · regresión logística, LOO-CV
ServidorFastAPI en Cloud Run, escala a cero
AlmacenamientoBigQuery (predicciones congeladas), Cloud Storage (modelo)
OrquestaciónCloud Scheduler (cada 10 min)