Hackeando la similitud coseno para que encuentres las mejores imágenes
En Freepik, sabemos lo importante que es poder encontrar la imagen que buscas. Así que, los equipos de Inteligencia Artificial (IA) y Search unieron sus fuerzas para desarrollar el nuevo motor de búsqueda que ya está disponible. Mientras que el equipo de IA se encargaba de testar varios modelos de IA y de encontrar los resultados más relevantes para diferentes consultas, el equipo de Search tenía que potenciar el contenido que aportase mayor calidad para los usuarios. Sabemos que «calidad» es un término complejo, pero la explicación es sencilla: cuando buscas la palabra «coche» en Freepik, no esperas encontrar imágenes simples, sino las que has imaginado en tu mente. Como (todavía) no tenemos una bola de cristal, lo que hacemos es observar cuáles son los recursos que eligen otros usuarios y potenciar su visibilidad de manera global en los resultados de búsqueda.
A la hora de buscar recursos, la relevancia y la calidad son dos factores clave que determinan el éxito del proceso. Para establecer los resultados que son relevantes, convertimos los textos de búsqueda y las imágenes obtenidas como resultado en puntos y los ubicamos en un espacio multidimensional. Esto se conoce como «embedding en el espacio latente», una forma elegante de llamar a una lista específica de 512 números. Si medimos la proximidad de estos puntos, podemos determinar cómo de relevante es una imagen de acuerdo con un texto. Cuanto más cerca están los puntos, más concordancia hay entre el significado de la imagen y el del texto de búsqueda.
Pero en un espacio tan dimensional como este, la mayoría de los puntos se ubican al borde del espacio. Por eso, lo que se suele hacer en estos casos es medir la distancia entre dos puntos según el coseno de su ángulo. Básicamente, es como buscar estrellas en el cielo. Dos estrellas parecerán estar más cerca, sea cual sea su distancia real, si están separadas por un ángulo pequeño.
Esto mismo ocurre con los embeddings de los textos e imágenes.
Para calcular el coseno entre estos embeddings, los normalizamos y calculamos su producto interno. Cuando los normalizamos, nuestro código supone que el producto interno es igual a la similitud del coseno, cuyo valor oscila entre 0 y 1. Es decir, cuanto más se acerque a 1 el valor del coseno, más concordancia hay entre los significados de la imagen y su texto. Por lo tanto, el resultado será más relevante y aportará mayor calidad. ¿Y cómo podemos potenciar la visibilidad de las imágenes relevantes en los resultados de búsqueda?
Un miembro de nuestro equipo tuvo una idea espectacular: «desnormalizar» los embeddings de las imágenes relevantes multiplicándolas por (1 + ɑ). De esta manera, ampliamos el producto interno de la imagen y le aportamos artificialmente una similitud de coseno mayor que cualquier embedding, con el objetivo de «acercar» las imágenes al texto de búsqueda. Es cierto que el resultado ya no es un coseno porque supera el valor + 1, pero esto no tiene ninguna consecuencia negativa y funciona muy bien. De hecho, cuando testamos el nuevo motor de búsqueda con el coseno hackeado en un test AB, el número de búsquedas exitosas incrementó un 3 %. ¡Es un resultado excelente!
Actualmente, estamos trabajando en otras mejoras. Por ejemplo, cómo valoramos la «calidad» que aporta nuestro contenido y cómo podemos potenciar las imágenes de más «calidad» de manera más individual. Si te fascina trabajar con un equipo centrado en la IA, motores de búsqueda y cantidades masivas de datos, estás de enhorabuena porque te estamos buscando.