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
- Decidir los umbrales después de ver los resultados.
- Estimaciones puntuales usadas para aprobar o suspender.
- Solo pruebas unitarias.
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
- EX079 — Tamaño de la muestra. ¿Cuántos casos con cero fallos respaldan un límite superior cercano al 0,5 %? Rúbrica: 3 = unos 600 (3/0,005); 2 = el método; 1 = un desliz; 0 = nada.
- EX080 — Aprobado/suspendido. ¿Por qué 4/300 suspendió un requisito del 2 %? Rúbrica: 3 = límite superior del 3,4 % > 2 % pese a una estimación puntual del 1,3 %; 2 = parcial; 1 = usa la estimación puntual; 0 = incorrecto.
- EX081 — Lectura del laboratorio. ¿Cuáles son la media y la desviación típica por semilla en el Laboratorio S, y por qué se informan? Rúbrica: 3 = 0,125 y 0,017; los resultados varían con el azar; 2 = las cifras; 1 = vago; 0 = incorrecto.
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) →