Mapa de la lección
Lección 05 publicada. Mapa, ejemplo, EX027.
flowchart TD
N0["Resultados de aprendizaje"]
N1["5.1 La propuesta"]
N2["5.2 El piloto"]
N3["5.3 Tamaño muestral y potencia"]
N4["5.4 Revisar el plan"]
N5["5.6 Actividades de práctica"]
N6["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX027"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["5.1 La propuesta"]
N2["5.2 El piloto"]
N3["5.3 Tamaño muestral y potencia"]
N4["5.4 Revisar el plan"]
N5["5.6 Actividades de práctica"]
N6["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX027"]
[Resultados de aprendizaje]
|
v
[5.1 La propuesta]
|
v
[5.2 El piloto]
|
v
[5.3 Tamaño muestral y potencia]
|
v
[5.4 Revisar el plan]
|
v
[5.6 Actividades de práctica]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX027]
Resultados de aprendizaje
Usted será capaz de (1) redactar una propuesta de trabajo de fin de máster con la pregunta, los antecedentes, el diseño, el plan de análisis, la ética, los riesgos y el calendario; (2) realizar un piloto para comprobar la viabilidad y estimar la variabilidad; (3) calcular tamaños muestrales; (4) revisar el plan a partir de la evidencia del piloto; y (5) obtener la aprobación con un registro claro de las decisiones.
5.1 La propuesta
Una propuesta de maestría suele tener entre 3.000 y 6.000 palabras. Secciones: pregunta y motivación (un párrafo cada una); antecedentes a partir de su matriz de evidencia; diseño (capítulo 3), incluidas las explicaciones alternativas y las ablaciones (capítulo 4); plan de análisis con los resultados principales y secundarios y la estadística que usará; ética y protección de datos; riesgos (técnicos, de datos, de calendario) con sus mitigaciones; calendario con hitos; y contribución esperada, formulada con modestia. El plan de análisis es la parte más descuidada: escríbalo ahora, antes de tener datos, para que las decisiones posteriores no puedan quedar dirigidas por los resultados. La propuesta de Leo siguió este esquema.
5.2 El piloto
Un piloto ejecuta toda la cadena de procesamiento a pequeña escala. Objetivos: confirmar que el código funciona de principio a fin, medir el tiempo de ejecución, medir la variabilidad del resultado principal, comprobar que el ataque y las métricas se comportan de forma razonable (por ejemplo, que el modelo sin defensa es atacable) y descubrir sorpresas. Los resultados del piloto no son pruebas de hipótesis; no los presente como hallazgos y mantenga los datos de prueba finales fuera del piloto. El piloto de Leo encontró un efecto suelo y un defecto en el generador. Anote ambos en el registro de decisiones.
5.3 Tamaño muestral y potencia
Para tasas, la aproximación normal n ≈ z² p(1−p)/h² da los ensayos necesarios para una semiamplitud h del intervalo de confianza. Para comparaciones entre condiciones, el análisis de potencia pregunta cuántas repeticiones se necesitan para detectar una diferencia d con una probabilidad (potencia) de 0,8 y un nivel de significación de 0,05; en los diseños emparejados, importa la varianza de las diferencias. Con pocas semillas (lo habitual en el aprendizaje automático), informe intervalos entre semillas y entre elementos de evaluación en lugar de confiar en una única prueba de significación. El piloto de Leo mostró una variación de unos 0,8 puntos entre semillas, lo que, junto con el bootstrap sobre los registros, hizo suficientes cinco semillas. Use la variación que observe realmente, no una suposición.
5.4 Revisar el plan
Los pilotos suelen cambiar algo: un ataque demasiado débil para separar las condiciones, una evaluación que tarda demasiado, una métrica con efecto suelo (todas las condiciones cerca de cero). Anote cada cambio en un registro de decisiones con su motivo. Los supervisores y los examinadores valoran una propuesta que muestra que aprendió de su piloto. El registro de Leo recoge dos cambios derivados de su piloto: sustituir el ataque limitado por el suelo por uno calibrado y corregir las plantillas que producían notas casi idénticas entre clases. Cada uno tiene una fecha y un motivo. Guarde el registro junto con la propuesta para que los examinadores puedan seguir la evolución del plan.
5.5 Ejemplo resuelto (caso sintético de Harbourline)
El piloto de Leo usó 2.000 registros y dos semillas. Tardó 40 minutos por ejecución, así que el plan completo (20.000 registros, cuatro condiciones, cinco semillas) supone unas 130 horas de cómputo, algo viable en el clúster del laboratorio. El ataque simple de umbral de confianza produjo una TPR con una FPR del 1 % de entre el 1 % y el 2 % en todas las condiciones: un efecto suelo. Lo sustituyó por un ataque calibrado con modelos de referencia, que separó las condiciones. La variabilidad entre semillas fue de unos 0,8 puntos, así que cinco semillas más el bootstrap sobre los registros se consideraron suficientes. También descubrió que dos plantillas generaban notas casi idénticas entre clases, lo que introducía ruido en las etiquetas; corrigió el generador y anotó el cambio.
El laboratorio de evasión ofrece un ejemplo de barrido en un piloto: antes de elegir un único presupuesto de perturbación para un estudio principal, barra varios para encontrar dónde el efecto es medible en lugar de quedar en el suelo o en el techo.
"""Lab E: evasion of a toy linear classifier (synthetic data, stdlib only).
Trains logistic regression on two synthetic clusters, then applies a
fast-gradient-sign (FGSM-style) perturbation of size eps to every test point
and reports clean vs adversarial accuracy. Teaching model only."""
import math, random
rng = random.Random(7)
def point(label):
cx = 1.0 if label else -1.0
return [rng.gauss(cx, 0.7), rng.gauss(cx, 0.7)], label
train = [point(i % 2) for i in range(400)]
test = [point(i % 2) for i in range(200)]
w, b = [0.0, 0.0], 0.0
sig = lambda z: 1 / (1 + math.exp(-z))
for epoch in range(200):
gw, gb = [0.0, 0.0], 0.0
for x, y in train:
p = sig(w[0]*x[0] + w[1]*x[1] + b)
gw[0] += (p - y)*x[0]; gw[1] += (p - y)*x[1]; gb += p - y
w = [w[i] - 0.1*gw[i]/len(train) for i in range(2)]; b -= 0.1*gb/len(train)
def acc(data, eps):
ok = 0
for x, y in data:
# gradient of the loss w.r.t. x is (p - y) * w; FGSM steps along its sign
p = sig(w[0]*x[0] + w[1]*x[1] + b)
xa = [x[i] + eps*math.copysign(1, (p - y)*w[i]) for i in range(2)]
ok += (sig(w[0]*xa[0] + w[1]*xa[1] + b) >= 0.5) == bool(y)
return ok / len(data)
print(f"weights w=({w[0]:.3f}, {w[1]:.3f}) b={b:.3f}")
for eps in (0.0, 0.25, 0.5, 0.75, 1.0):
print(f"eps={eps:.2f} accuracy={acc(test, eps):.3f}")
Salida esperada:
weights w=(1.795, 1.756) b=-0.080
eps=0.00 accuracy=0.985
eps=0.25 accuracy=0.950
eps=0.50 accuracy=0.840
eps=0.75 accuracy=0.660
eps=1.00 accuracy=0.505
5.6 Actividades de práctica
- Redacte su plan de análisis con los resultados principales y secundarios. 2. Realice un piloto y rellene un registro de decisiones. 3. Calcule el tamaño muestral para su resultado principal. Para el plan de análisis, nombre el resultado principal, como la TPR con una FPR del 1 %, y los secundarios, con la estadística de cada uno. Para el piloto, ejecute toda la cadena a pequeña escala y anote cada cambio con su motivo, como hizo Leo. Para el tamaño muestral, use la fórmula anterior con la variación que observó en su piloto e indique si su presupuesto de cómputo lo permite.
5.7 Errores y límites
Cuatro errores se repiten, y cada uno debilita el estudio; revise su propuesta en busca de los cuatro:
- Propuestas sin plan de análisis; sin él, las decisiones posteriores pueden quedar dirigidas por los resultados.
- Presentar los resultados del piloto como hallazgos; no son hallazgos, porque el piloto no se diseñó ni se dimensionó para contrastar hipótesis.
- Usar datos de prueba en el piloto; los datos de prueba usados en un piloto dejan de ser inéditos.
- Ignorar los efectos suelo o techo; un efecto suelo, como el del ataque simple de Leo, entre el 1 % y el 2 % en todas las condiciones, oculta diferencias reales.
Ejercicios — capítulo 5
- EX027 — Secciones de la propuesta. Enumere ocho secciones de la propuesta. Rúbrica: 3 = ocho correctas; 2 = seis; 1 = tres; 0 = ninguna.
- EX028 — Objetivos del piloto. Dé cuatro objetivos de un piloto. Rúbrica: 3 = la cadena funciona, tiempos, variabilidad, coherencia de las métricas/sorpresas; 2 = tres; 1 = uno o dos; 0 = ninguno.
- EX029 — Tamaño muestral. Calcule los ensayos para una tasa cercana al 5 % con una semiamplitud de 1 punto al 95 %. Rúbrica: 3 = ≈1.825 con la fórmula; 2 = desliz aritmético; 1 = solo la fórmula; 0 = nada.
- EX030 — Efecto suelo. ¿Qué es un efecto suelo y cómo lo resolvió Leo? Rúbrica: 3 = todas las condiciones cerca del mínimo, de modo que las diferencias no se ven; ataque calibrado más fuerte; 2 = solo la definición; 1 = vago; 0 = incorrecto.
- EX031 — Barrido en el laboratorio. A partir del laboratorio de evasión, ¿qué valores de eps evitan el suelo y el techo para comparar defensas? Rúbrica: 3 = en torno a 0,5–0,75 (0.840, 0.660), con razones; 2 = solo los valores; 1 = vago; 0 = incorrecto.
- EX032 — Registro de decisiones. Escriba dos entradas del registro de decisiones a partir del piloto de Leo. Rúbrica: 3 = fecha, cambio, motivo y efecto en ambas; 2 = una; 1 = vago; 0 = nada.
Síntesis del capítulo
La propuesta fija lo que hará y cómo lo analizará; el piloto muestra si puede hacerlo. Las revisiones anotadas con sus motivos convierten las sorpresas en evidencia de un proceso cuidadoso.
Siga estudiando — capítulo 05 de 08
← Capítulo 04 (borrador) · Índice de capítulos del curso · Capítulo 06 (borrador) →