Saltar al contenido
Fundamentos

Representación vectorial

¿Cómo ve los datos una computadora?

Cuando ves la foto de un perro, sabes al instante que es un perro. Reconoces las orejas, el hocico y esa cola que no deja de moverse. Una computadora no tiene nada de eso. Nunca ha visto un perro, y lo único que sabe manejar son números.

Así que, antes de hacer cualquier cosa con una foto, una pregunta o un clic, la computadora necesita convertirlos en números. La buena noticia es que, de alguna forma, ya lo son. Una foto es una cuadrícula de puntos diminutos, cada uno con un número que dice qué tan brillante es, y cada uno de esos puntos se llama píxelun punto de una imagen, con números para su brillo y su color. Con el texto pasa algo parecido: cada letra tiene su propio código numérico.

Convertir algo en números es sencillo. Elegir números que sirvan para algo es un reto interesante.

¿Por qué no darle a cada cosa un número?

Quizás podríamos darle a cada cosa un número de identificación, como en una lista de asistencia: perro = 1, cachorro = 2, camión = 3. Con eso, la computadora ya puede distinguirlos y sabe que el 1 y el 3 son cosas distintas.

Pero la pregunta que más nos importa suele ser otra: ¿se parecen? Y estos números no dicen nada sobre eso. El cachorro quedó junto al perro por pura casualidad, porque igual pudimos haberle dado el 2 al camión y nada habría cambiado. Un número que solo sirve para distinguir una cosa de otra se llama identificadorun número que distingue una cosa de otra, sin decir nada sobre ella.

Así que esta idea no funciona. Los identificadores sirven para separar las cosas y no dicen nada sobre cuáles se parecen.

¿Cómo serían unos números útiles?

Probemos de otra forma. Describamos cada cosa con un par de preguntas que sí significan algo, y calificamos cada respuesta del 0 al 10: ¿qué tan grande es? y ¿qué tan vivo está?

TamañoVivo
Perro59
Cachorro29
Camión80

Ahora los números cuentan algo. El perro y el cachorro están igual de vivos y el cachorro es más pequeño, y el camión es grande y, como era de esperarse, nada vivo. Cada pregunta mide una característicauna propiedad que se puede medir, como el tamaño. La lista de respuestas de cada cosa, por ejemplo [5, 9] para el perro, se llama vectoruna lista ordenada de números que ubica algo en un espacio.

¿Cómo medimos qué tanto se parecen?

Con dos números, cada cosa se vuelve un punto en un plano: el tamaño en un eje y qué tan vivo está en el otro. Si los dibujamos, el cachorro queda cerca del perro y el camión queda lejos, en otra esquina. El parecido se volvió algo que se puede ver.

Y lo que se puede ver, se puede calcular. La computadora mide qué tan lejos están dos puntos. El perro y el cachorro están a 3 de distancia, mientras que el perro y el camión están a casi 9.5.

Hay otra forma de medir el parecido. Imagina una flecha que sale del origen, el punto (0, 0), y llega a cada cosa. Si dos flechas apuntan hacia el mismo lado, las cosas se parecen, aunque una flecha sea más larga que la otra. Ese puntaje se llama similitudcosenoun puntaje cercano a 1 cuando dos vectores apuntan hacia el mismo lado, y cercano a 0 cuando no tienen relación. El perro y el cachorro sacan 0.96, y el perro y el camión, 0.49.

Pero las cosas reales tienen más de dos características, ¿no?

Con solo estas dos preguntas, un lobo quedaría prácticamente en el mismo lugar que el perro. Para distinguirlos de verdad tendríamos que preguntar si ladra, si vive en una casa, si duerme en el sillón y muchas cosas más, hasta llegar a cientos o miles de números. Eso ya no se puede dibujar, pero la idea sigue igual: las cosas parecidas quedan cerca, solo que ahora en un espacio con cientos de direcciones.

Y aquí viene el cambio importante: nadie escribe esas preguntas. La computadora aprende sus propios números a partir de millones de ejemplos. Casi nunca coinciden con algo que podamos nombrar, como "tamaño", pero capturan el parecido mejor que cualquier lista que inventemos a mano.

Un vector aprendido así se llama embeddingun vector aprendido para que las cosas parecidas queden cerca; sus números casi nunca tienen un significado que podamos nombrar. En español a veces se le dice "incrustación", pero casi todo el mundo usa la palabra en inglés.

¿Estos números capturan algo más que el parecido?

Sí, y es la parte más curiosa. Si a un vector le restas otro, obtienes una dirección: la flecha que va de uno al otro. Y esas direcciones pueden guardar relaciones.

Con palabras se ve muy claro. En un embeddingdepalabrasun embedding para palabras, donde la geometría refleja cómo se relacionan, la dirección que va de "hombre" a "mujer" se parece mucho a la que va de "rey" a "reina". Así que si tomas "rey", le quitas "hombre" y le sumas "mujer", llegas muy cerca de "reina" (Mikolov y su equipo, 2013). Sumar y restar vectores de esta forma se llama aritméticadevectoressumar y restar vectores para combinar o comparar significados. No funciona igual de bien con cualquier par de palabras, aunque funciona lo suficiente como para sorprender a quienes lo descubrieron.

Las palabras¿Misma dirección?rey − hombre + mujerhombremujerreyreinahombre → mujerrey → reina1.00similitud coseno

Arrastra una palabra, o selecciónala y usa las flechas del teclado. La flecha punteada es hombre → mujer, copiada sobre rey.

Entonces, ¿cómo ve los datos una computadora?

Como vectores. Cada foto, pregunta o clic se convierte en una lista de números, y cuando esos números están bien elegidos, el espacio entero cobra sentido: lo parecido queda cerca y las relaciones aparecen como direcciones. El perro y el cachorro terminan juntos sin que nadie le explique a la computadora qué es un perro.

Pero dijimos que la computadora aprende dónde poner cada cosa. ¿Qué es exactamente lo que aprende, y cómo lo aprende? Ese es el siguiente punto del camino: Aprender de ejemplos.