¿Cómo entiende una IA que “Rambo" se parece más a “Commando" que a "La Sirenita"?
Y cómo Netflix, Spotify y compañía saben lo que te gusta...
Usamos estos servicios todos los días y la verdad es que hacen un gran trabajo recomendándonos películas, series o música. ¿Nunca te ha pasado que ves una recomendación y piensas “meh”, pero cuando la ves resulta que te termina gustando? A mi sí me ha pasado.
Pues antes de que puedan recomendarte, no sé, Undercover Brother; primero tienen que entender qué tienen en común las películas que te gustan (por cierto, yo sí te recomiendo Undercover Brother, aunque admito que no es para todos).
Hoy quiero hablar de eso y contarte como hacen Netflix (y compañía) para comparar películas.
Comparando películas
¿Cómo puede hacer una máquina para saber qué tienen en común dos películas? Necesitan una forma de saber, por ejemplo, que “Duro de matar” está más relacionada con “Tango & Cash” que con el remake de “La Sirenita”.
Pues déjame decirte que eso, que para nosotros los humanos es obvio, para una máquina representa un problema muuuuy complejo.
Para entender cómo hacen las máquinas para comparar películas, hagamos un ejercicio simple y tratemos de comparar algunas nosotros mismos. Empecemos con un grupo de películas tomadas completamente al azar (mentira) y ordenémoslas en base a cuánta acción tienen.
Se me ocurre usar Tango & Cash, Duro de Matar, El Imperio Contraataca, Undercover Brother, Commando, Rambo, Volver al Futuro, John Wick y el remake de La Sirenita.
Las voy a comparar de memoria poniéndolas en una fila de menos a más acción. Esta comparación quedaría algo así:
¿Te hace sentido? Según recuerdo, Commando tenía un poquito más de acción que Rambo y John Wick, y Undercover Brother un poco más que Volver al Futuro, date cuenta además que hay como grupos de películas.
OK, esto que es tan intuitivo para un humano tiene que pasar de alguna manera al lenguaje de una computadora… sí, estoy hablando de números, pero no te preocupes que no es nada del otro mundo. Te explico:
Digamos que a la izquierda de esa línea significa que no hay acción y a la derecha que todo es acción. Para una máquina eso significa que a la izquierda es 0 y a la derecha es 1, así le puede poner a cada película un valor de acción entre 0 y 1.
Por ejemplo, probablemente Commando tenga un valor de 0.99, Rambo de 0.98, John Wick de 0.96; y así hasta llegar a La Sirenita, que tendría algo como 0.00002 de acción. De esta manera, si le preguntas a la máquina que compare Tango & Cash con Undercover Brother, podrá decirte que la primera tiene más acción.
Entonces, si esta máquina sabe que te gustan Volver al Futuro y El Imperio Contraataca, seguramente te recomendaría Undercover Brother, porque cae entre ambas películas.
Pero este análisis es muy pobre, podríamos decir que es unidimensional (literalmente estamos usando una sola dimensión, “cantidad de acción”). Parece que necesitamos algo más…
Todo es multidimensional
Ya sabemos cómo hace una máquina para entender las diferencias entre películas, en este caso sobre cuánta acción hay en esas películas. Pero esa es sólo una dimensión, ahora veamos qué pasa si le agregamos otra… por ejemplo, digamos que quiero clasificarlas también por complejidad narrativa.
Ahora nuestro cuadro tiene dos dimensiones!
Esto nos da una mirada un poco más interesante y completa de la relación entre las películas. Ahora Commando, ya no es solo el valor de 0.99 de acción, ahora también tiene un 0.22 de complejidad narrativa. Una forma sencilla de ponerlo (para una máquina) es que ahora la representación de Commando es [0.99, 0.22]. Listo, ahora la máquina ya tiene como entender la relación entre la películas en esas dos dimensiones (por cierto este tipo de representación de una lista de números se llama vector).
Mira, por ejemplo, cómo ha crecido la distancia que hay entre John Wick y Rambo. Incorporar dimensiones nos da una mirada más completa de la complejidad de las películas y nos permite entenderlas mejor.
Pero… ¿para qué usar dos dimensiones si podemos usar tres?
Lo bonito de pensar en múltiples dimensiones es que literalmente podemos poner lo que se nos ocurra. Por ejemplo podríamos usar “duración de la película”, “director”, “edad del protagonista”, “importancia de la banda sonora”, “cantidad de secuelas”, etc, etc, etc.
La verdad es que tratar de representar en tu pantalla más de dos dimensiones es complicado, si quisiéramos agregar otra dimensión tal vez podríamos usar el tamaño de los círculos o su color… pero para qué decírtelo si podemos hacer la prueba. Qué tal si agregamos… “Cantidad de cosas que explotan”
En mi mente Commando gana, Rambo tiene lo suyo y si bien es cierto que el Imperio Contraataca tiene muchísimas explosiones, me impresionó más cuando Bruce Willis casi explota el Nakatomi plaza… pero bueno, volvamos a lo nuestro… entonces podemos agregarle la cantidad de cosas que explotan a nuestro vector :)
Entonces ahora el vector de la película Commando se vería así [0.99, 0.22, 0.85].
Como te había dicho hace un par de párrafos, para un humano es muy difícil pensar en términos de más de tres dimensiones, después de todo, estamos acostumbrados a vivir en un mundo tridimensional. Pero las matemáticas permiten que existan espacios de más de tres dimensiones (por más que no se puedan graficar), sólo basta agregarle más números a nuestro vector y voilà!
¿Y sabes quienes son muy buenas para trabajar con números? Exacto! Las máquinas. Una máquina puede trabajar con 3, 4, 5, 928, 2542 dimensiones, el cielo es el límite! (en realidad el límite es la capacidad computacional, pero tú me entiendes).
Y mientras más dimensiones tenga nuestro vector, mejor podremos entender una película y compararla con las demás!
Te cuento un secreto… este concepto se llama embedding!
Un embedding es una representación multidimensional de algo, donde cada dimensión captura algún aspecto de ese algo.
Así de simple.
Listo, ahora puedes salir a tomar una cerveza con tus amigos de ciencia de datos y hablar sobre esto ;)
Todo puede ser puntos en el espacio
Esto que acabamos de ver sobre películas funciona para todo.
Si quisiéramos clasificar una canción podríamos usar dimensiones como género de la canción, duración, cantante, ritmo, idioma, qué tan bailable es, y muchas más. De hecho es con algo así que Spotify sabe qué canciones recomendarte.
Y no se detiene ahí, realmente cualquier cosa puede ser un embedding, estoy hablando de películas, música, comida, productos, patrones de comportamiento de usuarios, libros, texto, etc.
Quiero detenerme un segundo en esto del texto, porque eso es justamente lo que usan nuestros asistentes para entendernos. Y cuando hablo de texto me refiero a cualquier texto… puede ser una sílaba, una palabra, un párrafo, un ensayo o incluso un libro completo, todos pueden ser puntos en el espacio!
Por ejemplo, la palabra “DeLorean” debe estar más cerca del guión completo de “Volver al futuro” que de la frase “No, yo soy tu padre” de “El Imperio Contraataca”. Date cuenta cómo no importa si se trata de una palabra, un guion completo de película o una frase, todos se pueden convertir en un vector usando embeddings y ver qué tan cerca están unos de otros.
Y eso es exactamente lo que pasa cuando escribes texto en ChatGPT, Claude o tu asistente favorito usa embeddings para transformar tu texto en vectores. En el caso de ChatGPT se trata de vectores de 3072 dimensiones!
Importante: no importa si le dijiste “Hola” o todo el guión de “Tango & Cash”, en cualquiera de estos casos tu texto siempre se convierte en un vector de 3072 dimensiones.
Así que la próxima vez que Netflix te recomiende una película, Spotify rellene tu lista de reproducción o tengas una conversación con tu asistente de IA favorito, ya sabes que todo empieza con puntos en un espacio multidimensional (A.K.A vectores).
¿Y cómo hacen las recomendaciones?
OK, ok, este no es técnicamente un post sobre recomendaciones, pero no quiero dejarte en el aire.
Hay varias formas de hacer recomendaciones, y estoy preparando un post (o una a serie de posts) sobre eso, pero déjame adelantarte que...
Te recomienda películas que estén “cerca” de las películas que te gustaron.
Muy sencillo ¿no? Como todas las películas tienen un embedding, y ya hemos visto que es una lista de números que describe muchas dimensiones de la película, pues usando algo de matemáticas avanzadas la computadora “mide la distancia” entre las películas y te da las películas que estén más cerca a las que te gustaron.
Volviendo a nuestro ejemplo, si viste Tango & Cash y te encantó (¿a quién no?), el sistema puede ver que está más cerca de Duro de Matar y recomendarte esa película (si te recomienda la sirenita es que hay un problema).
Por supuesto, mientras más películas hayas visto, y “likeado” más precisas y acertadas serán las recomendaciones que te den.
Ahora, esto es sólo una forma de hacer recomendaciones, hay varias más. Por ejemplo, el comportamiento de un usuario también puede convertirse en un embedding… pero eso es parte de otro post.
Por el momento sólo hay una cosa más que quiero contarte…
¿Tango & Cash, Germán? ¿En serio?
Sí, es una gran película! Si quieres conocer un poco más de mis gustos en el séptimo arte déjame contarte que no soy muy sofisticado. Usualmente me engancho con películas y las veo una y otra y otra vez.
Por ejemplo, probablemente mis plataformas de streaming saben que veo Tango & Cash, Volver al futuro, La Guerra de las galaxias (las 3 que valen la pena), Rocky (todas menos la cinco), cualquiera de Van Damme, Undercover Brother, The Core, Without Warning (gran película para TV del 94), Commando, Rambo, Robocop y Robin Hood (la versión de dibujos animados de Disney)… y usan eso para hacerme recomendaciones.
Si tú quieres recomendarte una peli, por favor déjala en los comentarios.
Mientras tanto déjame recomendarte Undercover Brother:
Espero que te haya gustado el post.
Nos vemos!
G












Qué buen post Germán. Hace diez años esto ya existía, pero estaba en papers y equipos especializados; hoy es parte de nuestro día a día solo que muy pocos saben que detrás de ello hay vectores y matemáticas.
muy buen post, este tipo de contenido es muy enriquecedor.