Capítulo 7 — Síntese da tese e arquivo de reprodutibilidade
Mapa da aula
Aula 07 publicada. Mapa, exemplo, EX039.
flowchart TD
N0["7.1 A tese como argumento"]
N1["7.2 Ameaças à validade"]
N2["7.3 O arquivo de reprodutibilidade"]
N3["7.4 Decisões de publicação"]
N4["7.6 Atividades práticas"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX039"]
Desenho lógico
flowchart LR
N0["7.1 A tese como argumento"]
N1["7.2 Ameaças à validade"]
N2["7.3 O arquivo de reprodutibilidade"]
N3["7.4 Decisões de publicação"]
N4["7.6 Atividades práticas"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX039"]
[7.1 A tese como argumento]
|
v
[7.2 Ameaças à validade]
|
v
[7.3 O arquivo de reprodutibilidade]
|
v
[7.4 Decisões de publicação]
|
v
[7.6 Atividades práticas]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX039]
Objetivos de aprendizagem
Você vai (1) estruturar uma tese de modo que cada capítulo responda a uma pergunta de pesquisa com evidências; (2) escrever um capítulo de síntese que declare contribuições, limitações e ameaças à validade; (3) construir um arquivo de reprodutibilidade (código, configurações, fichas de dados, fichas de modelo, hashes, registros); (4) decidir o que publicar, controlar ou reter; e (5) verificar que um estranho consegue regenerar os resultados principais.
7.1 A tese como argumento
Uma tese é um único argumento, não um álbum de recortes de artigos. Abra com o problema e a lacuna (Capítulo 2), declare as perguntas de pesquisa e as contribuições, e depois dê a cada capítulo empírico uma pergunta e a sua resposta. Feche com uma síntese que integre: o que agora se sabe e antes não se sabia; sob quais condições; o que continua em aberto. Quando a tese incluir artigos publicados, acrescente um texto de ligação que explique como o modelo de ameaça e a terminologia de cada artigo se encaixam no todo, e harmonize os termos para que "taxa de sucesso do ataque" signifique uma única coisa do começo ao fim.
7.2 Ameaças à validade
Organize as limitações por tipo de validade. Validade interna: algo diferente do tratamento poderia explicar o efeito (viés do avaliador, vazamento, efeitos de semente)? Validade de construto: a métrica mede a propriedade ("chamada de ferramenta não autorizada" captura o dano)? Validade externa: o resultado se transfere para outros modelos, ferramentas, idiomas, padrões de implantação? Validade de conclusão: a estatística é adequada (poder, multiplicidade, dependência entre tarefas)? Em segurança de IA, acrescente a validade adversarial: o adversário razoável mais forte dentro do modelo de ameaça foi de fato tentado? Para cada ameaça, diga o que você fez a respeito e o que permanece.
7.3 O arquivo de reprodutibilidade
O arquivo é o artefato que permite a outro pesquisador regenerar as suas figuras. Inclua: um README com os comandos exatos; o ambiente (arquivos de bloqueio de versões, receita de contêiner, notas de hardware); o código num commit com tag; os arquivos de configuração de cada execução; os identificadores de modelo e os hashes SHA-256 dos checkpoints que você usou (não necessariamente os pesos, se a licença proibir a redistribuição); os conjuntos de dados ou geradores com fichas de dados (datasheets; Gebru et al., arXiv:1803.09010); fichas de modelo (model cards) para qualquer modelo que você publicar (Mitchell et al., arXiv:1810.03993); os registros brutos por tentativa ou uma razão documentada para retê-los; o notebook ou script de análise que transforma os registros em tabelas; e um manifesto com o hash de cada arquivo. Arquive num repositório que emita identificadores persistentes e escolha as licenças de forma deliberada (código, dados e texto podem precisar de licenças diferentes).
7.4 Decisões de publicação
Aplique a tabela de publicação do Capítulo 3 aos artefatos finais. Código da defesa, arcabouço de avaliação, geradores de tarefas sintéticas e scripts de análise costumam ser públicos. Os corpora de cargas adaptativas podem ter acesso controlado (acesso mediante pedido para pesquisadores verificados, com termos). Qualquer coisa específica de um produto em produção nomeado espera a conclusão da divulgação coordenada. Não inclua dados pessoais. Se você redigir trechos, diga o que foi redigido e por quê, para que os revisores possam julgar o efeito na reprodutibilidade. A publicação de Ana seguiu esse padrão: arcabouço e defesa públicos, corpus de cargas controlado, como planejado na proposta.
7.5 Exemplo resolvido (caso sintético do MAAL)
O README do arquivo de Ana contém três comandos: construir o contêiner, executar make pilot (cerca de 2 horas de GPU) e make main (cerca de 140 horas de GPU), e depois make tables. Um alvo de smoke test reexecuta 30 tarefas por condição em dez minutos e verifica se os números ficam dentro das tolerâncias armazenadas. O manifesto lista 1.412 arquivos com hashes. Um colega de laboratório que não conhecia o projeto seguiu o README numa máquina nova; o smoke test falhou porque a versão de um tokenizador tinha mudado, e o arquivo de bloqueio foi corrigido. O capítulo de síntese de Ana lista as suas contribuições como (1) evidência de que a separação acrescenta uma redução mensurável além das ferramentas de menor privilégio, (2) um arcabouço de ataques adaptativos e (3) a descoberta dos ecos por encadeamento de ferramentas como família residual; as ameaças incluem apenas três modelos de duas famílias e tarefas sintéticas.
O laboratório de estatística também serve como verificação do arquivo: um revisor pode executá-lo e obter exatamente os números impressos, porque todo gerador aleatório tem semente.
"""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]
7.6 Atividades práticas
- Escreva as contribuições e a tabela de validade do capítulo de síntese da sua tese. 2. Monte um manifesto dos arquivos do seu projeto com hashes SHA-256. 3. Peça a um colega que reproduza uma figura a partir apenas do seu README e registre o que falhou. Para a tabela de validade, use os cinco tipos e diga, para cada ameaça, o que você fez e o que permanece, como Ana fez para as famílias de modelos e as tarefas sintéticas. Para o manifesto, calcule o hash de cada arquivo do arquivo de reprodutibilidade e guarde a lista junto com ele. Para o teste com o colega, entregue apenas o README e uma máquina nova; registre cada falha e cada correção, como a execução do colega de Ana encontrou a mudança do tokenizador.
7.7 Erros e limites
Cada um destes erros enfraquece o arquivo ou o argumento:
- Teses cujos capítulos usam métricas ou modelos de ameaça inconsistentes, o que torna os capítulos impossíveis de comparar.
- Limitações listadas sem a ação tomada, o que deixa o leitor sem saber se foram tratadas.
- Arquivos que exigem o diretório pessoal do autor ou uma API sem versão fixa; eles falham para os outros, como mostrou o problema do tokenizador de Ana.
- Publicar pesos ou dados em violação de licenças ou da privacidade, o que pode forçar a retirada.
- Alegar reprodutibilidade sem uma execução por terceiros; a reprodutibilidade só fica demonstrada quando outra pessoa reexecuta o trabalho.
Uma execução por um colega de laboratório numa máquina nova, como a de 7.5, é a verificação mais barata contra vários desses erros ao mesmo tempo.
Exercícios
- EX039 — Validade. Dê uma ameaça à validade interna, uma à de construto e uma à adversarial para o estudo de Ana, e uma mitigação para cada uma. Rubrica: 3 = três ameaças com mitigações; 2 = três sem mitigações ou duas com; 1 = uma; 0 = nenhuma.
- EX040 — Lista do arquivo. Liste oito itens que um arquivo de reprodutibilidade deve conter. Rubrica: 3 = oito corretos; 2 = seis; 1 = três; 0 = menos.
- EX041 — Ficha de modelo. Nomeie quatro seções de uma ficha de modelo. Rubrica: 3 = quatro entre: detalhes do modelo, uso pretendido, fatores, métricas, dados de avaliação, dados de treino, análises quantitativas, considerações éticas, ressalvas; 2 = três; 1 = uma ou duas; 0 = nenhuma.
- EX042 — Hashes. Por que registrar os hashes dos checkpoints mesmo quando você não pode redistribuir os pesos? Rubrica: 3 = permite que outros verifiquem que usam o artefato idêntico e detecta mudanças silenciosas; 2 = parcial; 1 = vago; 0 = errado.
- EX043 — Smoke test. Desenhe um smoke test para o seu arquivo. Rubrica: 3 = execução pequena, sementes fixas, comparação com tolerância, tempo de execução curto, mensagem de falha clara; 2 = três elementos; 1 = vago; 0 = nenhum.
- EX044 — Reprodutibilidade do laboratório. Que propriedade do laboratório de estatística torna a sua saída exatamente reprodutível, e o que a quebraria? Rubrica: 3 = geradores com semente; aleatoriedade sem semente, mudança de biblioteca/versão nos algoritmos aleatórios; 2 = a primeira parte; 1 = vago; 0 = errado.
- EX045 — Redação. Redija uma nota de redação de um parágrafo para um corpus de cargas com acesso controlado. Rubrica: 3 = o quê, por quê, como pedir acesso, efeito na reprodutibilidade; 2 = três; 1 = um ou dois; 0 = nenhum.
Síntese
A tese argumenta; o arquivo prova. Uma tabela de validade clara e um arquivo que um estranho de fato reexecutou transformam um conjunto de experimentos numa contribuição sobre a qual outros podem construir.
Continue estudando — capítulo 07 de 08
← Capítulo 06 (rascunho) · Índice de capítulos do curso · Capítulo 08 (rascunho) →