Hipótese A: "ligar a peça certa resgata MASHA" — REJEITADA #15

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

TL;DR

A Hipótese A dizia: MASHA está perdendo do Baseline porque ainda falta ligar o componente C (grammar_bias). Variance study v3 ligou. MASHA perdeu mais ainda (Δμ = -99 PPL, z = -5.47σ). Hipótese A foi formalmente rejeitada, e a investigação migrou para outras explicações.

Background

Quando um experimento dá resultado contraintuitivo, a primeira reação honesta é: "será que falta alguma coisa que eu ainda não fiz?" No caso do MASHA, depois de v2 mostrar que MASHA perdia mesmo com parâmetros igualados, sobrava um suspeito óbvio: o componente C (Grammar-Biased Attention, descrito no doc 02-the-three-components.md) ainda não estava ligado.

A intuição era: a atenção enviesada por dependências sintáticas é o sinal mais "estrutural" da stack — a parte que mais "carrega o saber linguístico humano". Sem ela, MASHA está só somando uns embeddings extras (componentes A e B). Talvez seja por isso que perdia.

Formalmente, Hipótese A: se ligarmos o grammar_bias, MASHA passa o Baseline.

O que foi feito

Variance study v3 reproduziu exatamente as condições de v2 (mesmo root_dim=64, mesmos 3 seeds 41/42/43, mesmos 2000 steps), mas com use_grammar_bias=True na config do MASHA. O bias entrava em cada camada de atenção como uma matriz [B, T, T] somada aos scores antes do softmax, calculada a partir das árvores de dependência do Stanza.

Tudo o resto manteve-se idêntico: mesmo dataset (Wikipedia PT-BR com BPE 32K), mesmo otimizador (AdamW híbrido com SparseAdam para os 3 embeddings esparsos), mesma GPU (A5000), mesmo seq_len=64 e batch=4.

O que foi encontrado

Resultados de v3, comparados com v2:

seed MASHA PPL (v2, sem bias) MASHA PPL (v3, com bias)
41 1367.8 1356.2
42 1320.4 1323.9
43 1372.4 1331.8

Médias:

  • MASHA v3: μ = 1337.31, σ = 16.87
  • Baseline v3: μ = 1238.18, σ = 6.59
  • Δμ (Baseline − MASHA) = -99.13 PPL
  • z-score: -5.47σ (extremamente significativo)

Lê-se: ligar o grammar_bias piorou ligeiramente o MASHA (μ caiu de 1353 em v2 para 1337 em v3 — bem dentro do ruído entre seeds, não dá pra dizer que ajudou) e o Baseline ficou ainda mais estável (σ caiu de 33 pra 6). Resultado: o gap aumentou.

Por que isso importa

Três coisas mudaram com essa rejeição:

  1. Eliminação de uma hipótese: não dá mais pra falar "se só ligássemos grammar_bias, MASHA renderia". A stack completa foi testada e perdeu.

  2. Sobreviveu a Hipótese B: "MASHA precisa de muito mais dados". É a única viva no quadro. Mas testar Hipótese B custa caro — fala-se em ≥ 2 bilhões de tokens vs os ~512K tokens que cabem em 2K steps × 4 batch × 64 seq_len.

  3. Abriu espaço para uma hipótese alternativa: e se o problema não for nem componente, nem escala, mas algo arquitetural mais fundo? Foi nessa porta que entrou a investigação sobre tokenização BPE (próximos documentos).

Notas técnicas

Vale registrar que o variance study v3 não disse "grammar_bias está quebrado". Disse "ligar grammar_bias com bias_strength padrão, sobre BPE, em 2K steps, não inverte o resultado". As três condições de borda (calibração do bias_strength, tokenização, escala) seguiram em aberto pra investigação futura.

Também não disse "MASHA é uma ideia ruim". Disse "MASHA-como-implementado-hoje, em escala Nano, em 2K steps, em BPE, é pior que Baseline" — afirmação muito mais restrita.

Termos usados

  • Hipótese (estatística): afirmação testável que sobrevive ou cai diante de evidência.
  • Rejeição de hipótese: a evidência mostra que a hipótese provavelmente está errada. Não é prova matemática; é um nível de confiança (aqui, |z| > 5).
  • Grammar_bias: o componente C do MASHA (ver doc 02).
  • bias_strength: hiperparâmetro escalar que multiplica o bias antes de somar à atenção. Tem valor inicial fixo no código.
  • Ablation: experimento que isola o efeito de um componente desligando os outros.
## TL;DR A Hipótese A dizia: MASHA está perdendo do Baseline porque ainda falta ligar o componente C (grammar_bias). Variance study v3 ligou. MASHA perdeu **mais ainda** (Δμ = -99 PPL, z = -5.47σ). Hipótese A foi formalmente rejeitada, e a investigação migrou para outras explicações. ## Background Quando um experimento dá resultado contraintuitivo, a primeira reação honesta é: "será que falta alguma coisa que eu ainda não fiz?" No caso do MASHA, depois de v2 mostrar que MASHA perdia mesmo com parâmetros igualados, sobrava um suspeito óbvio: o componente C (Grammar-Biased Attention, descrito no doc `02-the-three-components.md`) ainda não estava ligado. A intuição era: a atenção enviesada por dependências sintáticas é o sinal mais "estrutural" da stack — a parte que mais "carrega o saber linguístico humano". Sem ela, MASHA está só somando uns embeddings extras (componentes A e B). Talvez seja por isso que perdia. Formalmente, Hipótese A: **se ligarmos o grammar_bias, MASHA passa o Baseline**. ## O que foi feito Variance study v3 reproduziu exatamente as condições de v2 (mesmo `root_dim=64`, mesmos 3 seeds 41/42/43, mesmos 2000 steps), mas com `use_grammar_bias=True` na config do MASHA. O bias entrava em cada camada de atenção como uma matriz `[B, T, T]` somada aos scores antes do softmax, calculada a partir das árvores de dependência do Stanza. Tudo o resto manteve-se idêntico: mesmo dataset (Wikipedia PT-BR com BPE 32K), mesmo otimizador (AdamW híbrido com SparseAdam para os 3 embeddings esparsos), mesma GPU (A5000), mesmo seq_len=64 e batch=4. ## O que foi encontrado Resultados de v3, comparados com v2: | seed | MASHA PPL (v2, sem bias) | MASHA PPL (v3, com bias) | |---|---:|---:| | 41 | 1367.8 | 1356.2 | | 42 | 1320.4 | 1323.9 | | 43 | 1372.4 | 1331.8 | Médias: - MASHA v3: μ = **1337.31**, σ = 16.87 - Baseline v3: μ = **1238.18**, σ = 6.59 - Δμ (Baseline − MASHA) = **-99.13 PPL** - z-score: **-5.47σ** (extremamente significativo) Lê-se: ligar o grammar_bias **piorou** ligeiramente o MASHA (μ caiu de 1353 em v2 para 1337 em v3 — bem dentro do ruído entre seeds, não dá pra dizer que ajudou) e o Baseline ficou ainda mais estável (σ caiu de 33 pra 6). Resultado: o gap aumentou. ## Por que isso importa Três coisas mudaram com essa rejeição: 1. **Eliminação de uma hipótese**: não dá mais pra falar "se só ligássemos grammar_bias, MASHA renderia". A stack completa foi testada e perdeu. 2. **Sobreviveu a Hipótese B**: "MASHA precisa de muito mais dados". É a única viva no quadro. Mas testar Hipótese B custa caro — fala-se em ≥ 2 bilhões de tokens vs os ~512K tokens que cabem em 2K steps × 4 batch × 64 seq_len. 3. **Abriu espaço para uma hipótese alternativa**: e se o problema não for nem componente, nem escala, mas algo arquitetural mais fundo? Foi nessa porta que entrou a investigação sobre **tokenização BPE** (próximos documentos). ## Notas técnicas Vale registrar que o variance study v3 não disse "grammar_bias está quebrado". Disse "ligar grammar_bias com `bias_strength` padrão, sobre BPE, em 2K steps, não inverte o resultado". As três condições de borda (calibração do `bias_strength`, tokenização, escala) seguiram em aberto pra investigação futura. Também não disse "MASHA é uma ideia ruim". Disse "MASHA-como-implementado-hoje, em escala Nano, em 2K steps, em BPE, é pior que Baseline" — afirmação muito mais restrita. ## Termos usados - **Hipótese (estatística)**: afirmação testável que sobrevive ou cai diante de evidência. - **Rejeição de hipótese**: a evidência mostra que a hipótese provavelmente está errada. Não é prova matemática; é um nível de confiança (aqui, |z| > 5). - **Grammar_bias**: o componente C do MASHA (ver doc `02`). - **bias_strength**: hiperparâmetro escalar que multiplica o bias antes de somar à atenção. Tem valor inicial fixo no código. - **Ablation**: experimento que isola o efeito de um componente desligando os outros.
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#15
No description provided.