Ablation BPE: o vilão NÃO é o grammar_bias #16

Open
opened 2026-05-14 02:13:44 -03:00 by navigator · 0 comments
Owner

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

seed baseline masha_ab masha_abc Δ(ab-base) Δ(abc-base) Δ(abc-ab)
41 1521.1 1544.3 1540.3 +23.2 +19.2 -4.1
42 1473.6 1538.2 1518.4 +64.6 +44.7 -19.9
43 1516.9 1547.8 1543.1 +30.9 +26.2 -4.7

Médias pareadas:

  • Δ(ab − baseline): μ = +39.56, σ = 22.02, paired t = +3.11 → A+B piora, sinal forte.
  • Δ(abc − baseline): μ = +30.03, σ = 13.21, paired t = +3.94 → ABC ainda pior que baseline, mas menos pior que AB.
  • Δ(abc − ab): μ = -9.53, σ = 8.96, paired t = -1.84 → adicionar C alivia um pouco o dano, mas sinal fraco (|t| < 2).

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:

  1. 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.

  2. 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?

  3. 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_strength em vão.

Termos usados

  • Ablation 3-way: experimento com três condições simultâneas (baseline / parcial / completo) que isolam contribuições individuais.
  • Paired t-test: compara duas condições no mesmo seed; mede se a média das diferenças é estatisticamente não-zero.
  • t-value: estatística do t-test. |t| > 2 ≈ p < 0.05 com poucas amostras; |t| > 3 ≈ p < 0.02.
  • Article-aligned batching: cada batch vem de um único artigo, em vez de misturar pedaços de muitos artigos. Faz dependências sintáticas serem coerentes dentro do batch.
  • BPE 32K: tokenizador SentencePiece com vocabulário de 32 mil pedaços subword. Treinado em Wikipedia PT.
## 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 | seed | baseline | masha_ab | masha_abc | Δ(ab-base) | Δ(abc-base) | Δ(abc-ab) | |---|---:|---:|---:|---:|---:|---:| | 41 | 1521.1 | 1544.3 | 1540.3 | +23.2 | +19.2 | -4.1 | | 42 | 1473.6 | 1538.2 | 1518.4 | +64.6 | +44.7 | -19.9 | | 43 | 1516.9 | 1547.8 | 1543.1 | +30.9 | +26.2 | -4.7 | Médias pareadas: - **Δ(ab − baseline)**: μ = **+39.56**, σ = 22.02, paired t = **+3.11** → A+B *piora*, sinal forte. - **Δ(abc − baseline)**: μ = **+30.03**, σ = 13.21, paired t = **+3.94** → ABC ainda pior que baseline, mas menos pior que AB. - **Δ(abc − ab)**: μ = **-9.53**, σ = 8.96, paired t = -1.84 → adicionar C *alivia* um pouco o dano, mas sinal fraco (|t| < 2). 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: 1. **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. 2. **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*? 3. **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_strength` em vão. ## Termos usados - **Ablation 3-way**: experimento com três condições simultâneas (baseline / parcial / completo) que isolam contribuições individuais. - **Paired t-test**: compara duas condições no mesmo seed; mede se a média das diferenças é estatisticamente não-zero. - **t-value**: estatística do t-test. |t| > 2 ≈ p < 0.05 com poucas amostras; |t| > 3 ≈ p < 0.02. - **Article-aligned batching**: cada batch vem de um único artigo, em vez de misturar pedaços de muitos artigos. Faz dependências sintáticas serem coerentes dentro do batch. - **BPE 32K**: tokenizador SentencePiece com vocabulário de 32 mil pedaços subword. Treinado em Wikipedia PT.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pop/MASHA#16
No description provided.