OpenCyber Academy
Graduação · Capítulo 12 · Português
Código do curso: OCA-112Capítulo 12: OCA-112-C012

Capítulo 12 — Probabilidade e estatística

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 12 publicada. Mapa, exemplo, EX034.

flowchart TD
  N0["12.1 Probabilidade condicional"]
  N1["12.2 Taxas de base"]
  N2["12.3 Intervalos de confiança"]
  N3["12.4 Comparação de sistemas"]
  N4["12.4b Variação e tamanho da amostra"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX034"]

Desenho lógico

flowchart LR
  N0["12.1 Probabilidade condicional"]
  N1["12.2 Taxas de base"]
  N2["12.3 Intervalos de confiança"]
  N3["12.4 Comparação de sistemas"]
  N4["12.4b Variação e tamanho da amostra"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX034"]
[12.1 Probabilidade condicional]
    |
    v
[12.2 Taxas de base]
    |
    v
[12.3 Intervalos de confiança]
    |
    v
[12.4 Comparação de sistemas]
    |
    v
[12.4b Variação e tamanho da amostra]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX034]

Objetivos de aprendizagem

Você vai (1) usar probabilidade condicional e a regra de Bayes; (2) explicar taxas de base e a precisão de alertas; (3) calcular e interpretar intervalos de confiança para taxas; e (4) comparar dois sistemas de forma justa.

12.1 Probabilidade condicional

P(A | B) é a probabilidade de A dado B. A taxa de verdadeiros positivos de um detector é P(alerta | ataque); o que os operadores precisam é P(ataque | alerta), que a regra de Bayes fornece a partir das taxas de verdadeiros e falsos positivos e da taxa de base dos ataques. As duas são facilmente confundidas, e os fornecedores costumam citar a primeira. Um detector que pega 95% dos ataques ainda produz sobretudo alarmes falsos se os ataques forem raros, porque a maioria limpa gera muitos falsos positivos. A regra de Bayes torna o cálculo explícito, e o Lab B mostra quão fortemente a resposta depende da taxa de base.

12.2 Taxas de base

Quando os ataques são raros, mesmo bons detectores produzem sobretudo alarmes falsos. O laboratório mostra um detector com TPR de 95% e FPR de 5% que alcança precisão abaixo de 2% com uma taxa de base de 1 em 1.000.

"""Lab B: base rates and alarm precision (Bayes' rule).
A detector for malicious prompts with given true- and false-positive rates
is applied to traffic with different shares of malicious prompts."""
for tpr, fpr in ((0.95, 0.05), (0.95, 0.01), (0.80, 0.001)):
    for prev in (0.10, 0.01, 0.001):
        tp = tpr * prev; fp = fpr * (1 - prev)
        prec = tp / (tp + fp)
        per_10k = round(10000 * (tp + fp))
        print(f"tpr={tpr:.2f} fpr={fpr:.3f} prevalence={prev:.3f} precision={prec:.3f} alerts_per_10k={per_10k}")

Saída esperada:

tpr=0.95 fpr=0.050 prevalence=0.100 precision=0.679 alerts_per_10k=1400
tpr=0.95 fpr=0.050 prevalence=0.010 precision=0.161 alerts_per_10k=590
tpr=0.95 fpr=0.050 prevalence=0.001 precision=0.019 alerts_per_10k=509
tpr=0.95 fpr=0.010 prevalence=0.100 precision=0.913 alerts_per_10k=1040
tpr=0.95 fpr=0.010 prevalence=0.010 precision=0.490 alerts_per_10k=194
tpr=0.95 fpr=0.010 prevalence=0.001 precision=0.087 alerts_per_10k=109
tpr=0.80 fpr=0.001 prevalence=0.100 precision=0.989 alerts_per_10k=809
tpr=0.80 fpr=0.001 prevalence=0.010 precision=0.890 alerts_per_10k=90
tpr=0.80 fpr=0.001 prevalence=0.001 precision=0.445 alerts_per_10k=18

Lendo o Lab B ao longo das linhas: com uma taxa de base de um em mil, baixar a taxa de falsos positivos de 5% para 1% eleva a precisão de 0.019 para 0.087, e o detector de 0.001 chega a 0.445. Os alertas por 10.000 conversas mostram a carga de trabalho: 509 para o primeiro detector contra 18 para o último. Revisores conseguem lidar com dezoito alertas; quinhentos seriam ignorados.

12.3 Intervalos de confiança

Uma taxa observada numa amostra é incerta. O intervalo de Wilson funciona bem com amostras pequenas e taxas extremas. Três sucessos em vinte são compatíveis com taxas reais de cerca de 5% a 36%.

"""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}]")

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

O laboratório mostra como o intervalo se estreita com o tamanho da amostra: a mesma taxa de 15% dá um intervalo de cerca de 11% a 21% com 200 tentativas e de 0.135 a 0.166 com 2.000. Uma demonstração com 20 prompts não consegue distinguir uma defesa fraca de uma forte. A linha por semente acrescenta outra fonte de dispersão: cinco execuções da mesma avaliação variam de 0.105 a 0.145.

12.4 Comparação de sistemas

Para comparar duas defesas, teste ambas nos mesmos itens e examine a diferença pareada com um intervalo bootstrap. Se o intervalo incluir zero, você não pode afirmar que uma é melhor. Testar nos mesmos itens remove a variação causada por alguns prompts serem mais difíceis que outros. No Lab S, a defesa reduz o sucesso dos ataques de 0.350 para 0.190, e o intervalo bootstrap da redução vai de 0.120 a 0.203. Como ele exclui o zero, a melhora é real para este conjunto de teste; se ela se mantém em outros prompts é outra questão.

12.4b Variação e tamanho da amostra

Os resultados também variam com as sementes aleatórias, as divisões dos dados e a redação dos prompts. Execute várias sementes e relate sua dispersão, como mostra a linha por semente do laboratório. Para planejar quantos casos de teste são necessários para uma taxa perto de p com semiamplitude h do intervalo a 95% de confiança, use n ≈ 1.96² × p(1 − p) / h². Para p = 0.1 e h = 0.02, isso dá cerca de 864 casos — muito mais do que a maioria das demonstrações rápidas usa, e é por isso que muitas "taxas de sucesso" publicadas são menos certas do que parecem. A fórmula também mostra o custo da precisão: reduzir h à metade, para 0.01, exige quatro vezes mais casos, cerca de 3.457.

12.5 Exemplo resolvido (caso sintético da LCH)

Um fornecedor ofereceu um "detector de ataques por prompt" com 98% de acurácia. Rina pediu a TPR e a FPR: 90% e 2%. Com uma estimativa de 1 conversa maliciosa a cada 2.000, a precisão seria de cerca de 2% — a maioria dos alertas, falsos. A LCH usou o detector apenas para sinalizar conversas para revisão semanal, e não para bloquear pacientes. O número de 98% de acurácia quase não significava nada aqui, já que um detector que nunca disparasse marcaria cerca de 99.95% no mesmo tráfego. Usá-lo para revisão semanal, em vez de bloqueio, significa que os alertas falsos custam tempo de revisores, e não o acesso dos pacientes.

12.6 Erros e limites

Três erros são comuns: acurácia sem taxas de base; números isolados sem intervalos; e comparar sistemas em conjuntos de teste diferentes. A acurácia esconde o compromisso entre ataques perdidos e alarmes falsos e pode parecer alta para um detector inútil quando os ataques são raros. Um número isolado sem intervalo convida ao excesso de confiança, sobretudo em testes pequenos, como três sucessos em vinte. Comparar sistemas em conjuntos de teste diferentes confunde diferenças entre os sistemas com diferenças entre os prompts. O Lab S mostra a correção de cada um, usando os mesmos prompts sintéticos.

Exercícios

Síntese

A probabilidade diz o que um alerta significa e quão seguro você pode estar. Taxas de base, intervalos e comparações pareadas são o mínimo para afirmações honestas em segurança de IA.

Continue estudando — capítulo 12 de 40

← Capítulo 11 (rascunho) · Índice de capítulos do curso · Capítulo 13 (rascunho) →

Respostas comentadas

EX034. TP = 0.90 × 0.0005 = 0.00045; FP = 0.02 × 0.9995 ≈ 0.01999; precisão ≈ 0.00045 / 0.02044 ≈ 0.022.

EX035. [0.135, 0.166].

EX036. Os itens diferem em dificuldade; usar os mesmos itens faz essa variação se cancelar na diferença pareada, o que dá uma comparação justa e mais precisa.