·Equipo de auditoría de AuditaIA·Serie metodológica
Cómo diseñamos un banco de pruebas reproducible para modelos de identificación
Cuando un sistema de identificación sale del laboratorio y empieza a recibir imágenes de personas reales, deja de importar cómo se comporta en el conjunto de validación. Lo que importa es qué pasa cuando alguien decide engañarlo. Ese "alguien" puede ser un atacante con intención, pero también un usuario con mala iluminación, una cámara sucia o una pose poco habitual. Los ataques adversariales, en el fondo, son la versión extrema de esa misma pregunta: ¿cuánto aguanta el modelo antes de equivocarse?
En este artículo describimos cómo construimos un banco de pruebas reproducible, qué perturbaciones aplicamos sobre las imágenes y por qué separamos los resultados por tipo de ataque en lugar de promediarlos. También explicamos qué métricas consideramos útiles y cuáles solo dan una falsa sensación de seguridad.
La primera tentación es reunir un puñado de ejemplos llamativos, pasarlos por el modelo y publicar una tabla. Eso no es una prueba, es una anécdota. Un banco reproducible exige tres cosas: una versión congelada del modelo, un conjunto de imágenes fijo con su hash y un script que aplique siempre las mismas transformaciones en el mismo orden. Si cualquiera de esas piezas cambia, los números dejan de ser comparables y la auditoría pierde su valor.
Nosotros trabajamos con lotes cerrados. Cada lote se etiqueta con la fecha de generación, la versión del modelo evaluado y la semilla aleatoria usada en las perturbaciones. Cuando repetimos una prueba meses después, esperamos obtener exactamente el mismo resultado. Si no coincide, hay algo que no estamos controlando y eso ya es un hallazgo.
No todas las perturbaciones sirven para lo mismo. Algunas miden la fragilidad del modelo ante ruido, otras miden su sensibilidad a cambios semánticos. Las agrupamos en cuatro familias y las reportamos por separado:
Un promedio único sobre todas las familias de ataque es cómodo de leer y casi siempre engañoso. Un modelo puede resistir muy bien el ruido numérico y desmoronarse ante un cambio de exposición. Si juntamos ambos números en una sola cifra, la debilidad desaparece del informe y el lector se queda con una impresión falsa de solidez.
Por eso reportamos cada familia por separado, con su intervalo y con el tamaño de muestra usado. Cuando una familia tiene pocos casos, lo decimos explícitamente en lugar de rellenar con datos sintéticos. Preferimos un hueco visible a una curva suave que no significa nada.
La exactitud agregada no nos dice gran cosa en este contexto. Nos interesan más la tasa de inversión de predicción bajo perturbación creciente, la distancia mínima necesaria para provocar un cambio de clase y la varianza de esas distancias entre subgrupos de imágenes. Esa varianza es la que suele revelar que el modelo no es frágil en general, sino frágil para cierto tipo de rostros, ciertas condiciones de luz o ciertos ángulos de cámara.
También registramos el coste computacional de generar cada ataque. Un ataque que tarda horas en producirse y solo afecta a un caso aislado no es lo mismo que uno que se genera en segundos y afecta a miles. Esa diferencia cambia por completo la lectura del riesgo.
Hay dos señales que nos hacen desconfiar de inmediato. La primera es un informe que solo muestra el rendimiento global sin desglose. La segunda es un banco de pruebas que no se puede volver a ejecutar porque falta la semilla, la versión del modelo o el conjunto exacto de imágenes. En ambos casos el número puede ser correcto y, aun así, no servir para tomar decisiones.
Nuestra recomendación es sencilla: antes de aceptar cualquier resultado de robustez, pedir el script, la semilla y la lista de casos. Si no están, el resultado es una opinión con formato de tabla.
Los bancos de pruebas adversariales no se improvisan. Detrás de cada resultado publicado hay decisiones sobre qué perturbaciones aplicar, cómo fijar la semilla aleatoria y por qué separamos los ataques por familia en lugar de promediarlos.
Patricia Flores Navarro dirige el área de auditoría de modelos en AuditaIA. Trabaja desde hace años en verificación de sistemas de identificación: mide robustez frente a perturbaciones, revisa sesgos por subgrupos y documenta cada corrida para que otro equipo pueda repetirla. Antes de publicar cualquier conclusión, exige que el banco de pruebas sea reproducible de punta a punta.