◇ OpenCyber Academy
Grado · Capítulo 27 · Español

Capítulo 27 — Seguridad de la IA y del aprendizaje automático: verificación

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 27 — Seguridad de la IA y del aprendizaje automático: verificación

Mapa de la lección

Lección 27 publicada. Mapa, ejemplo, EX079.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["27.1 Requisitos que verificar"]
  N2["27.2 Criterios de aceptación"]
  N3["27.3 Verificación de extremo a extremo"]
  N4["27.4 Informes"]
  N5["27.5 Regresión"]
  N6["27.5b Verificar versiones, no nombres"]
  N7["Síntesis"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX079"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["27.1 Requisitos que verificar"]
  N2["27.2 Criterios de aceptación"]
  N3["27.3 Verificación de extremo a extremo"]
  N4["27.4 Informes"]
  N5["27.5 Regresión"]
  N6["27.5b Verificar versiones, no nombres"]
  N7["Síntesis"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX079"]
[Resultados de aprendizaje]
    |
    v
[27.1 Requisitos que verificar]
    |
    v
[27.2 Criterios de aceptación]
    |
    v
[27.3 Verificación de extremo a extremo]
    |
    v
[27.4 Informes]
    |
    v
[27.5 Regresión]
    |
    v
[27.5b Verificar versiones, no nombres]
    |
    v
[Síntesis]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX079]

Resultados de aprendizaje

Usted podrá (1) verificar con evidencia estadística que se cumplen los requisitos de seguridad de la IA; (2) definir criterios de aceptación con límites de confianza; (3) verificar los controles de extremo a extremo; y (4) redactar informes de verificación.

27.1 Requisitos que verificar

Los requisitos como «ninguna reserva para un paciente distinto del paciente con sesión iniciada o de su cuidador» se verifican con pruebas de políticas (deterministas) y conjuntos adversariales (estadísticos). «Tasa de filtración inferior al 1 % con un 95 % de confianza» requiere suficientes casos: con cero fallos, unos 300 casos dan un límite superior cercano al 1 % (regla del tres). La prueba de políticas se comprueba una vez por regla, porque el resultado no varía; el conjunto adversarial se repite porque el comportamiento del modelo sí varía. Ambos son necesarios, ya que una prueba de políticas no puede mostrar con qué frecuencia el modelo intenta una acción prohibida.

27.2 Criterios de aceptación

Decida antes de probar: métrica, tamaño de la muestra, umbral y confianza. Use límites superiores de Wilson en lugar de estimaciones puntuales al decidir si se aprueba o se suspende.

"""Lab S: reporting attack-success rates honestly: Wilson intervals,
seed variation and a paired bootstrap. Synthetic trial outcomes only."""
import math, random
def wilson(k, n, z=1.96):
    p = k/n; d = 1 + z*z/n
    c = (p + z*z/(2*n))/d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n))/d
    return c - h, c + h
for k, n in ((3, 20), (30, 200), (300, 2000)):
    lo, hi = wilson(k, n); print(f"successes={k}/{n} rate={k/n:.3f} wilson95=[{lo:.3f}, {hi:.3f}]")
# five seeds of a synthetic defence evaluation: per-seed attack success rate
rates = []
for seed in range(5):
    r = random.Random(seed); rates.append(sum(r.random() < 0.12 for _ in range(200))/200)
m = sum(rates)/5; sd = math.sqrt(sum((x-m)**2 for x in rates)/4)
print("per-seed rates:", " ".join(f"{x:.3f}" for x in rates), f"mean={m:.3f} sd={sd:.3f}")
# paired bootstrap: baseline vs defence on the same 300 synthetic prompts
r = random.Random(42)
base = [r.random() < 0.30 for _ in range(300)]
defn = [b and r.random() < 0.6 for b in base]   # defence blocks ~40% of successes
diffs = []
for _ in range(2000):
    idx = [r.randrange(300) for _ in range(300)]
    diffs.append(sum(base[i] for i in idx)/300 - sum(defn[i] for i in idx)/300)
diffs.sort()
print(f"baseline_asr={sum(base)/300:.3f} defended_asr={sum(defn)/300:.3f} "
      f"reduction_ci95=[{diffs[50]:.3f}, {diffs[1949]:.3f}]")

Salida esperada:

successes=3/20 rate=0.150 wilson95=[0.052, 0.360]
successes=30/200 rate=0.150 wilson95=[0.107, 0.206]
successes=300/2000 rate=0.150 wilson95=[0.135, 0.166]
per-seed rates: 0.110 0.130 0.135 0.105 0.145 mean=0.125 sd=0.017
baseline_asr=0.350 defended_asr=0.190 reduction_ci95=[0.120, 0.203]

El laboratorio muestra por qué importa el tamaño de la muestra: tres éxitos en 20 y 300 en 2000 dan la misma tasa, pero el límite superior baja de 0,360 a 0,166. Un umbral del 20 % suspendería la muestra pequeña y aprobaría la grande, aunque la tasa observada es idéntica. Por eso Rina dimensionó cada conjunto de Ask Lumen a partir del umbral antes de escribir ningún caso, eligiendo el número de intentos que podría respaldar una aprobación si la defensa funcionaba como se esperaba.

27.3 Verificación de extremo a extremo

Las pruebas unitarias demuestran los componentes; las pruebas de extremo a extremo demuestran el sistema. Reproduzca los conjuntos adversariales a través de toda la cadena —recuperación, modelo, políticas, herramientas en un entorno aislado— e inspeccione los registros de las herramientas. Muchos fallos solo aparecen en los puntos de integración, como identificadores que se resuelven después de una comprobación de políticas. El ejemplo de Ask Lumen fue una cancelación que designaba la cita por su posición en una lista («la segunda»); el servicio de políticas comprobaba al paciente, pero la herramienta resolvía «segunda» frente a una lista obtenida más tarde, que podía ser distinta. Solo una reproducción de extremo a extremo lo reveló, y la corrección resolvió el identificador antes de la comprobación.

27.4 Informes

Para cada requisito: método, muestra, resultado con intervalo, aprobado/suspendido, ubicación de la evidencia, versiones probadas y limitaciones. Una fila del informe de Rina para el requisito de reservas para otro paciente decía: conjunto adversarial, 400 casos, 0 fallos, límite superior de aproximadamente el 0,95 %, aprobado, evidencia en el archivo de registros de preproducción, versiones del modelo y del prompt indicadas, solo en inglés. Cada elemento permite a un revisor reproducir o cuestionar el resultado, y la limitación le indica dónde termina la afirmación. Las filas de los requisitos suspendidos usan el mismo formato, de modo que un fallo no puede esconderse en la prosa.

27.5 Regresión

Cada fallo encontrado se convierte en una prueba permanente. Vuelva a ejecutar el conjunto con cada cambio de modelo, de prompt o de herramienta. Cuando la reproducción de extremo a extremo encontró el problema del identificador de cancelación, Rina añadió esa conversación exacta al conjunto permanente. Meses después, una refactorización de la herramienta de cancelación reintrodujo brevemente la búsqueda tardía, y la prueba de regresión falló antes de que el cambio llegara a producción. Sin la prueba permanente, el mismo defecto habría vuelto inadvertido, ya que nadie recordaba con detalle el incidente original. Mantener la prueba es barato.

27.5b Verificar versiones, no nombres

La verificación se aplica a una configuración concreta: versión del modelo, versión del prompt de sistema, instantánea del índice de recuperación, conjunto de herramientas y reglas de políticas. Un informe que dice «Ask Lumen aprobó» sin versiones no es fiable después del siguiente cambio. Registre el hash de la configuración en el informe y haga que la canalización de despliegue rechace las configuraciones que no se hayan verificado. En LCH, una actualización del modelo del proveedor llegó un jueves, y la canalización bloqueó el despliegue hasta que volvió a ejecutarse el conjunto. Dos negativas habían cambiado de redacción, y todos los requisitos de seguridad seguían aprobados, así que la nueva versión se registró y se publicó al día siguiente.

27.6 Ejemplo resuelto (caso sintético de LCH)

Rina verificó diez requisitos de Ask Lumen v2. Nueve se aprobaron. «Información falsa sobre las clínicas ≤ 2 % (límite superior del 95 %)» se suspendió: se observaron 4/300 (1,3 %), pero el límite superior de Wilson era del 3,4 %. Tras la comprobación de fundamentación, se observó 1/600 con un límite superior inferior al 1 %, y el requisito se aprobó. El fallo es instructivo porque la tasa observada estaba muy por debajo del umbral; solo el intervalo mostró que 300 casos no bastaban para estar seguros. Tras la comprobación de fundamentación, la menor tasa de fallos y la muestra mayor llevaron juntas el límite superior a aproximadamente el 0,94 %, holgadamente por debajo del requisito. El informe de Rina conservó ambos resultados, para que los lectores vieran que el requisito se había suspendido antes de aprobarse.

27.7 Errores y límites

Un umbral elegido después de los resultados siempre puede fijarse para aprobar, lo que vacía de sentido la prueba. Usar la estimación puntual, como con 4 de 300, habría aprobado un requisito que la evidencia no respaldaba. Las pruebas unitarias por sí solas habrían pasado por alto el defecto del identificador de cancelación, que solo existía donde se encontraban el servicio de políticas y la herramienta. Rina fijó los umbrales en el plan de pruebas antes de cualquier ejecución, y el plan se revisó.

Ejercicios

Síntesis

La verificación demuestra los requisitos con criterios estadísticos fijados de antemano y pruebas de extremo a extremo, y conserva cada fallo como prueba de regresión.

Siga estudiando — capítulo 27 de 40

← Capítulo 26 (borrador) · Índice de capítulos del curso · Capítulo 28 (borrador) →

Respuestas desarrolladas

EX079. Unos 600 casos: 3/0,005 = 600.

EX080. La estimación puntual del 1,3 % está por debajo del 2 %, pero el límite superior de Wilson al 95 % es del 3,4 %, así que los datos no demuestran que la tasa sea ≤ 2 %.

EX081. Media 0,125 y desviación típica 0,017 en cinco semillas; el azar por sí solo mueve los resultados, así que las cifras de una sola ejecución pueden inducir a error.