Saltar al contenido

Temas

Inversión de modelo y su diferencia con membership inference

Cómo un atacante reconstruye datos de entrenamiento (un rostro, un perfil, un texto) optimizando una entrada contra el modelo, y una tabla para no confundirla con inferencia de pertenencia, extracción de datos ni extracción de modelo.

AvanzadoEn progreso 5 min de lectura1 oct 2026#privacidad#model-inversion#membership-inference#embeddings#ml#atlas

Con tres ataques de privacidad parecidos es fácil mezclarlos. Si ya leíste la inferencia de pertenencia, la inversión de modeloInversión de modeloAtaque que reconstruye datos de entrenamiento (o atributos sensibles) a partir de las salidas del modelo, sin tener el registro de partida. te sonará familiar, pero responde a otra pregunta.

Pertenencia: «Tengo este registro. ¿Estaba en el entrenamiento?» → sí o no. Inversión: «No tengo ningún registro, solo una etiqueta. ¿Cómo eran los datos de esa clase?» → el dato.

Cómo funciona#

El modelo, sin quererlo, ha aprendido qué rasgos significan cada clase. Si el atacante puede consultarlo y ver sus puntuaciones, puede buscar la entrada que más convence al modelo de pertenecer a la clase. Esa entrada se parece a lo que el modelo vio al entrenar.

Inversión de modelo: reconstruir datos que nunca tuviste
Atacantesolo la etiquetaModeloclasificadorconfianza en «paciente 7»8 %55 %97 %etiqueta: «paciente 7»entrada xdato reconstruidobucle: ajusta x y vuelve a consultarPertenencia: tengo X → ¿estaba? sí / noInversión: solo la etiqueta → obtengo Xx₀8 %x₁55 %x₂97 %

Paso 1 de 5Lo que sabe

A diferencia de la inferencia de pertenencia, el atacante no tiene ningún registro. Solo conoce una etiqueta («paciente 7») y puede consultar el modelo y ver sus puntuaciones.

  1. Partir de una etiqueta. Por ejemplo, «la clase paciente 7» en un modelo de reconocimiento facial, o un identificador de usuario.
  2. Empezar con una entrada neutra (ruido o un promedio) y medir la confianza del modelo en esa clase.
  3. Ajustar la entrada en la dirección que más sube esa confianza. Con acceso a gradientes (modelo abierto) es descenso de gradiente sobre la entrada. Con solo una API se prueban variaciones y se conserva la mejor.
  4. Repetir hasta converger. La entrada resultante reproduce el patrón característico de la clase.
inversion_basica.py
import torch
def invertir(model, clase, forma=(1, 1, 28, 28), pasos=500, lr=0.1):
x = torch.rand(forma, requires_grad=True) # arranca con ruido
opt = torch.optim.Adam([x], lr=lr)
for _ in range(pasos):
opt.zero_grad()
loss = -model(x)[0, clase] # maximizar la confianza
loss.backward()
opt.step()
x.data.clamp_(0, 1) # mantener píxeles válidos
return x.detach() # ← «el dato» de la clase

Qué se ha reconstruido en la práctica#

  • Genómica (Fredrikson et al., 2014). A partir de un modelo de dosificación de un fármaco, deducir variantes genéticas del paciente a partir de datos parciales y el resultado del modelo.
  • Rostros (Fredrikson et al., 2015). Con solo las confianzas de un reconocedor facial, reconstruir imágenes reconocibles de personas del conjunto de entrenamiento.
  • Con modelos generativos como apoyo (Zhang et al., 2020, The Secret Revealer). Un modelo generativo entrenado con datos públicos acota lo que es una cara plausible, y la reconstrucción gana mucha calidad.
  • Embeddings de texto (Morris et al., 2023). Se puede recuperar buena parte del texto original a partir de su embedding. Importa si guardas vectores de documentos sensibles: filtrar el índice vectorial es filtrar casi los documentos.
  • Aprendizaje federado (Zhu et al., 2019). Las actualizaciones de gradientes que se comparten pueden invertirse para recuperar las imágenes del participante.

Mapa de cuatro ataques#

La forma de no confundirlos es mirar qué tiene el atacante y qué obtiene:

Ataque El atacante tiene Obtiene Pregunta que responde
Inferencia de pertenencia Un registro Un bit (sí/no) ¿Estaba este registro en el entrenamiento?
Inversión de modelo Una etiqueta o datos parciales Un dato reconstruido (o un atributo) ¿Cómo eran los datos de esta clase?
Extracción de datos de entrenamiento Nada; solo generar Texto literal del corpus ¿Qué recita el modelo de memoria?
Extracción de modelo Acceso de consulta Una copia del modelo ¿Puedo reproducir este modelo?

Y cómo se relacionan: la extracción de datos funciona en modelos generativos (el dato sale tal cual); la inversión en clasificadores y modelos con etiquetas (el dato se reconstruye optimizando). La pertenencia es la más débil de las tres (solo un bit), pero se puede encadenar: se hace inversión para producir candidatos y pertenencia para confirmar. La extracción de modelo es ortogonal, porque ataca el modelo y no los datos, aunque una copia local facilita las otras tres.

En MITRE ATLAS, las tres primeras cuelgan de la misma técnica padre (AML.T0024, Exfiltration via ML Inference API), con subtécnicas distintas para pertenencia, inversión y extracción.

Defensa#

Es la misma familia que en pertenencia, porque la causa es la misma: el modelo expone más de lo que necesita.

  • Devuelve lo mínimo. Etiqueta en lugar de puntuaciones; si hacen falta, redondeadas. La inversión clásica depende de leer la confianza.
  • Privacidad diferencial (DP-SGD): limita cuánto puede aprender el modelo sobre cada registro.
  • Regulariza y no sobreajustes. Un modelo que generaliza guarda menos detalle de cada individuo.
  • Limita y vigila las consultas. La optimización necesita cientos o miles de consultas muy parecidas entre sí.
  • Protege los embeddings como datos sensibles. Cifrado, control de acceso, minimización y, si cabe, ruido antes de guardarlos o compartirlos.
  • Minimiza lo que entrenas. Si el atributo sensible no está en los datos, no se puede invertir.

Tu turno

Invierte un clasificador de dígitos

En tu lab, entrena un clasificador de MNIST (o similar) y:

  1. Ejecuta invertir(model, clase=3). ¿Se parece a un 3 el resultado?
  2. Repite con un modelo que devuelva solo la etiqueta (sin probabilidades). ¿Qué tienes que cambiar en el ataque?
  3. Aplica regularización fuerte o DP-SGD. ¿Cómo cambia la calidad de la reconstrucción?

Úsalo solo con tu propio modelo y datos de prueba.

Reto

Un modelo me devuelve la clase correcta de un registro mío. ¿Eso es inversión o pertenencia?

▸Mostrar solución

Ninguna: eso es un uso normal. Es pertenencia si, a partir de cómo responde, el atacante deduce si ese registro estaba en el entrenamiento. Es inversión si, sin tener el registro, usa las respuestas del modelo para reconstruirlo o para inferir un atributo suyo. El criterio es qué sale: un bit, o el dato.

En resumen#

  • Inversión de modelo: sin tener el dato, el atacante optimiza una entrada hasta que el modelo la reconoce con alta confianza, y la entrada se parece a los datos de la clase.
  • Diferencia con pertenencia: pertenencia parte de un registro y devuelve un bit; inversión parte de una etiqueta y devuelve el dato.
  • Es más grave cuando la clase es una persona concreta o se infiere un atributo sensible.
  • Los embeddings de texto también se pueden invertir: trátalos como datos sensibles.
  • Defensa: devolver lo mínimo, DP, regularización, limitar consultas y minimizar lo que se entrena.

Referencias#

Notas relacionadas

ESC
↑↓ para navegar↵ para abriresc para cerrar