Ablation BPE: o vilão NÃO é o grammar_bias #16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
TL;DR
Um ablation de 3 vias (baseline / MASHA-AB / MASHA-ABC) com tokenização BPE mostrou que morfêmico + grammar_class (componentes A+B) já são o que mais piora o MASHA: Δμ = +39.56 PPL (paired t = +3.11). Adicionar grammar_bias por cima (componente C) na verdade atenua um pouco a perda (Δ ABC−AB = -9.53 PPL). Conclusão: o componente C não é o culpado. O problema está mais embaixo.
Background
Depois que a Hipótese A caiu (ver doc
04), a pergunta virou: qual componente do MASHA está machucando o modelo, e quanto? Variance studies só comparam MASHA-completo contra Baseline; não distinguem qual peça é o problema.Um ablation isola componentes. Aqui montamos três variantes:
baseline— Transformer puro, sem nada.masha_ab— só componentes A (morfêmico) + B (grammar class).masha_abc— A + B + C (grammar_bias completo).Comparando pares (
ab − baseline,abc − ab,abc − baseline), dá pra atribuir efeito a cada peça.Paired t-test: compara duas condições no mesmo seed, calcula a diferença, e mede se a média dessas diferenças é estatisticamente diferente de zero. |t| > 2 = sinal provavelmente real. Bom pra rejeitar ou aceitar contribuições individuais sem ser enganado pela variância entre seeds.
O que foi feito
3 seeds (41, 42, 43) × 3 kinds × 2000 steps. Mesmo dataset (Wikipedia PT-BR), mesma tokenização BPE 32K, mesmo seq_len=64, batch=2. GPU A5000.
A novidade técnica: dados article-aligned (cada batch vem de um único artigo) e dependências reais carregadas do parquet do Stanza durante o treino, em vez de uniformes.
O que foi encontrado
Médias pareadas:
Em palavras: o pacote A+B sozinho já mete +40 PPL de penalidade. Ligar C por cima reduz um pouco essa penalidade (~10 PPL) mas não chega nem a empatar com o Baseline.
Por que isso importa
Esse resultado redirecionou completamente a investigação:
Liberou o componente C: o grammar_bias não é o vilão da história. Em BPE, ele até ajuda marginalmente. Os ataques anteriores ("é o bias_strength descalibrado?", "é o componente C que sabota?") perdem prioridade.
Aponta para A+B como problema: a soma morfêmico + classe gramatical é o que está sabotando. Mas por que somar embeddings de morfemas faria o modelo piorar?
Sugere uma incompatibilidade arquitetural: se A+B forem desenhados pensando em palavras inteiras como token, e os dados vierem com palavras fragmentadas pela BPE, o casamento pode ser ruim. Isso virou a hipótese seguinte, descrita no doc
06.A passagem do "vilão é o C" para "vilão é o A+B sobre BPE" é o pivô da semana. Sem ele, gastaríamos tempo calibrando
bias_strengthem vão.Termos usados