◇ OpenCyber Academy
Profissionalizante · Capítulo 10 · Português

Capítulo 10 — Segurança de IA e aprendizado de máquina: qualidade e solução de problemas

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

Capítulo 10 — Segurança de IA e aprendizado de máquina: qualidade e solução de problemas

Mapa da aula

Aula 10 publicada. Mapa, exemplo, EX046.

flowchart TD
  N0["10.1 Verificações de qualidade"]
  N1["10.2 Etapas de solução de problemas"]
  N2["10.3 Acidente ou ataque"]
  N3["10.4 Evitar a recorrência"]
  N4["10.5 Autorrevisão"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX046"]

Desenho lógico

flowchart LR
  N0["10.1 Verificações de qualidade"]
  N1["10.2 Etapas de solução de problemas"]
  N2["10.3 Acidente ou ataque"]
  N3["10.4 Evitar a recorrência"]
  N4["10.5 Autorrevisão"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX046"]
[10.1 Verificações de qualidade]
    |
    v
[10.2 Etapas de solução de problemas]
    |
    v
[10.3 Acidente ou ataque]
    |
    v
[10.4 Evitar a recorrência]
    |
    v
[10.5 Autorrevisão]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX046]

Objetivos de aprendizagem

Você vai (1) verificar a qualidade do trabalho de segurança de IA — testes, constatações, evidências; (2) investigar de forma sistemática comportamentos inesperados de IA; (3) distinguir acidentes de ataques; (4) evitar a recorrência; e (5) revisar criticamente o próprio trabalho.

10.1 Verificações de qualidade

Os testes são repetíveis? Os resultados são medidos pelos efeitos? As baterias são grandes o bastante para as afirmações feitas? São usados casos reservados? As constatações podem ser reproduzidas por outra pessoa? As evidências estão completas e datadas? Uma revisão por pares com essas perguntas pega a maioria das fraquezas. Na Meridian, Sofia pede a um colega que revise seus resultados do ClaimChat com essas perguntas antes que eles cheguem ao responsável pelo produto. Registre o que a revisão encontrou e o que mudou. Pergunte: as evidências sustentam a afirmação, as contagens e os intervalos são relatados, as áreas não testadas são nomeadas, e outra pessoa conseguiria repetir o teste apenas a partir dos registros?

10.2 Etapas de solução de problemas

Defina o sintoma com precisão; verifique as mudanças recentes (modelo, prompt, documentos, ferramentas, configuração, formulários de entrada); obtenha os rastros dos casos que falham e dos que funcionam; formule hipóteses; teste uma de cada vez na homologação; corrija; verifique; registre. No caso da tempestade do FraudFlag, verificar as mudanças recentes encontrou depressa o novo campo do formulário. Mantenha anotações de cada hipótese e de cada teste, para que o registro mostre como a causa foi encontrada. Comece pelo que mudou recentemente, depois as entradas, depois o modelo e as ferramentas. Teste uma hipótese de cada vez e mude só uma coisa de cada vez, para saber qual mudança fez diferença.

10.3 Acidente ou ataque

Os acidentes costumam afetar muitos usuários de maneira uniforme e coincidir com mudanças. Os ataques costumam se concentrar por conta, origem ou horário e mostrar variação deliberada. Mantenha as duas possibilidades em mente até que as evidências as separem. No caso da tempestade do FraudFlag, o salto afetou todos os sinistros de maneira uniforme depois de uma mudança no formulário, o que apontava para um acidente. No caso da oficina, as remarcações de rótulos se concentraram por investigador e por oficina ao longo de três meses, o que apontava para um padrão deliberado, e não para um acidente, e exigia uma revisão cuidadosa e confidencial. Nenhuma conclusão foi tirada antes que as evidências a sustentassem.

10.4 Evitar a recorrência

Acrescente um teste de regressão; acrescente um sinal de monitoramento; corrija a lacuna de processo que permitiu o problema (por exemplo, ligar as mudanças no formulário às revisões do modelo).

"""Lab P: label-flip poisoning and a backdoor trigger on a toy nearest-centroid
classifier (synthetic data, stdlib only). Teaching model only."""
import random
rng = random.Random(11)
def point(label, trigger=False):
    cx = 1.0 if label else -1.0
    x = [rng.gauss(cx, 0.8), rng.gauss(cx, 0.8), 0.0]
    if trigger: x[2] = 5.0          # third feature is the 'trigger'
    return x, label
clean = [point(i % 2) for i in range(400)]
test = [point(i % 2) for i in range(400)]
def fit(data):
    c = {}
    for lab in (0, 1):
        pts = [x for x, y in data if y == lab]
        c[lab] = [sum(p[i] for p in pts)/len(pts) for i in range(3)]
    return c
def pred(c, x):
    d = {k: sum((x[i]-v[i])**2 for i in range(3)) for k, v in c.items()}
    return min(d, key=d.get)
def accuracy(c, data): return sum(pred(c, x) == y for x, y in data)/len(data)
print("label-flip poisoning (flip a fraction of class-1 labels to 0):")
for frac in (0.0, 0.1, 0.2, 0.3, 0.4):
    data = [(x, y) for x, y in clean]; ones = [i for i, (x, y) in enumerate(data) if y == 1]
    for i in ones[:int(frac*len(ones))]: data[i] = (data[i][0], 0)
    print(f"  flipped={frac:.1f} clean_test_accuracy={accuracy(fit(data), test):.3f}")
print("backdoor: add n triggered class-1 points labelled 0")
trig_test = [point(1, trigger=True) for _ in range(200)]
for n in (0, 10, 40, 80):
    data = clean + [(point(1, trigger=True)[0], 0) for _ in range(n)]
    c = fit(data)
    asr = sum(pred(c, x) == 0 for x, _ in trig_test)/len(trig_test)
    print(f"  poison_points={n:3d} clean_accuracy={accuracy(c, test):.3f} attack_success={asr:.3f}")

Saída esperada:

label-flip poisoning (flip a fraction of class-1 labels to 0):
  flipped=0.0 clean_test_accuracy=0.965
  flipped=0.1 clean_test_accuracy=0.965
  flipped=0.2 clean_test_accuracy=0.953
  flipped=0.3 clean_test_accuracy=0.950
  flipped=0.4 clean_test_accuracy=0.945
backdoor: add n triggered class-1 points labelled 0
  poison_points=  0 clean_accuracy=0.965 attack_success=0.075
  poison_points= 10 clean_accuracy=0.963 attack_success=0.145
  poison_points= 40 clean_accuracy=0.963 attack_success=0.685
  poison_points= 80 clean_accuracy=0.968 attack_success=0.980

Na Meridian, o caso da oficina levou a uma segunda revisão para as remarcações de rótulos e a um conjunto de teste com sinistros extremos sintéticos por oficina. Registre cada medida de prevenção com um responsável e verifique, depois de um trimestre, se ela está funcionando. A prevenção deve tratar a causa e os fatores contribuintes, não apenas o sintoma. Acrescente um teste de regressão para cada correção, para que a mesma falha seja detectada automaticamente depois de mudanças futuras, e ligue-o à constatação.

10.5 Autorrevisão

Antes de entregar um trabalho, pergunte: o que um revisor cético questionaria? Onde estou me apoiando em suposições? O que eu não testei? A autorrevisão de Sofia sobre o caso da oficina perguntou se um problema de dados tinha sido devidamente descartado antes de tratá-lo como um possível caso interno. Escreva suas respostas, guarde-as com o trabalho e corrija o que puder antes que o trabalho saia das suas mãos. No caso da oficina, a pergunta sobre se um problema de dados tinha sido descartado é a primeira que um revisor cético faria, por isso merece uma resposta por escrito.

10.6 Exemplo resolvido (caso sintético da Meridian)

O relatório semanal do FraudFlag mostra que os sinistros de uma determinada oficina nunca são sinalizados, mesmo quando os valores são extremos. Sofia considera: problema de dados (oficina codificada errado), problema do modelo ou ataque (rótulos envenenados). O histórico de rótulos mostra um investigador marcando como "legítimo" todo sinistro sinalizado daquela oficina ao longo de três meses — 140 remarcações. O laboratório de envenenamento mostra como rótulos direcionados podem criar um ponto cego semelhante a uma porta dos fundos enquanto a acurácia geral se mantém estável. O caso é escalado como possível caso interno; a Meridian acrescenta uma segunda revisão para as remarcações de rótulos e um conjunto de teste com sinistros extremos sintéticos por oficina.

10.7 Erros e limites

Três erros são comuns: supor um ataque sem evidências, ou descartá-lo cedo demais; correções sem testes de regressão; e pular a autorrevisão. Cada erro leva a uma resposta errada. Supor um ataque pode abalar a confiança nos colegas, enquanto descartá-lo cedo demais pode deixar um agente interno sem controle, como poderia ter acontecido no caso da oficina. Uma correção sem teste de regressão pode ser desfeita pela próxima mudança. Pular a autorrevisão deixa que as lacunas que um revisor cético encontraria cheguem a quem decide. Verifique os três em cada investigação.

Exercícios

Síntese

Qualidade e solução de problemas andam juntas: trabalho repetível e baseado em efeitos, diagnóstico sistemático e correções que evitam a recorrência.

Continue estudando — capítulo 10 de 12

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