Introducción
Este proyecto se trata de obtener mejores disparos cero Clasificación de imágenes y texto utilizando modelos CV/LLM sin gastar tiempo y dinero ajustado en el entrenamiento, o volver a ejecutar modelos en inferencia. Utiliza una nueva técnica de reducción de dimensionalidad en los incrustaciones y determina clases que utilizan la comparación de pares de estilo de torneo. Resultó en un aumento en el acuerdo de texto/imagen del 61% al 89% para un conjunto de datos de 50k en 13 clases.
https://github.com/doc1000/pairwise_classification
Donde lo usarás
La aplicación práctica está en la búsqueda de clase a gran escala donde la velocidad de la inferencia es importante y el gasto en el modelo es una preocupación. También es útil para encontrar errores en su proceso de anotación: clasificaciones erróneas en una gran base de datos.
Resultados
El puntaje F1 ponderado que comparó el acuerdo de clase de texto e imagen pasó del 61% al 88% para ~ 50k elementos en 13 clases. Una inspección visual también validó los resultados.
| F1_Score (ponderado) | modelo base | a pareja |
| Multiclase | 0.613 | 0.889 |
| Binario | 0.661 | 0.645 |
Izquierda: base, incrustación completa, argmax en el modelo de similitud de coseno
Derecha: modelo de torneo por pares utilizando sub-segmentos de características puntuados por CrossRatio
Imagen del autor
Método: Comparación por pares de la similitud cosena de las subdimensiones de incrustación determinadas por la puntuación a escala media
Una forma directa de la clasificación vectorial es comparar los incrustaciones de imagen/texto con los incrustaciones de clase utilizando la similitud de coseno. Es relativamente rápido y requiere una sobrecarga mínima. También puede ejecutar un modelo de clasificación en las incrustaciones (regresiones logísticas, árboles, SVM) y apuntar a la clase sin más incrustaciones.
Mi enfoque era reducir el tamaño de la característica en los incrustaciones que determinaban qué distribuciones de características eran sustancialmente diferentes entre dos clases y, por lo tanto, contribuyeron con información con menos ruido. Para las características de puntuación, utilicé una derivación de varianza que abarca dos distribuciones, que me refiero como varianza cruzada (más a continuación). Utilicé esto para obtener dimensiones importantes para la categoría de ‘ropa’ (One-VS-the Rest) y reclasificarme usando las subfreaturas, que mostraron cierta mejora en el poder del modelo. Sin embargo, la comparación de la subfreición mostró mejores resultados al comparar las clases por pares (una frente a una/cabeza a cabeza). Por separado para imágenes y texto, construí un soporte de estilo ‘torneo’ en toda la matriz de comparaciones por pares, hasta que se determinó una clase final para cada elemento. Termina siendo bastante eficiente. Luego obtuve el acuerdo entre las clasificaciones de texto y imagen.
Utilizando la varianza cruzada, la selección de características específicas de combinación y la asignación de torneo por pares.
Estoy usando una base de datos de imágenes de producto que estaba fácilmente disponible con insertos de clip precalculados (gracias SQID (citado a continuación. Este conjunto de datos se publica bajo la licencia MIT), Amzn (Citado a continuación. Este conjunto de datos tiene licencia bajo la licencia de Apache 2.0) y se dirige a las imágenes de ropa porque ahí es donde vi por primera vez este efecto (gracias al equipo de DS en Nordstrom). El conjunto de datos se redujo de 150k elementos/imágenes/descripciones a ~ 50k elementos de ropa utilizando la clasificación de disparos cero, luego la clasificación aumentada basada en subarrañas dirigidas.
Estadística de prueba: varianza cruzada
Este es un método para determinar qué tan diferente es la distribución para dos clases diferentes cuando se dirige a una sola característica/dimensión. Es una medida de la varianza promedio combinada si cada elemento de ambas distribuciones se cae en la otra distribución. Es una expansión de las matemáticas de varianza/desviación estándar, pero entre dos distribuciones (que pueden ser de tamaño variable). No he visto que se usara antes, aunque puede aparecer en un apodo diferente.
Varianza cruzada:
Similar a la varianza, excepto sumar tanto las distribuciones como tomar una diferencia de cada valor en lugar de la media de la distribución única. Si ingresa la misma distribución que A y B, entonces produce los mismos resultados que la varianza.
Esto simplifica para:
Esto es equivalente a la definición alternativa de varianza (la media de los cuadrados menos el cuadrado de la media) para una sola distribución cuando las distribuciones I y J son iguales. El uso de esta versión es masivamente más rápido y más eficiente en la memoria que intentar transmitir las matrices directamente. Proporcionaré la prueba y entraré en más detalles en otro artículo. La desviación cruzada (ς) es la raíz cuadrada de Undefined.
Para obtener características, uso una relación. El numerador es la varianza cruzada. El denominador es el producto de IJ, igual que el denominador de la correlación de Pearson. Luego tomo la raíz (podría usar fácilmente la varianza cruzada, lo que se compararía más directamente con la covarianza, pero he encontrado que la relación es más compacta e interpretable usando Cross Dev).
Interpreto esto como el aumento de la desviación estándar combinada si intercambias clases por cada elemento. Un gran número significa que la distribución de características es probablemente bastante diferente para las dos clases.
Imagen del autor
Esta es una diferencia alternativa a escala media ks_test; Las pruebas bayesianas 2DIST y la distancia de inicio de frechet son alternativas. Me gusta la elegancia y la novedad de Cross Var. Probablemente haré un seguimiento mirando a otros diferenciadores. Debo tener en cuenta que determinar las diferencias de distribución para una característica normalizada con la media general 0 y SD = 1 es su propio desafío.
Subdimensiones: reducción de dimensionalidad del espacio de incrustación para la clasificación
Cuando intentas encontrar un particular Característica de una imagen, ¿necesitas toda la incrustación? ¿El color o si algo es una camisa o un par de pantalones ubicados en una sección estrecha de la incrustación? Si estoy buscando una camisa, no necesariamente me importa si es azul o rojo, así que solo miro las dimensiones que definen la “camisa” y tiran las dimensiones que definen el color.
Imagen del autor
Estoy tomando un [n,768] Incrustación dimensional y reduciéndose a más de 100 dimensiones que realmente importan para un par de clases en particular. ¿Por qué? Porque la métrica de similitud de coseno (COSIM) se ve influenciada por el ruido de las características relativamente poco importantes. La incrustación conlleva una gran cantidad de información, gran parte de la cual simplemente no le importa en un problema de clasificación. Deshágase del ruido y la señal se fortalezca: Cosim aumenta con la eliminación de dimensiones “sin importancia”.
Imagen del autor
Para una comparación por pares, primero divide los elementos en clases utilizando similitud de coseno estándar aplicada a la incrustación completa. Excluyo algunos elementos que muestran muy bajos Cosim en el supuesto de que la habilidad del modelo es baja para esos elementos (límite de cosim). También excluyo elementos que muestran una baja diferenciación entre las dos clases (COSIM Diff). El resultado son dos distribuciones sobre las cuales extraer dimensiones importantes que deberían definir la diferencia ‘verdadera’ entre las clasificaciones:
Imagen del autor
Clasificación del torneo por pares de matriz
Obtener una asignación de clase global de comparaciones por pares requiere algo de pensamiento. Puede tomar la tarea dada y comparar solo esa clase con todos los demás. Si hubo una buena habilidad en la tarea inicial, esto debería funcionar bien, pero si varias clases alternativas son superiores, se encuentra con problemas. Un enfoque cartesiano donde compara todos los vs todo lo llevaría allí, pero se volvería grande rápidamente. Me decidí por un rango de estilo ‘torneo’ en toda la matriz de comparaciones por pares.
Esto tiene rondas log_2 (#Classes) y número total de comparaciones maximizando en SUGRATION_ROUND (combo (#Classes en redondeo)*n_items) en algunos#de características especificadas. Aleatorizo el orden de los ‘equipos’ en cada ronda para que las comparaciones no sean las mismas cada vez. Tiene algún riesgo de pareja, pero llega a un ganador rápidamente. Está construido para manejar una variedad de comparaciones en cada ronda, en lugar de iterar sobre elementos.
Tanteo
Finalmente, obtuve el proceso determinando si la clasificación del texto y las imágenes coinciden. Mientras la distribución no tenga mucho sobrepeso hacia una clase ‘predeterminada’ (no lo es), esta debería ser una buena evaluación de si el proceso está sacando información real de las incrustaciones.
Miré la puntuación F1 ponderada que comparó las clases asignadas usando la imagen frente a la descripción del texto. Cuanto mejor se suponga, mejor es el acuerdo, más probable es que la clasificación sea correcta. Para mi conjunto de datos de ~ 50k imágenes y descripciones de texto de ropa con 13 clases, la puntuación inicial del modelo simple de similitud de coseno de incrustación completa pasó del 42% al 55% para la subfreición Cosim, al 89% para el modelo por pares con subfaturas. Una inspección visual también validó los resultados. La clasificación binaria no era el objetivo principal: era en gran parte obtener un subsegmento de los datos para luego probar el impulso de múltiples clases.
| modelo base | a pareja | |
| Multiclase | 0.613 | 0.889 |
| Binario | 0.661 | 0.645 |
Imagen del autor
Imagen del autor utilizando el código de Nils Flaschel
Pensamientos finales …
Este puede ser un buen método para encontrar errores en grandes subconjuntos de datos anotados, o hacer un etiquetado de disparos cero sin un tiempo adicional de GPU para ajuste y entrenamiento. Presenta algunos puntajes y enfoques novedosos, pero el proceso general no es demasiado complicado o CPU/GPU/memoria intensiva.
El seguimiento lo aplicará a otros conjuntos de datos de imagen/texto, así como conjuntos de datos de imagen o texto anotados/categorizados para determinar si se aumenta la puntuación. Además, sería interesante determinar si el impulso en la clasificación de disparo cero para este conjunto de datos cambia sustancialmente si:
- Se utilizan otras métricas de puntuación en lugar de una relación de desviación cruzada
- Se sustituyen incrustaciones de características completas por características específicas
- El torneo por pares se reemplaza por otro enfoque
Espero que lo encuentres útil.
Citas
@article {reddy2022shopping, title = {compras consultas DataSet: un punto de referencia {ESCI} a gran escala para mejorar la búsqueda de productos}, autor = {Chandan K. Reddy y Lluís Màrquez y Fran Valero y Nikhil Rago Ra Karthik Subbian}, año = {2022}, ePrint = {2206.06588}, ArchivePrefix = {arxiv}}
Compras de consultas de datos de imágenes (SQID): un conjunto de datos ESCC enriquecido con imágenes para explorar Aprendizaje multimodal En la búsqueda de productos, M. Al Ghossein, CW Chen, J. Tang