OpenCyber Academy
Investigación doctoral · Capítulo 4 · Español
Código del curso: OCA-206Capítulo 04: OCA-206-C004

Capítulo 4 — Replicación de la línea de base y piloto

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.

Mapa de la lección

Lección 04 publicada. Mapa, ejemplo, EX021.

flowchart TD
  N0["Resultados de aprendizaje y conexión"]
  N1["4.1 Términos"]
  N2["4.2 Diagnóstico de una reproducción fallida: TankBen"]
  N3["4.3 Verificación del simulador"]
  N4["4.4 Ajuste sin filtración: laboratorio 6"]
  N5["4.5 Un piloto acotado en el banco de pruebas T2"]
  N6["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX021"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje y conexión"]
  N1["4.1 Términos"]
  N2["4.2 Diagnóstico de una reproducción fallida: TankBen"]
  N3["4.3 Verificación del simulador"]
  N4["4.4 Ajuste sin filtración: laboratorio 6"]
  N5["4.5 Un piloto acotado en el banco de pruebas T2"]
  N6["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX021"]
[Resultados de aprendizaje y conexión]
    |
    v
[4.1 Términos]
    |
    v
[4.2 Diagnóstico de una reproducción fallida: TankBen]
    |
    v
[4.3 Verificación del simulador]
    |
    v
[4.4 Ajuste sin filtración: laboratorio 6]
    |
    v
[4.5 Un piloto acotado en el banco de pruebas T2]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX021]

Resultados de aprendizaje y conexión

Después de este capítulo usted podrá (1) distinguir reproducción, replicación y reimplementación, (2) diagnosticar por qué no puede reproducirse un resultado publicado de detección en TO, (3) verificar un simulador de procesos antes de confiar en él, (4) diseñar un piloto acotado en una instalación aislada y (5) tomar una decisión de continuar o no continuar declarada de antemano. Toma las hipótesis del capítulo 3 y prepara el estudio principal del capítulo 5.

4.1 Términos

La política de distintivos de artefactos de la ACM distingue la repetibilidad (mismo equipo, misma configuración), la reproducibilidad (otro equipo, mismos artefactos) y la replicabilidad (otro equipo, artefactos propios). En TO difieren mucho porque las plantas, los controladores y los conjuntos de datos rara vez pueden compartirse. Fije su vocabulario antes de afirmar cualquiera de ellas. En el Setpoint Study, volver a ejecutar el laboratorio 3 con el mismo código y las mismas semillas es repetibilidad. Un colega que ejecuta el código archivado es reproducibilidad. El trabajo sobre TankBench-21 es una reimplementación a partir de la descripción del artículo, más cercana a la replicación. Decirlo con precisión evita que un revisor lea una nueva puntuación como una confirmación independiente del resultado original.

4.2 Diagnóstico de una reproducción fallida: TankBench-21

El banco de pruebas sintético TankBench-21 informa un F1 de 0,96 para una alarma de banda más tasa de cambio. La reimplementación del candidato obtiene 0,31. Un diagnóstico disciplinado enumera hipótesis y prueba cada una: (a) convención de puntuación: el artículo usó ajuste por puntos (el laboratorio 1 muestra que esto solo puede explicar una diferencia de este tamaño); (b) filtración del umbral: los umbrales se eligieron con la partición de prueba; (c) alineación de etiquetas: las etiquetas de ataque empiezan cuando se lanzó el script de ataque, no cuando el proceso se desvió por primera vez; (d) muestreo: el artículo submuestreó a 10 s, lo que suaviza el ruido. Volver a puntuar con ajuste por puntos da 0,94, dentro de una tolerancia declarada de antemano de ±0,05, así que la reproducción «tiene éxito», pero tiene éxito en reproducir una métrica inflada. La tesis registra ambas cifras y adopta la exhaustividad por eventos más el retardo.

4.3 Verificación del simulador

La verificación pregunta si el modelo está bien construido; la validación pregunta si es el modelo correcto (vocabulario estándar de modelado). Las pruebas de verificación del tanque del laboratorio 3 incluyen: equilibrio en 50,0 con el caudal de entrada nominal (comprobación analítica); conservación de la masa durante 1.000 pasos sin ruido; media del residuo cercana a cero sin ataque; y semillas que producen trazas idénticas en dos máquinas. Un detector evaluado en un simulador no verificado se evalúa en un sistema desconocido. Escriba cada prueba de verificación como código que falle de forma ruidosa y ejecute el conjunto antes de cada lote de experimentos. Si la comprobación del equilibrio falla tras un cambio en el término de caudal de salida, ningún resultado de detector de esa versión es utilizable hasta que la prueba pase. Conserve la salida de las pruebas con los registros de las ejecuciones para que un examinador pueda ver que la verificación precedió a los resultados que respalda.

4.4 Ajuste sin filtración: laboratorio 6

El CUSUM tiene dos parámetros, la holgura k y el umbral h. Ajústelos con semillas separadas de las semillas de evaluación y examine la robustez frente al error del modelo. El laboratorio 6 barre k y añade un sesgo constante de calibración del sensor de nivel de 0,4 unidades, un desajuste realista entre el modelo y el instrumento.

# Lab 6 (synthetic): CUSUM drift k vs. false alarms and detection delay - the tuning trade-off reviewers ask about.
import random
def first_alarm(seed, attack, k, h=6.0, steps=600, onset=300, bias=0.0):
    rng = random.Random(seed); true, est, s = 50.0, 50.0, 0.0
    for t in range(steps):
        inflow = 1.0 + rng.gauss(0, 0.05) + (0.05 if attack and t >= onset else 0.0)
        true += inflow - 0.02*true
        lvl = true + rng.gauss(0, 0.3) + bias
        if attack and t >= onset: lvl = 50.0 + rng.gauss(0, 0.3) + bias
        est += inflow + rng.gauss(0, 0.02) - 0.02*est
        s = max(0.0, s + abs(lvl - est) - k)
        if s > h: return t
    return None
for bias in (0.0, 0.4):
    for k in (0.4, 0.6, 0.8, 1.0):
        fa = sum(first_alarm(i, False, k, bias=bias) is not None for i in range(100))
        d = [a-300 for a in (first_alarm(i, True, k, bias=bias) for i in range(100)) if a is not None and a >= 300]
        print(f"bias={bias} k={k} false_alarm_runs={fa}/100 detected={len(d)}/100 mean_delay={sum(d)/len(d) if d else float('nan'):.1f}")

Salida esperada:

bias=0.0 k=0.4 false_alarm_runs=0/100 detected=100/100 mean_delay=25.6
bias=0.0 k=0.6 false_alarm_runs=0/100 detected=100/100 mean_delay=30.9
bias=0.0 k=0.8 false_alarm_runs=0/100 detected=100/100 mean_delay=38.0
bias=0.0 k=1.0 false_alarm_runs=0/100 detected=100/100 mean_delay=46.1
bias=0.4 k=0.4 false_alarm_runs=97/100 detected=19/100 mean_delay=35.4
bias=0.4 k=0.6 false_alarm_runs=4/100 detected=99/100 mean_delay=46.1
bias=0.4 k=0.8 false_alarm_runs=0/100 detected=100/100 mean_delay=55.6
bias=0.4 k=1.0 false_alarm_runs=0/100 detected=100/100 mean_delay=66.5

Con un modelo perfecto, la k más pequeña parece la mejor. Un pequeño sesgo de calibración vuelve inútil k = 0,4: 97 ejecuciones alarman antes de que empiece el ataque y solo 19 alarmas caen después del inicio. La elección defendible es k = 0,8, que cambia unos 7 pasos de retardo (frente a k = 0,6 sin sesgo) por robustez. Este es el tipo de resultado que los revisores esperan ver antes del estudio principal.

4.5 Un piloto acotado en el banco de pruebas T2

El piloto responde solo preguntas de viabilidad: ¿puede la instalación ejecutar el escenario de repetición de forma segura?, ¿puede el historiador registrar a 1 Hz? y ¿detiene la válvula de flotador el desbordamiento? Los datos del piloto no se usan para pruebas de hipótesis. Los criterios de continuar o no continuar se escriben de antemano: continuar si tres ejecuciones consecutivas se completan sin que nunca se alcance la válvula de flotador, con una pérdida de registros inferior al 1 % y sin ningún reinicio no planificado del controlador; en caso contrario, revisar. El plan del piloto también registra quién puede detener una ejecución y cómo (una parada de emergencia física que corta la alimentación de la bomba, independiente del PLC).

4.6 Errores comunes y límites

Llamar replicación a una nueva puntuación; confiar en un simulador porque «parece correcto»; ajustar con semillas de evaluación; usar datos del piloto para probar hipótesis; carecer de una parada de emergencia independiente. Cada error permite que un resultado parezca mejor de lo que es. Una nueva puntuación con ajuste por puntos solo confirma que se usó la convención original. Una traza de aspecto plausible no es una prueba de verificación superada. Las semillas compartidas entre el ajuste y la evaluación filtran información. Las ejecuciones piloto responden a la viabilidad, no a las hipótesis. Y sin una parada física que corte la alimentación de la bomba de forma independiente del PLC, el piloto no está acotado.

Ejercicios — capítulo 4

Síntesis del capítulo

Reproduzca las líneas de base con una tolerancia declarada de antemano y diagnostique las diferencias de forma sistemática; verifique el simulador; ajuste con semillas separadas y someta el resultado a pruebas de estrés frente al error del modelo; y pilote solo para la viabilidad, con una autoridad de parada física independiente.

Siga estudiando — capítulo 04 de 08

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

Respuestas desarrolladas

EX021. Volver a ejecutar su propio laboratorio 3: repetibilidad. Un colega que ejecuta su archivo: reproducibilidad. Un colega que construye su propio modelo de tanque: replicabilidad.

EX022. Hipótesis: convención de puntuación, filtración del umbral, alineación de etiquetas, muestreo. Pruebas: volver a puntuar con ajuste por puntos (→0,94, dentro de ±0,05: explica la diferencia); reajustar con la partición de entrenamiento (sin cambios adicionales); desplazar las etiquetas a la primera desviación del proceso (cambio pequeño); submuestrear (cambio pequeño). Resultado: la reproducción de la cifra informada solo tiene éxito con ajuste por puntos; se adoptan métricas por eventos.

EX023. Ejecute el modelo sin ruido true += 1.0 - 0.02*true durante 1.000 pasos desde 50,0; el resultado es 50,000000, lo que confirma el equilibrio; una prueba más estricta calcula el caudal de entrada acumulado menos el de salida y comprueba que es igual al nivel final menos el inicial dentro de la tolerancia de coma flotante.

EX024. k = 0,8: con un sesgo de 0,4 tiene 0/100 ejecuciones con falsa alarma y 100/100 detecciones (retardo 55,6), mientras que k = 0,6 tiene 4/100 ejecuciones con falsa alarma. Se acepta el coste de 7–10 pasos de retardo a cambio de cero falsas alarmas.

EX025. Continuar si: tres ejecuciones consecutivas se completan sin que se alcance la válvula de flotador (seguridad); pérdida de registros del historiador <1 % a 1 Hz (datos); ningún reinicio no planificado del PLC (estabilidad); parada de emergencia probada antes de cada sesión. En caso contrario, no continuar y revisar.

EX026. Porque 0,94 reproduce una puntuación con ajuste por puntos que acredita segmentos enteros por una sola alarma; no dice nada sobre el retardo ni sobre las falsas alarmas por turno, y los umbrales pueden haberse ajustado con datos de prueba.