OpenCyber Academy
Pesquisa doutoral · Capítulo 4 · Português
Código do curso: OCA-206Capítulo 04: OCA-206-C004

Capítulo 4 — Replicação das linhas de base e piloto

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 04 publicada. Mapa, exemplo, EX021.

flowchart TD
  N0["4.1 Termos"]
  N1["4.2 Diagnosticando uma reprodução que falhou: o Tank"]
  N2["4.3 Verificando o simulador"]
  N3["4.4 Ajuste sem vazamento: Laboratório 6"]
  N4["4.5 Um piloto limitado na Bancada de testes T2"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX021"]

Desenho lógico

flowchart LR
  N0["4.1 Termos"]
  N1["4.2 Diagnosticando uma reprodução que falhou: o Tank"]
  N2["4.3 Verificando o simulador"]
  N3["4.4 Ajuste sem vazamento: Laboratório 6"]
  N4["4.5 Um piloto limitado na Bancada de testes T2"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX021"]
[4.1 Termos]
    |
    v
[4.2 Diagnosticando uma reprodução que falhou: o Tank]
    |
    v
[4.3 Verificando o simulador]
    |
    v
[4.4 Ajuste sem vazamento: Laboratório 6]
    |
    v
[4.5 Um piloto limitado na Bancada de testes T2]
    |
    v
[Síntese do capítulo]
    |
    v
[Exemplo resolvido] --> [Exercício EX021]

Objetivos de aprendizagem e conexão

Ao final deste capítulo, você será capaz de (1) distinguir reprodução, replicação e reimplementação, (2) diagnosticar por que um resultado publicado de detecção em TO não pode ser reproduzido, (3) verificar um simulador de processo antes de confiar nele, (4) desenhar um piloto limitado numa bancada isolada e (5) tomar uma decisão pré-declarada de seguir ou não seguir (go/no-go). Ele parte das hipóteses do Capítulo 3 e prepara o estudo principal do Capítulo 5.

4.1 Termos

A política de selos de artefatos da ACM distingue repetibilidade (mesma equipe, mesma configuração), reprodutibilidade (equipe diferente, mesmos artefatos) e replicabilidade (equipe diferente, artefatos próprios). Na TO, esses termos diferem fortemente, porque plantas, controladores e conjuntos de dados raramente podem ser compartilhados. Fixe o seu vocabulário antes de alegar qualquer um deles.

No Setpoint Study, executar de novo o Laboratório 3 com o mesmo código e as mesmas sementes é repetibilidade. Um colega executando o código arquivado é reprodutibilidade. O trabalho com o TankBench-21 é uma reimplementação a partir da descrição do artigo, mais próxima da replicação. Dizer isso com precisão impede que um revisor leia uma nova pontuação como uma confirmação independente do resultado original.

4.2 Diagnosticando uma reprodução que falhou: o TankBench-21

O benchmark sintético TankBench-21 relata um F1 de 0,96 para um alarme de faixa mais taxa de variação. A reimplementação do candidato obtém 0,31. Um diagnóstico disciplinado lista hipóteses e testa cada uma: (a) convenção de pontuação — o artigo usou o ajuste por pontos (o Laboratório 1 mostra que só isso pode explicar uma diferença desse tamanho); (b) vazamento do limiar — os limiares foram escolhidos na partição de teste; (c) alinhamento dos rótulos — os rótulos de ataque começam quando o script de ataque foi lançado, não quando o processo se desviou pela primeira vez; (d) amostragem — o artigo reduziu a amostragem para 10 s, suavizando o ruído. Pontuar de novo com o ajuste por pontos dá 0,94, dentro de uma tolerância pré-declarada de ±0,05, então a reprodução "tem sucesso" — mas tem sucesso em reproduzir uma métrica inflada. A tese registra os dois números e adota a revocação por evento mais o atraso.

4.3 Verificando o simulador

A verificação pergunta se o modelo foi construído corretamente; a validação pergunta se ele é o modelo correto (vocabulário padrão de modelagem). Os testes de verificação para o tanque do Laboratório 3 incluem: equilíbrio em 50,0 com a entrada nominal (verificação analítica); conservação da massa ao longo de 1.000 passos sem ruído; média do resíduo perto de zero sem ataque; e sementes que produzem traços idênticos em duas máquinas. Um detector avaliado num simulador não verificado é avaliado num sistema desconhecido.

Escreva cada teste de verificação como código que falha de forma ruidosa e execute o conjunto antes de cada lote de experimentos. Se a verificação do equilíbrio falhar depois de uma mudança no termo de saída, nenhum resultado de detector daquela versão é utilizável até ela passar. Guarde a saída dos testes junto com os registros das execuções, para que um examinador veja que a verificação precedeu os resultados que ela sustenta.

4.4 Ajuste sem vazamento: Laboratório 6

O CUSUM tem dois parâmetros, a folga k e o limiar h. Ajuste-os em sementes separadas das sementes de avaliação e examine a robustez ao erro de modelo. O Laboratório 6 varre k e acrescenta um viés constante de calibração de 0,4 unidade no sensor de nível — um descompasso realista entre o modelo e o 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}")

Saída 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

Com um modelo perfeito, o menor k parece o melhor. Um pequeno viés de calibração torna k = 0,4 inútil: 97 execuções alarmam antes de o ataque começar, e apenas 19 alarmes ocorrem depois do início. A escolha defensável é k = 0,8, que troca cerca de 7 passos de atraso (em comparação com k = 0,6 sem viés) por robustez. É esse tipo de resultado que os revisores esperam ver antes do estudo principal.

4.5 Um piloto limitado na Bancada de testes T2

O piloto responde apenas a perguntas de viabilidade: a bancada consegue executar o cenário de replay com segurança, o historiador consegue registrar a 1 Hz e a válvula boia impede o transbordamento? Os dados do piloto não são usados em testes de hipóteses. Os critérios de go/no-go são escritos com antecedência: seguir se três execuções consecutivas terminarem sem que a válvula boia seja alcançada, com perda de registros abaixo de 1% e sem nenhuma reinicialização não planejada do controlador; caso contrário, revisar. O plano do piloto também registra quem pode parar uma execução e como (uma parada de emergência física que corta a energia da bomba, independente do CLP).

4.6 Erros comuns e limites

Chamar uma nova pontuação de replicação; confiar num simulador porque ele "parece certo"; ajustar nas sementes de avaliação; usar dados do piloto para testar hipóteses; não ter uma parada de emergência independente.

Cada erro deixa um resultado parecer melhor do que é. Uma nova pontuação com ajuste por pontos só confirma que a convenção original foi usada. Um traço de aparência plausível não é um teste de verificação aprovado. Sementes compartilhadas entre o ajuste e a avaliação vazam informação. As execuções do piloto respondem à viabilidade, não às hipóteses. E sem uma parada física que corte a energia da bomba independentemente do CLP, o piloto não está limitado.

Exercícios — capítulo 4

Síntese do capítulo

Reproduza as linhas de base com uma tolerância pré-declarada e diagnostique as diferenças de forma sistemática; verifique o simulador; ajuste em sementes separadas e submeta o ajuste a testes de estresse contra o erro de modelo; e pilote apenas para a viabilidade, com uma autoridade de parada física independente.

Respostas comentadas

EX021. Executar de novo o próprio Laboratório 3: repetibilidade. Um colega executando o seu arquivo: reprodutibilidade. Um colega construindo o próprio modelo de tanque: replicabilidade.

EX022. Hipóteses: convenção de pontuação, vazamento do limiar, alinhamento dos rótulos, amostragem. Testes: pontuar de novo com ajuste por pontos (→0,94, dentro de ±0,05: explica a diferença); reajustar na partição de treino (nenhuma mudança adicional); deslocar os rótulos para o primeiro desvio do processo (pequena mudança); reduzir a amostragem (pequena mudança). Resultado: a reprodução do número relatado só tem sucesso com o ajuste por pontos; métricas por evento adotadas.

EX023. Execute o modelo sem ruído true += 1.0 - 0.02*true por 1.000 passos a partir de 50,0; o resultado é 50.000000, o que confirma o equilíbrio; um teste mais rigoroso calcula a entrada acumulada menos a saída e verifica que ela é igual ao nível final menos o inicial, dentro da tolerância de ponto flutuante.

EX024. k = 0,8: com viés de 0,4, ele tem 0/100 execuções com alarme falso e 100/100 detecções (atraso de 55,6), enquanto k = 0,6 tem 4/100 execuções com alarme falso. O custo de 7–10 passos de atraso é aceito em troca de zero alarmes falsos.

EX025. Seguir se: três execuções consecutivas terminarem sem que a válvula boia seja alcançada (segurança); perda de registros do historiador <1% a 1 Hz (dados); nenhuma reinicialização não planejada do CLP (estabilidade); parada de emergência testada antes de cada sessão. Caso contrário, não seguir e revisar.

EX026. Porque 0,94 reproduz uma pontuação ajustada por pontos, que credita segmentos inteiros por um único alarme; ela não diz nada sobre o atraso nem sobre os alarmes falsos por turno, e os limiares podem ter sido ajustados nos dados de teste.