Resultado: tokenização causa inversão de sinal (BPC tokenization-fair, p<0.05) #22

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

TL;DR

Comparamos a mesma arquitetura MASHA em dois regimes de tokenização (BPE de 32K subwords vs Word-level de 200K palavras inteiras) usando uma métrica chamada BPC que é justa entre tokenizações. Resultado: trocar BPE por Word inverte o sinal do efeito da MASHA, de +0.0116 BPC (estatisticamente significativo, p<0.05, MASHA piora) para −0.0040 BPC (tendência, MASHA melhora). É a evidência mais limpa que temos de que a tokenização não é uma escolha neutra de engenharia — ela determina se o prior linguístico da MASHA ajuda ou atrapalha o aprendizado.

Background

Por que BPC e não PPL?

Perplexity (PPL) é a métrica padrão de modelos de linguagem: quão "surpreso" o modelo fica ao prever o próximo token. Quanto menor, melhor. Mas PPL depende de quantos tokens existem no vocabulário — um modelo BPE com 32K opções por token e um modelo word-level com 200K opções não dão números comparáveis. PPL = e^(loss por token), então 200K candidatos → loss inicial ≈ log(200K), 32K candidatos → log(32K). Apples-to-oranges.

BPC (Bits Per Character) resolve isso: converte loss por token em loss por caractere usando o comprimento médio dos tokens. Cada caractere de texto sempre conta igual, independente de quantas peças o tokenizer cortou. BPC permite comparar BPE vs Word honestamente.

O que mudou desde o último resultado (issue #7)

Antes: 3 seeds × 3 kinds × 20 batches de eval (~2.560 tokens). Sinal: MASHA-Word ganha μ=−22.7 PPL, t=−1.44 (não significativo).

Agora: 3 seeds × 3 kinds × 100 batches de eval (~12.600 tokens) + BPC + mascaramento de <unk> + bootstrap CI. 5× mais dados de eval = sinal mais nítido com a mesma quantidade de treino.

O que foi feito

Re-rodei as duas ablations de hoje com o eval rig Tier-1 (issue #10):

  1. BPE 3-way (scripts/run_ablation_bias.py): baseline / masha_ab / masha_abc, 3 seeds, 2000 steps, BPE 32K
  2. Word 3-way (scripts/run_ablation_word.py): mesma estrutura, mas com tokenização word-level (200K palavras)

Mesmas seeds (41, 42, 43), mesma data, mesmo optimizer. Única variável: tokenização.

O que foi encontrado

Tabela cruzada de BPC por seed

seed regime baseline masha_ab Δ
41 BPE 2.403 2.411 +0.008
41 Word 2.156 2.151 −0.005
42 BPE 2.396 2.412 +0.016
42 Word 2.159 2.152 −0.007
43 BPE 2.403 2.414 +0.011
43 Word 2.161 2.162 +0.001

Análise estatística pareada (paired t-test)

Regime μ Δ (ab − baseline) σ paired t (df=2) significativo?
BPE +0.0116 bpc 0.0039 +5.16 p < 0.05
Word −0.0040 bpc 0.0042 −1.65 trend; ainda não sig.

O paired t-test compara duas condições nos mesmos sujeitos (aqui: mesmas seeds). Quando t ultrapassa um limiar crítico (com df=2 esse limiar é 4.30 pra 95% de confiança), a diferença é declarada "estatisticamente significativa" — improvável de ter acontecido por sorte. BPE: |t|=5.16 > 4.30 → significativo. Word: |t|=1.65 < 4.30 → tendência mas não confirma.

Bonus: a tokenização sozinha já é uma vitória

Word baseline (2.159 bpc) vs BPE baseline (2.403 bpc): diferença de 0.24 bpc, ou seja o modelo word-level comprime português ~17% mais eficiente por caractere mesmo SEM o stack MASHA. Trocar de BPE pra word-level é por si só um ganho arquitetural enorme, antes de qualquer prior estrutural.

Por que isso importa

Para a tese da MASHA: a hipótese de que "o prior linguístico ajuda quando a tokenização respeita as fronteiras morfológicas" não é mais especulação. No regime BPE temos prova p<0.05 de que MASHA atrapalha. No regime Word a direção inverte. A tokenização determina se o prior é amigo ou inimigo do modelo.

Para o futuro: as próximas decisões arquiteturais (long-training, scale-up, mais seeds) devem todas acontecer no regime Word, não BPE. Investir compute em BPE-MASHA agora seria reforçar uma combinação que sabemos sabotar o aprendizado.

Para a literatura: o consenso atual é "use BPE, ele resolve OOV bem". Esse experimento mostra que esse consenso não é universal — quando você tem priors estruturais alinhados com palavras (morfologia, classes gramaticais, dependências), BPE briga com seu modelo e perde. Pode ser um caminho pra um whitepaper de PT-BR/línguas com morfologia rica.

Próximos passos sugeridos

  1. n=6 seeds no Word (extras: 44/45/46). Com a magnitude observada (μ=-0.004 bpc, σ=0.004), n=6 + df=5 → limiar t crítico cai pra ~2.57. Se a tendência se mantiver, MASHA-Word vira significativo.
  2. Long-training Word (10K-20K steps em vez de 2K) — testa se a vantagem cresce em scale ("Hipótese B").
  3. Investigar seed=43: por que é tão consistentemente um init "ruim" pra MASHA? Diagnóstico mais profundo da loteria de inicialização.

Termos usados

  • BPC (Bits Per Character): medida de incerteza do modelo em bits, por caractere de texto. Tokenization-fair.
  • Paired t-test: teste estatístico que compara duas condições no MESMO sujeito (mesma seed). Retorna um valor t; |t| > limiar crítico (~4.30 com df=2, ~2.57 com df=5) significa "improvável que seja sorte".
  • df (degrees of freedom): número de seeds menos 1. Quanto mais seeds, mais df, mais fácil atingir significância.
  • σ (standard deviation): o quanto os números variam. Baixo σ = consistente. Alto σ = ruidoso.
  • Seed: número que inicializa a aleatoriedade do treinamento (pesos iniciais, ordem de dados).
  • OOV (Out Of Vocabulary): token desconhecido pelo modelo, vira <unk>.
  • <unk> mask: excluir tokens <unk> da conta do loss pra não dar pontos grátis ao modelo.
  • Bootstrap CI: intervalo de confiança calculado reamostrando os dados muitas vezes — diz "qual é a faixa plausível do verdadeiro valor".
## TL;DR Comparamos a mesma arquitetura MASHA em dois regimes de tokenização (BPE de 32K subwords vs Word-level de 200K palavras inteiras) usando uma métrica chamada **BPC** que é justa entre tokenizações. Resultado: trocar BPE por Word inverte o sinal do efeito da MASHA, de **+0.0116 BPC** (estatisticamente significativo, p<0.05, MASHA piora) para **−0.0040 BPC** (tendência, MASHA melhora). É a evidência mais limpa que temos de que a tokenização não é uma escolha neutra de engenharia — ela determina se o prior linguístico da MASHA ajuda ou atrapalha o aprendizado. ## Background ### Por que BPC e não PPL? **Perplexity (PPL)** é a métrica padrão de modelos de linguagem: quão "surpreso" o modelo fica ao prever o próximo token. Quanto menor, melhor. **Mas PPL depende de quantos tokens existem no vocabulário** — um modelo BPE com 32K opções por token e um modelo word-level com 200K opções não dão números comparáveis. PPL = e^(loss por token), então 200K candidatos → loss inicial ≈ log(200K), 32K candidatos → log(32K). Apples-to-oranges. **BPC (Bits Per Character)** resolve isso: converte loss por token em loss por caractere usando o comprimento médio dos tokens. Cada caractere de texto sempre conta igual, independente de quantas peças o tokenizer cortou. **BPC permite comparar BPE vs Word honestamente.** ### O que mudou desde o último resultado (issue #7) Antes: 3 seeds × 3 kinds × 20 batches de eval (~2.560 tokens). Sinal: MASHA-Word ganha μ=−22.7 PPL, t=−1.44 (não significativo). Agora: 3 seeds × 3 kinds × **100 batches** de eval (~12.600 tokens) + BPC + mascaramento de `<unk>` + bootstrap CI. **5× mais dados de eval** = sinal mais nítido com a mesma quantidade de treino. ## O que foi feito Re-rodei as duas ablations de hoje com o **eval rig Tier-1** (issue #10): 1. **BPE 3-way** (`scripts/run_ablation_bias.py`): baseline / masha_ab / masha_abc, 3 seeds, 2000 steps, BPE 32K 2. **Word 3-way** (`scripts/run_ablation_word.py`): mesma estrutura, mas com tokenização word-level (200K palavras) Mesmas seeds (41, 42, 43), mesma data, mesmo optimizer. **Única variável: tokenização.** ## O que foi encontrado ### Tabela cruzada de BPC por seed | seed | regime | baseline | masha_ab | Δ | |---|---|---:|---:|---:| | 41 | BPE | 2.403 | 2.411 | **+0.008** | | 41 | Word | 2.156 | 2.151 | **−0.005** | | 42 | BPE | 2.396 | 2.412 | **+0.016** | | 42 | Word | 2.159 | 2.152 | **−0.007** | | 43 | BPE | 2.403 | 2.414 | **+0.011** | | 43 | Word | 2.161 | 2.162 | +0.001 | ### Análise estatística pareada (paired t-test) | Regime | μ Δ (ab − baseline) | σ | paired t (df=2) | significativo? | |---|---:|---:|---:|---| | **BPE** | **+0.0116 bpc** | 0.0039 | **+5.16** | ✅ **p < 0.05** | | **Word** | **−0.0040 bpc** | 0.0042 | −1.65 | trend; ainda não sig. | **O paired t-test** compara duas condições nos mesmos sujeitos (aqui: mesmas seeds). Quando t ultrapassa um limiar crítico (com df=2 esse limiar é 4.30 pra 95% de confiança), a diferença é declarada "estatisticamente significativa" — improvável de ter acontecido por sorte. **BPE: |t|=5.16 > 4.30** → significativo. **Word: |t|=1.65 < 4.30** → tendência mas não confirma. ### Bonus: a tokenização sozinha já é uma vitória **Word baseline (2.159 bpc) vs BPE baseline (2.403 bpc)**: diferença de 0.24 bpc, ou seja o modelo word-level **comprime português ~17% mais eficiente por caractere** mesmo SEM o stack MASHA. Trocar de BPE pra word-level é por si só um ganho arquitetural enorme, antes de qualquer prior estrutural. ## Por que isso importa **Para a tese da MASHA:** a hipótese de que "o prior linguístico ajuda quando a tokenização respeita as fronteiras morfológicas" não é mais especulação. No regime BPE temos prova p<0.05 de que MASHA atrapalha. No regime Word a direção inverte. **A tokenização determina se o prior é amigo ou inimigo do modelo.** **Para o futuro:** as próximas decisões arquiteturais (long-training, scale-up, mais seeds) devem todas acontecer no regime Word, não BPE. Investir compute em BPE-MASHA agora seria reforçar uma combinação que sabemos sabotar o aprendizado. **Para a literatura:** o consenso atual é "use BPE, ele resolve OOV bem". Esse experimento mostra que esse consenso não é universal — quando você tem priors estruturais alinhados com palavras (morfologia, classes gramaticais, dependências), BPE briga com seu modelo e perde. Pode ser um caminho pra um whitepaper de PT-BR/línguas com morfologia rica. ## Próximos passos sugeridos 1. **n=6 seeds no Word** (extras: 44/45/46). Com a magnitude observada (μ=-0.004 bpc, σ=0.004), n=6 + df=5 → limiar t crítico cai pra ~2.57. Se a tendência se mantiver, MASHA-Word vira significativo. 2. **Long-training Word** (10K-20K steps em vez de 2K) — testa se a vantagem cresce em scale ("Hipótese B"). 3. **Investigar seed=43**: por que é tão consistentemente um init "ruim" pra MASHA? Diagnóstico mais profundo da loteria de inicialização. ## Termos usados - **BPC (Bits Per Character)**: medida de incerteza do modelo em bits, por caractere de texto. Tokenization-fair. - **Paired t-test**: teste estatístico que compara duas condições no MESMO sujeito (mesma seed). Retorna um valor `t`; `|t| > limiar crítico` (~4.30 com df=2, ~2.57 com df=5) significa "improvável que seja sorte". - **df (degrees of freedom)**: número de seeds menos 1. Quanto mais seeds, mais df, mais fácil atingir significância. - **σ (standard deviation)**: o quanto os números variam. Baixo σ = consistente. Alto σ = ruidoso. - **Seed**: número que inicializa a aleatoriedade do treinamento (pesos iniciais, ordem de dados). - **OOV (Out Of Vocabulary)**: token desconhecido pelo modelo, vira `<unk>`. - **`<unk>` mask**: excluir tokens `<unk>` da conta do loss pra não dar pontos grátis ao modelo. - **Bootstrap CI**: intervalo de confiança calculado reamostrando os dados muitas vezes — diz "qual é a faixa plausível do verdadeiro valor".
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#22
No description provided.