Saltar al contenido

Temas

Inferencia de pertenencia (membership inference)

Cómo un atacante deduce si un registro concreto estaba en el entrenamiento de un modelo, por qué aun así es una fuga de privacidad, y qué cambia en los LLM frente a los clasificadores clásicos.

AvanzadoEn progreso 5 min de lectura1 oct 2026#privacidad#membership-inference#lira#dp-sgd#llm#ml

La extracción de datos saca texto del modelo. La inferencia de pertenenciaInferencia de pertenenciaAtaque que decide si un registro concreto formó parte de los datos de entrenamiento de un modelo, observando cómo responde. es más modesta y por eso más general: el atacante ya tiene un registro y solo quiere saber un bit, ¿formó parte de los datos de entrenamiento?

Parece poco, pero a menudo basta para violar la privacidad. Saber que “este paciente está en el conjunto de entrenamiento de un modelo de una clínica oncológica” ya revela que es paciente de esa clínica. Lo mismo vale para un historial de crédito, un usuario de una app de salud mental o un empleado en un modelo entrenado con datos de RR. HH.

La señal: el modelo trata distinto lo que vio#

Un modelo entrenado reduce su pérdida (loss) sobre los ejemplos de entrenamiento. Sobre datos nuevos, es menos seguro. Esa brecha es la fuga:

Inferencia de pertenencia: ¿estaba este registro?
Atacantesolo consultaModeloentrenadoDP-SGDruido + recorte«¿entrenó con X?»pérdida de cada registrovistonuevo0,010,490,420,46umbral τ«miembro»«no miembro»misma pérdida: τ ya no separavistonuevop=0,99p=0,61

Paso 1 de 5La pregunta

El atacante tiene un registro (por ejemplo, un historial clínico) y quiere saber un solo bit: ¿estaba en el conjunto de entrenamiento del modelo?

El ataque más simple es un umbral sobre la pérdida: si la pérdida del registro es menor que τ, se declara “miembro”. Funciona mejor cuanto más sobreajustado esté el modelo.

mia_umbral.py
import torch
def loss_of(model, tok, text):
ids = tok(text, return_tensors="pt").input_ids
with torch.no_grad():
return model(ids, labels=ids).loss.item()
def es_miembro(model, tok, texto, tau):
# Pérdida baja => el modelo "ya lo conocía"
return loss_of(model, tok, texto) < tau

Cómo se ha refinado#

  1. Modelos sombra (Shokri et al., 2017). El atacante entrena sus propios modelos con datos conocidos, de modo que sabe quién fue “miembro” en cada uno, y entrena un clasificador que distingue las respuestas de miembros y no miembros. Después lo aplica al modelo víctima.
  2. Calibrar por registro (LiRA, Carlini et al., 2022). Un umbral global falla porque algunos registros son intrínsecamente difíciles y otros fáciles. LiRA calcula, con modelos sombra, la distribución de la pérdida de ese registro cuando entra y cuando no entra al entrenamiento, y compara con ambas.
  3. Medir bien. La exactitud media engaña: un ataque con 50 % de acierto global puede identificar con certeza a unos pocos registros. LiRA propuso evaluar la tasa de verdaderos positivos con tasas de falsos positivos muy bajas, que es lo que importa para la privacidad individual.

¿Y en los LLM?#

Aquí hay un matiz honesto: los ataques clásicos funcionan mucho peor en LLM preentrenados.

  • Se entrenan una sola época sobre cantidades enormes de datos, así que cada texto influye muy poco.
  • La frontera “miembro / no miembro” es difusa. Un texto de test suele parecerse a otros que sí estaban en el corpus (versiones duplicadas, citas, plantillas), y eso confunde la señal.
  • Estudios sistemáticos (Duan et al., 2024) encuentran ataques que apenas superan el azar en preentrenamiento. Métodos específicos, como Min-K% Prob (usa la media de los tokens menos probables), sirven sobre todo para detectar si un texto concreto estaba en el corpus.

El riesgo se dispara, sin embargo, cuando afinas un LLM con un conjunto pequeño y sensible, entrenando varias épocas. Ahí el modelo sí se ajusta a cada registro y los ataques se acercan al comportamiento de los clasificadores clásicos. Para ti, que usas modelos de terceros y quizá afinas con datos propios, la conclusión práctica es la de siempre: el riesgo es proporcional a lo pequeño y repetido que sea el conjunto de ajuste.

Defensa#

Medida Cómo reduce la señal Coste
Privacidad diferencial (DP-SGD) Acota la influencia de cada registro con garantía formal (glosario) Pierde precisión; más cómputo
Regularización y menos épocas Reduce la brecha entre entrenamiento y test Puede bajar la calidad
Deduplicar y minimizar datos Menos registros repetidos y sensibles que inferir Trabajo de preparación
No exponer probabilidades Devuelve solo texto/etiqueta, no logprobs ni confianzas Menos utilidad para quien integra
Rate limiting y detección Un ataque necesita muchas consultas estructuradas Falsos positivos
Agregación (PATE, ensembles) Ningún modelo ve todos los datos Complejidad

Fíjate en el patrón de siempre: minimizar lo que se entrena (principio de mínimo privilegio aplicado a los datos) y no regalar señal en la salida son lo más barato; la privacidad diferencial es lo único con garantía matemática.

Tu turno

Mide tu propia brecha

En tu lab, afina un modelo pequeño con 500 textos y reserva otros 500 que no use:

  1. Calcula la pérdida de cada texto con loss_of (ver el código de arriba).
  2. Representa dos histogramas (miembros y no miembros). ¿Se solapan?
  3. Prueba varios umbrales τ y dibuja la curva TPR/FPR. ¿Qué TPR obtienes con FPR ≤ 1 %?
  4. Sube las épocas de ajuste de 1 a 10 y repite. ¿Cómo cambia la brecha?

Reto

Mi modelo solo devuelve texto, nunca probabilidades. ¿Estoy a salvo de la inferencia de pertenencia?

▸Mostrar solución

Más protegido, no a salvo. Hay ataques de solo etiqueta que perturban la entrada y observan si la respuesta cambia, y en LLM se puede medir la calidad de la continuación. Ocultar las probabilidades sube el coste del ataque, pero solo la reducción de la memorización en origen (DP, menos épocas, menos datos) cierra la brecha.

En resumen#

  • La inferencia de pertenencia decide si un registro estuvo en el entrenamiento, y por sí sola puede revelar información sensible.
  • La señal es que el modelo es más confiado con lo que vio; ataques modernos (LiRA) calibran por registro y se evalúan con TPR a FPR bajo.
  • En LLM preentrenados es poco fiable, pero en modelos afinados con conjuntos pequeños y varias épocas el riesgo es real.
  • Defensas: DP-SGD (única con garantía), menos épocas, deduplicación, minimizar datos y no exponer logprobs.

Referencias#

Notas relacionadas

ESC
↑↓ para navegar↵ para abriresc para cerrar