{"id":714,"date":"2022-05-10T12:59:56","date_gmt":"2022-05-10T12:59:56","guid":{"rendered":"https:\/\/komorebi.ai\/?p=714"},"modified":"2023-02-13T10:49:06","modified_gmt":"2023-02-13T10:49:06","slug":"una-introduccion-al-aprendizaje-contrastivo-con-clip","status":"publish","type":"post","link":"https:\/\/komorebi.ai\/en\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/","title":{"rendered":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"714\" class=\"elementor elementor-714\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e8376fe e-flex e-con-boxed e-con e-parent\" data-id=\"e8376fe\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d49047 elementor-widget elementor-widget-text-editor\" data-id=\"9d49047\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lectura: 4 minutos<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-05bfe15 elementor-widget elementor-widget-text-editor\" data-id=\"05bfe15\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>En esta entrada os mostraremos los aspectos t\u00e9cnicos de nuestra anterior publicaci\u00f3n sobre la demo de Art-Explorer. Hemos elaborado una introducci\u00f3n al aprendizaje contrastivo con CLIP, donde explicaremos qu\u00e9 es el contrastive learning, qu\u00e9 problemas soluciona dentro del campo de la #IA y, por supuesto, qu\u00e9 relaci\u00f3n tiene con nuestra demo.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e8e0427 elementor-widget elementor-widget-text-editor\" data-id=\"e8e0427\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>La arquitectura CLIP (Contrastive Language\u2013Image Pre-training) fue introducida a principios del a\u00f1o pasado y supuso toda una revoluci\u00f3n en la forma en que podemos trabajar con datos multimodales, concretamente im\u00e1genes y texto.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c87fba elementor-widget elementor-widget-text-editor\" data-id=\"0c87fba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Aunque el deep learning ha desencadenado un boom en el campo de la&nbsp;<a href=\"https:\/\/komorebi.ai\/en\/tecnologias\/\">computer vision<\/a>&nbsp;y el<a href=\"https:\/\/komorebi.ai\/en\/tecnologias\/\">&nbsp;procesamiento de lenguaje natural<\/a>, los enfoques actuales presentan algunas desventajas. Los datasets necesarios para entrenar requieren de abundantes cantidades de im\u00e1genes anotadas y los modelos solo son buenos en tareas muy concretas, requiriendo un esfuerzo significativo para adaptarse a nuevas tareas.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7905c6e elementor-widget elementor-widget-text-editor\" data-id=\"7905c6e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>El modelo CLIP trata de aliviar los problemas anteriores: est\u00e1 entrenado en una enorme variedad de pares de (imagen, texto) disponibles en internet. Por construcci\u00f3n, la red neuronal puede ser instruida en lenguaje natural para realizar cualquier tarea de clasificaci\u00f3n, o de b\u00fasqueda sem\u00e1ntica. Sin tener que entrenar directamente sobre la tarea concreta.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f339d1 elementor-widget elementor-widget-text-editor\" data-id=\"2f339d1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Esto es lo que se llama \u201czero-shot\u201d learning, t\u00e9cnica que ha sido popularizada por otros modelos como&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/GPT-3\">GPT-3<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d75594 elementor-widget elementor-widget-text-editor\" data-id=\"3d75594\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h1>\u00bfC\u00f3mo funciona?<\/h1>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-389cbde elementor-widget elementor-widget-text-editor\" data-id=\"389cbde\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>El dataset de pares de im\u00e1genes y texto que fue empleado para pre-entrenar CLIP no se encuentra disponible p\u00fablicamente, pero se conoce su magnitud: en torno a 400 millones de pares de ejemplos.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-93ae337 elementor-widget elementor-widget-text-editor\" data-id=\"93ae337\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Para cada par de ejemplos (imagen, texto), se utilizan respectivos encoders que obtienen un vector de embedding para la imagen y otro para el texto:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9787c5d elementor-widget elementor-widget-text-editor\" data-id=\"9787c5d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"457\" height=\"124\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_4.png\" alt=\"\" class=\"wp-image-698\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_4.png 457w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_4-300x81.png 300w\" sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4d0efb elementor-widget elementor-widget-text-editor\" data-id=\"f4d0efb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Para la parte de texto, el encoder est\u00e1 basado en BERT, y para la parte de visi\u00f3n puede ser una ResNet o un transformer adaptado a im\u00e1genes como ViT. Estos vectores de embeddings tienen la misma dimensi\u00f3n, que puede ser 512 \u00f3 768 en funci\u00f3n del tama\u00f1o del modelo CLIP.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b802ab7 elementor-widget elementor-widget-text-editor\" data-id=\"b802ab7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Pero aqu\u00ed est\u00e1 la gracia: c\u00f3mo hemos proyectado la imagen y el texto a un mismo espacio, podemos ahora realizar comparaciones entre vectores. No s\u00f3lo para comparar textos entre s\u00ed, o im\u00e1genes entre s\u00ed, como ya era habitual, sino tambi\u00e9n para saber qu\u00e9 texto est\u00e1 m\u00e1s cerca de cierta imagen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9fb5d75 elementor-widget elementor-widget-text-editor\" data-id=\"9fb5d75\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\u00bfY c\u00f3mo se pre-entren\u00f3 CLIP? Pues dado un mini-batch de (imagen, texto), se obtienen los respectivos vectores de embeddings. Con ellos, se usa una funci\u00f3n de coste similar a la cross-correlation, para acercar los embeddings de pares correctos (azul en la diagonal de la siguiente Figura), y alejar los embeddings cuando la imagen no coincida con el texto asociado (fuera de la diagonal):<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d740bf7 elementor-widget elementor-widget-text-editor\" data-id=\"d740bf7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"729\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_3-1024x729.png\" alt=\"\" class=\"wp-image-699\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_3-1024x729.png 1024w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_3-300x214.png 300w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_3-768x547.png 768w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_3.png 1284w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-347ac86 elementor-widget elementor-widget-text-editor\" data-id=\"347ac86\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A diferencia del aprendizaje supervisado tradicional, esto es lo que se conoce como aprendizaje contrastivo y es lo que da fuerza a los modelos recientes como CLIP.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8840600 elementor-widget elementor-widget-text-editor\" data-id=\"8840600\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ahora bien, una vez ya est\u00e1 pre-entrenado, supongamos que queremos clasificar nuevas im\u00e1genes, de forma zero-shot. La idea original es tratar la clase a clasificar como si fuera el \u201ctexto\u201d asociado a las im\u00e1genes. Esto lo hacemos para cada clase, por lo que si estamos clasificando en N clases, tenemos N vectores de embeddings de texto:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6f276b9 elementor-widget elementor-widget-text-editor\" data-id=\"6f276b9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"471\" height=\"123\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_2.png\" alt=\"\" class=\"wp-image-700\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_2.png 471w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_2-300x78.png 300w\" sizes=\"(max-width: 471px) 100vw, 471px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87a21fd elementor-widget elementor-widget-text-editor\" data-id=\"87a21fd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Y luego, para cada imagen, calcularemos su embedding:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0273f65 elementor-widget elementor-widget-text-editor\" data-id=\"0273f65\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"353\" height=\"50\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_5.png\" alt=\"\" class=\"wp-image-701\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_5.png 353w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_5-300x42.png 300w\" sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-80dbf92 elementor-widget elementor-widget-text-editor\" data-id=\"80dbf92\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Para ver qu\u00e9 texto est\u00e1 m\u00e1s cerca de la imagen, basta con que calculemos la similaridad (mediante el producto escalar de los vectores normalizados). Estas similaridades ya las podemos interpretar como logits de una red neuronal est\u00e1ndar:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd4a09d elementor-widget elementor-widget-text-editor\" data-id=\"bd4a09d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"61\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_6.png\" alt=\"\" class=\"wp-image-702\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_6.png 498w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_6-300x37.png 300w\" sizes=\"(max-width: 498px) 100vw, 498px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed473f5 elementor-widget elementor-widget-text-editor\" data-id=\"ed473f5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>La clase que tenga mayor logit, esa ser\u00e1 la predicha por el modelo. En la siguiente Figura se muestra un esquema de lo anterior:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dff3a8a elementor-widget elementor-widget-text-editor\" data-id=\"dff3a8a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"719\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_7-1024x719.png\" alt=\"\" class=\"wp-image-703\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_7-1024x719.png 1024w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_7-300x211.png 300w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_7-768x539.png 768w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_7.png 1336w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a7b4429 elementor-widget elementor-widget-text-editor\" data-id=\"a7b4429\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Pero las posibilidades con CLIP no terminan en clasificaci\u00f3n. Con un enfoque similar podemos hacer aplicaciones de b\u00fasqueda sem\u00e1ntica, como la que se encuentra por debajo de nuestra aplicaci\u00f3n del&nbsp;<a href=\"https:\/\/art-explorer.komorebi.ai\/\">Art Explorer<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b84d24c elementor-widget elementor-widget-text-editor\" data-id=\"b84d24c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>En vez de fijar las etiquetas textuales y hacer queries con las im\u00e1genes, podemos hacer lo opuesto. Calcular primero los correspondientes embeddings visuales de las im\u00e1genes que queramos indexar, y luego hacer consultas con diferentes textos. \u00c9stos, son proporcionados por el usuario en una aplicaci\u00f3n de b\u00fasqueda como la anterior.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e1c608 elementor-widget elementor-widget-text-editor\" data-id=\"8e1c608\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Esencialmente, esto es una<a href=\"https:\/\/en.wikipedia.org\/wiki\/Nearest_neighbor_search\">&nbsp;b\u00fasqueda glorificada de vecinos m\u00e1s pr\u00f3ximos<\/a>&nbsp;(kNN), pero en un espacio de representaciones muy ricas, aprendidas gracias al dataset masivo en el que CLIP fue pre-entrenado.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72cf1cb elementor-widget elementor-widget-text-editor\" data-id=\"72cf1cb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A modo de ejemplo, en la siguiente Figura representamos dos embeddings visuales de dos cuadros, y otros tres embeddings textuales de posibles descripciones de esos cuadros. Vemos c\u00f3mo unos est\u00e1n razonablemente m\u00e1s cerca de otros.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9bd0bd3 elementor-widget elementor-widget-text-editor\" data-id=\"9bd0bd3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_8-1024x726.png\" alt=\"\" class=\"wp-image-704\" width=\"526\" height=\"372\" srcset=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_8-1024x726.png 1024w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_8-300x213.png 300w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_8-768x544.png 768w, https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_8.png 1222w\" sizes=\"(max-width: 526px) 100vw, 526px\" \/><\/figure><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a99a16 elementor-widget elementor-widget-text-editor\" data-id=\"9a99a16\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Aqu\u00ed terminamos nuestra exploraci\u00f3n de la arquitectura CLIP y de las posibilidades que nos ofrece pero, \u00a1pronto habr\u00e1 m\u00e1s!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-af0a693 elementor-widget elementor-widget-text-editor\" data-id=\"af0a693\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Mientras tanto, si te ha entrado alguna duda o curiosidad acerca de este modelo, o de las posibilidades que pueda ofrecerte, te invitamos a contactar con nosotros en&nbsp;<a href=\"mailto:consulta@komorebi.ai\">consulta@komorebi.ai<\/a>&nbsp;. Si lo deseas, sin compromiso, un investigador de nuestro equipo de expertos estar\u00e1 encantado de mantener una charla contigo para asesorarte y resolver todas tus dudas.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-92f3446 elementor-widget elementor-widget-text-editor\" data-id=\"92f3446\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Referencias<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f53c9a2 elementor-widget elementor-widget-text-editor\" data-id=\"f53c9a2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<blockquote class=\"wp-block-quote\"><p>Radford, Alec, et al. \u00abLearning transferable visual models from natural language supervision.\u00bb International Conference on Machine Learning. PMLR, 2021.<\/p><cite><a href=\"https:\/\/art-explorer.komorebi.ai\/\">https:\/\/art-explorer.komorebi.ai<\/a><\/cite><\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Lectura: 4 minutos En esta entrada os mostraremos los aspectos t\u00e9cnicos de nuestra anterior publicaci\u00f3n sobre la demo de Art-Explorer. Hemos elaborado una introducci\u00f3n al aprendizaje contrastivo con CLIP, donde explicaremos qu\u00e9 es el contrastive learning, qu\u00e9 problemas soluciona dentro del campo de la #IA y, por supuesto, qu\u00e9 relaci\u00f3n tiene con nuestra demo. La [&hellip;]<\/p>","protected":false},"author":1,"featured_media":705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[24,23,20,22,21],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/komorebi.ai\/en\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI\" \/>\n<meta property=\"og:description\" content=\"Lectura: 4 minutos En esta entrada os mostraremos los aspectos t\u00e9cnicos de nuestra anterior publicaci\u00f3n sobre la demo de Art-Explorer. Hemos elaborado una introducci\u00f3n al aprendizaje contrastivo con CLIP, donde explicaremos qu\u00e9 es el contrastive learning, qu\u00e9 problemas soluciona dentro del campo de la #IA y, por supuesto, qu\u00e9 relaci\u00f3n tiene con nuestra demo. La [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/komorebi.ai\/en\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\" \/>\n<meta property=\"og:site_name\" content=\"Komorebi AI\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T12:59:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-13T10:49:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"478\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Administrador\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\"},\"author\":{\"name\":\"Administrador\",\"@id\":\"https:\/\/komorebi.ai\/es\/#\/schema\/person\/81a06ff3a3e52a19764878c404646357\"},\"headline\":\"Una introducci\u00f3n al aprendizaje contrastivo con CLIP\",\"datePublished\":\"2022-05-10T12:59:56+00:00\",\"dateModified\":\"2023-02-13T10:49:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\"},\"wordCount\":897,\"publisher\":{\"@id\":\"https:\/\/komorebi.ai\/es\/#organization\"},\"keywords\":[\"Arte\",\"Buscador\",\"Conocimiento\",\"Inteligencia Artificial y Tecnolog\u00eda\",\"Komorebi\"],\"articleSection\":[\"Expertos\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\",\"url\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\",\"name\":\"Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI\",\"isPartOf\":{\"@id\":\"https:\/\/komorebi.ai\/es\/#website\"},\"datePublished\":\"2022-05-10T12:59:56+00:00\",\"dateModified\":\"2023-02-13T10:49:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/komorebi.ai\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Una introducci\u00f3n al aprendizaje contrastivo con CLIP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/komorebi.ai\/es\/#website\",\"url\":\"https:\/\/komorebi.ai\/es\/\",\"name\":\"Komorebi AI\",\"description\":\"Komorebi\",\"publisher\":{\"@id\":\"https:\/\/komorebi.ai\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/komorebi.ai\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/komorebi.ai\/es\/#organization\",\"name\":\"Komorebi AI\",\"url\":\"https:\/\/komorebi.ai\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/komorebi.ai\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/07\/isologotipo_normal.png\",\"contentUrl\":\"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/07\/isologotipo_normal.png\",\"width\":456,\"height\":277,\"caption\":\"Komorebi AI\"},\"image\":{\"@id\":\"https:\/\/komorebi.ai\/es\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/komorebi.ai\/es\/#\/schema\/person\/81a06ff3a3e52a19764878c404646357\",\"name\":\"Administrador\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/komorebi.ai\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c2c90afe7405fe84711176eb69dc74f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c2c90afe7405fe84711176eb69dc74f7?s=96&d=mm&r=g\",\"caption\":\"Administrador\"},\"sameAs\":[\"https:\/\/komorebi.dev\"],\"url\":\"https:\/\/komorebi.ai\/en\/author\/komoreb1\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/komorebi.ai\/en\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/","og_locale":"en_US","og_type":"article","og_title":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI","og_description":"Lectura: 4 minutos En esta entrada os mostraremos los aspectos t\u00e9cnicos de nuestra anterior publicaci\u00f3n sobre la demo de Art-Explorer. Hemos elaborado una introducci\u00f3n al aprendizaje contrastivo con CLIP, donde explicaremos qu\u00e9 es el contrastive learning, qu\u00e9 problemas soluciona dentro del campo de la #IA y, por supuesto, qu\u00e9 relaci\u00f3n tiene con nuestra demo. La [&hellip;]","og_url":"https:\/\/komorebi.ai\/en\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/","og_site_name":"Komorebi AI","article_published_time":"2022-05-10T12:59:56+00:00","article_modified_time":"2023-02-13T10:49:06+00:00","og_image":[{"width":800,"height":478,"url":"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/05\/image_1.jpg","type":"image\/jpeg"}],"author":"Administrador","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Administrador","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#article","isPartOf":{"@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/"},"author":{"name":"Administrador","@id":"https:\/\/komorebi.ai\/es\/#\/schema\/person\/81a06ff3a3e52a19764878c404646357"},"headline":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP","datePublished":"2022-05-10T12:59:56+00:00","dateModified":"2023-02-13T10:49:06+00:00","mainEntityOfPage":{"@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/"},"wordCount":897,"publisher":{"@id":"https:\/\/komorebi.ai\/es\/#organization"},"keywords":["Arte","Buscador","Conocimiento","Inteligencia Artificial y Tecnolog\u00eda","Komorebi"],"articleSection":["Expertos"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/","url":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/","name":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP - Komorebi AI","isPartOf":{"@id":"https:\/\/komorebi.ai\/es\/#website"},"datePublished":"2022-05-10T12:59:56+00:00","dateModified":"2023-02-13T10:49:06+00:00","breadcrumb":{"@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/komorebi.ai\/una-introduccion-al-aprendizaje-contrastivo-con-clip\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/komorebi.ai\/"},{"@type":"ListItem","position":2,"name":"Una introducci\u00f3n al aprendizaje contrastivo con CLIP"}]},{"@type":"WebSite","@id":"https:\/\/komorebi.ai\/es\/#website","url":"https:\/\/komorebi.ai\/es\/","name":"Komorebi AI","description":"Komorebi","publisher":{"@id":"https:\/\/komorebi.ai\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/komorebi.ai\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/komorebi.ai\/es\/#organization","name":"Komorebi AI","url":"https:\/\/komorebi.ai\/es\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/komorebi.ai\/es\/#\/schema\/logo\/image\/","url":"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/07\/isologotipo_normal.png","contentUrl":"https:\/\/komorebi.ai\/wp-content\/uploads\/2022\/07\/isologotipo_normal.png","width":456,"height":277,"caption":"Komorebi AI"},"image":{"@id":"https:\/\/komorebi.ai\/es\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/komorebi.ai\/es\/#\/schema\/person\/81a06ff3a3e52a19764878c404646357","name":"Administrador","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/komorebi.ai\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c2c90afe7405fe84711176eb69dc74f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c2c90afe7405fe84711176eb69dc74f7?s=96&d=mm&r=g","caption":"Administrador"},"sameAs":["https:\/\/komorebi.dev"],"url":"https:\/\/komorebi.ai\/en\/author\/komoreb1\/"}]}},"_links":{"self":[{"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/posts\/714"}],"collection":[{"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/comments?post=714"}],"version-history":[{"count":10,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/posts\/714\/revisions"}],"predecessor-version":[{"id":7609,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/posts\/714\/revisions\/7609"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/media\/705"}],"wp:attachment":[{"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/media?parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/categories?post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/komorebi.ai\/en\/wp-json\/wp\/v2\/tags?post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}