Distância Semântica como Distância Euclidiana
Um Espaço Vetorial de Alta Dimensão
Cada token no vocabulário de 8449 tokens do ANDREA-120M mapeia para um ponto em R^768. A matriz de embeddings de tokens tem forma 8449 x 768: 8449 linhas, uma por token do vocabulário; 768 colunas, uma por dimensão de embedding.
Três Propriedades Tornam Isso um Espaço Vetorial
1. Adição. v_a + v_b pertence a R^768. A soma de dois embeddings é um vetor válido.
2. Multiplicação por escalar. alpha * v pertence a R^768 para qualquer escalar real alpha. Esticar ou encolher ao longo da mesma direção.
3. Linearidade. alpha v_a + beta v_b pertence a R^768. Combinações lineares permanecem dentro do espaço.
Essas propriedades nos fornecem ferramentas geométricas: distância, ângulo, projeção, base, ortogonalidade.
Distância como Similaridade Semântica
A similaridade por cosseno de dois embeddings mede o ângulo entre eles: cos(theta) = (v_a . v_b) / (||v_a|| * ||v_b||). Intervalo: -1 (opostos) a +1 (paralelos).
Padrão empírico após o treinamento: tokens com contextos semelhantes produzem embeddings com alta similaridade por cosseno. ANDREA-120M posiciona parakeet e monkey próximos (ambos biológicos, ambas espécies, ambas categorias vivas ou extintas). Posiciona Fourier e transform próximos (contexto de processamento de sinais). Posiciona parakeet e Fourier distantes (ortogonalidade entre domínios).
Por que R^768 e não R^384
ANDREA-12M usava d_model = 384. ANDREA-120M dobrou para 768. A duplicação importa: um espaço de 384 dimensões tem menos 'ângulos' disponíveis, e a desambiguação entre domínios sofre. Dobrar a capacidade dá ao modelo espaço para separar bank (rio) de bank (financeiro) em diferentes regiões do espaço de embeddings sem que um colapse no outro.
Atualizações de Embeddings como Tradução Vetorial
Cada passo de gradiente adiciona delta_v a v_token. Geometricamente: pequenas traduções em R^768 deslocam a posição de cada token para regiões que reduzem a perda. Ao longo de 200K passos, cada token migra de sua inicialização aleatória para uma posição aprendida.
Calculando uma Distância
Três embeddings treinados (simplificados para R^3 para fins aritméticos):
- v(parakeet) = (1.0, 0.5, 0.0)
- v(monkey) = (1.2, 0.3, 0.1)
- v(Fourier) = (0.0, 0.0, 1.5)
Projeção em um Subespaço de Consulta
O que a Atenção Computa
Para um token na posição t, a atenção computa:
[BLOCK_TYPE SECTION/STEP]
softmax(Q K^T / sqrt(d_k)) V [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Onde Q é a consulta (a pergunta deste token), K são as chaves (o identificador de cada token anterior) e V são os valores (o conteúdo de cada token anterior). A saída mistura os valores V ponderados pela relação entre a consulta e cada chave. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Leitura Geométrica
[BLOCK_TYPE SECTION/STEP]Pense em K como uma lista de vetores em R^d_k. Cada linha é a chave de um token anterior. Q é um vetor em R^d_k: a pergunta deste token. [BLOCK_TYPE SECTION/STEP]
Q K^T projeta cada chave em Q. O produto escalar q . k_i mede quanto k_i se alinha com a direção de q. Projeção longa = chave fortemente relevante para a consulta. Projeção curta = chave pouco relevante.
softmax normaliza as projeções em pesos que somam 1. A soma ponderada de V é um único vetor: uma mistura do conteúdo anterior, ponderada pela relevância à consulta atual.
Atenção Multi-Cabeça como Projeção em Múltiplos Subespaços
ANDREA-120M usa 12 cabeças de atenção. d_model = 768; d_k = 768 / 12 = 64. Cada cabeça projeta para um subespaço diferente de 64 dimensões em R^768. Doze cabeças fornecem doze visões independentes da mesma sequência: uma cabeça pode rastrear o papel gramatical, outra a similaridade semântica, outra referências de longo alcance.
Geometricamente: cada cabeça define um subespaço orientado de 64 dimensões (uma 'janela') através da qual ela observa o passado.
A Máscara Causal
Modelos decoder-only adicionam uma máscara causal: toda entrada Q K^T acima da diagonal é definida como -infinito antes do softmax. Geometricamente: a projeção em qualquer token futuro recebe peso zero. O token t só pode ver os tokens 0 até t.
Por que isso importa: treinamento e inferência tornam-se simétricos. Mesmo forward pass, mesmas projeções mascaradas, sem lógica especial de geração.
Escala sqrt(d_k)
Sem escalonamento, os produtos escalares crescem com d_k. Produtos escalares grandes empurram o softmax para regiões one-hot (um peso próximo de 1, os demais próximos de 0). Dividir por sqrt(d_k) mantém as projeções em escala de variância unitária, preservando a nitidez do softmax em uma ampla faixa de valores de d_k.
Geometricamente: sqrt(d_k) normaliza os comprimentos das projeções para que o softmax veja magnitudes comparáveis independentemente da dimensão do subespaço.
Lendo uma Projeção
Três chaves e uma consulta em R^4 (simplificado para aritmética):
- q = (1, 0, 1, 0)
- k_1 = (1, 0, 0, 0) [token passado 1]
- k_2 = (0, 0, 1, 0) [token passado 2]
- k_3 = (0, 1, 0, 1) [token passado 3]
d_k = 4, então sqrt(d_k) = 2.
Descida de Gradiente como Caminho no Terreno
Uma Superfície em 120M+1 Dimensões
Cada configuração de pesos do ANDREA-120M é um ponto em R^120.000.000. A perda L(w) mapeia cada ponto para um número real: a perda de treinamento nessa configuração. Juntos, os valores de perda traçam uma superfície de (120M+1) dimensões acima do espaço de parâmetros.
Geometricamente impossível visualizar diretamente. Conceitualmente: um terreno. Montanhas (alta perda), vales (baixa perda), pontos de sela, platôs, cristas, bacias.
Gradiente como Inclinação Local
grad L(w) é um vetor em R^120M que aponta na direção do aumento MAIS ÍNGREME de L. Negando-o: -grad L(w) aponta para baixo na direção mais íngreme.
Um passo AdamW desloca w na direção negativa do gradiente (com escalonamento adaptativo de m & v). Geometricamente: um pequeno passo ao longo da superfície, descendo, com tamanho do passo controlado por lr.
[BLOCK_TYPE SECTION/STEP]
Bacia Ruim de v1
v1 deu seu primeiro passo com LR = pico (0.0003) em pesos recém-inicializados. Imagem geométrica: w_0 está em uma região de curvatura extremamente irregular (inicialização aleatória tem alta curvatura em muitas direções), e um passo com LR de pico cai na bacia errada. Passos subsequentes não conseguem escapar. O modelo fica preso produzindo 'region region region' porque essa bacia tem a menor perda que o modelo consegue encontrar a partir de onde pousou.
[BLOCK_TYPE SECTION/STEP]
Caminho de Aquecimento de v2
v2 dá 2000 passos pequenos com LR aumentando gradualmente de 0 até o pico. Imagem geométrica: w_0 primeiro migra suavemente ao longo de direções suaves (onde a curvatura é baixa). No passo 2000, w já se moveu para uma região mais navegável; o LR de pico pode então conduzi-lo para uma bacia melhor sem ultrapassar o alvo.
<translated content> [BLOCK_TYPE SECTION/STEP]
Warmup é um protocolo de inicialização sensível à geometria: permite que o modelo encontre uma vizinhança local segura antes de submetê-lo a um treino mais intenso. [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Bacias Largas vs. Estreitas
[BLOCK_TYPE SECTION/STEP]No passo 112K, ANDREA-120M encontra-se em uma bacia. Pergunta: quão larga é ela? [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Bacia larga = muitas configurações de pesos vizinhas também alcançam baixa perda de treino. A generalização tende a ser boa (a largura da bacia prediz o desempenho em teste; veja a lição PAC-Bayes, Capítulo 3). [BLOCK_TYPE SECTION/STEP]
<translated content>
Bacia estreita = apenas um conjunto fino de pesos alcança baixa perda. A generalização tende a sofrer.
O polimento v3 no passo 112.619 moveu o modelo ao longo da superfície (sem reiniciar) para uma bacia mais ampla por meio de perturbação curricular: alterou a função de perda (bandit diferente, mistura de treinamento diferente) e deixou o SGD encontrar uma região plana próxima sob a nova política.
O Penhasco Zumbi
A perda anômala de 0,13 no passo 112.080 foi um PENHASCO: uma região estreita e abrupta onde um padrão de entrada específico (substring memorizada de repo-docs) atinge perda quase zero. O modelo caiu da bacia mais ampla para um vale estreito. A exclusão rígida de repo-docs feita pelo polimento-pivô preencheu esse vale, impedindo que o SGD o encontrasse novamente.
Lendo o Terreno
Mistura Curricular como Caminhada em um Simplex Discreto
O que é um Simplex
Um simplex n-dimensional (especificamente o simplex padrão (n-1)-dimensional) é o conjunto de n-tuplas (w_1, w_2, ..., w_n) com cada w_i >= 0 e soma(w_i) = 1.
Para n = 2: um segmento de linha de (1, 0) a (0, 1). Para n = 3: um triângulo com vértices (1, 0, 0), (0, 1, 0), (0, 0, 1). Para n = 16 (lista completa de fontes de ANDREA): um simplex de 15 dimensões dentro de R^16.
Pesos do Bandit como Coordenadas do Simplex
O bandit de ANDREA produz um vetor de pesos w sobre as fontes de dados em cada fase. Cada componente w_i é a probabilidade de amostrar a fonte i. As probabilidades são não negativas e somam 1: todo vetor de pesos vive no simplex.
Vértices = estratégias puras (amostrar apenas uma fonte). Interior = estratégias mistas (amostrar múltiplas fontes, cada uma com probabilidade positiva). Arestas = misturas de apenas duas fontes.
Pisos das Fontes como Região Restrita
ANDREA impõe pesos mínimos: hermes3-general no piso 0.7 (pós-polimento). Isso delimita uma sub-região do simplex: apenas vetores de peso com w_hermes3-general >= 0.7 são alcançáveis.
Geometricamente: o piso corta o simplex com um hiperplano. A região alcançável é a parte do simplex que fica do lado correto de cada hiperplano de piso.
Caps como a Outra Restrição
ANDREA também impõe pesos máximos: dictionary no cap 0.25 (pós-polimento). Cada cap é outro hiperplano, e a região alcançável deve ficar do lado correto de cada hiperplano de cap também.
Excluir uma fonte inteiramente (cap = 0.0) é o cap mais forte possível: a coordenada é fixada em zero, reduzindo o simplex efetivo em uma dimensão.
<translated content> [BLOCK_TYPE SECTION/STEP]
Transições de Fase como Caminhadas no Simplexo
[BLOCK_TYPE SECTION/STEP]Cada transição de fase (a cada 7-42 passos) produz um novo vetor de pesos. Cada novo vetor é um ponto no simplexo. Ao longo de 200K passos, o bandido traça um caminho longo pela região alcançável do simplexo. [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Fases aleatórias = teletransporte para um ponto aleatório uniforme dentro da região alcançável. [BLOCK_TYPE SECTION/STEP]
Fases controladas pelo bandido = passo em direção ao vértice UCB-melhor consistente com os pisos e tetos. [BLOCK_TYPE SECTION/STEP]
Pivô de polimento = redesenha a região alcançável (novos pisos, novos tetos, algumas fontes excluídas), e a caminhada continua a partir do novo ponto inicial. [BLOCK_TYPE SECTION/STEP]
<translated content>
Por que os Vértices São Perigosos
Fases de fonte pura (uma w_i = 1, as demais = 0) ficam nos vértices do simplex. A diversidade é zero. O modelo treina apenas em uma distribuição. O colapso parcial de v1 foi parcialmente atribuído ao bandit acampar perto do vértice repo-docs; as amostras reproduziam exclusivamente a distribuição daquela fonte.
Floors evitam o acampamento em vértices: um floor de 0.7 diz “nunca deixe o peso de qualquer fonte cair abaixo de 0.7” (ou qualquer valor definido para as fontes prioritárias).
Percorrendo a Região Alcançável
Três fontes: hermes3-general (H), gutenberg (G), dictionary (D). Restrições: floor de H = 0.5, cap de D = 0.25. (Implícito: todos os pesos ≥ 0, somam 1, sem outras restrições.)
Restringindo Dimensões para os Primeiros 20K Passos
O que o Aquecimento do Currículo do v2 Fez
v2 definiu curriculum_warmup_sources para sete fontes: hermes3-general, hermes3-creative, hermes3-roleplay, chat, smoltalk, oasst, gutenberg. Nos primeiros 20K passos, APENAS essas sete fontes contribuíram. Após o passo 20K, o fluxo completo de 16 fontes foi ativado.
Leitura Geométrica
O simplex completo de 16 fontes está em R^16. Restringir a 7 fontes colapsa 9 das 16 coordenadas para zero. A caminhada do bandit ocorre em um sub-simplex de 6 dimensões (uma a menos que o número de fontes, pela restrição de soma igual a 1).
Geometricamente: uma SUBMANIFOLD do simplex completo. De menor dimensão, mais suave, mais fácil de navegar.
Por que Isso Ajuda no Treinamento Inicial
No início do treinamento, o modelo ainda não aprendeu linguagem coerente. Fontes diversas o confundem: cada fonte tem seu próprio estilo, sua própria distribuição de vocabulário, seu próprio padrão. Misturar 16 fontes na inicialização aleatória cria uma distribuição-alvo muito ampla que o modelo não consegue ajustar.
Restringir a 7 fontes conversacionais/prosaicas resulta em um alvo mais uniforme. O modelo aprende primeiro uma representação estável e depois expande.
Caminho Geométrico Durante o Treinamento
1. Passos 0 a 20K (aquecimento). A caminhada ocorre no sub-simplex 6-D. Padrões linguísticos estáveis emergem no modelo.
2. Passos 20K a 112K (firehose completo). A caminhada se expande para o simplex completo 15-D. A amplitude de domínio emerge.
3. Passo 112K em diante (polimento). A caminhada é novamente restrita: repo-docs e repo-docstrings excluídos, pisos conversacionais elevados. Polígono menor no simplex completo; a qualidade conversacional se consolida.
Por que o Polimento Define curriculum_warmup_steps = 0
O polimento começa no passo 112K. O modelo já fala linguagem coerente. Restringir agora a um sub-simplex perderia amplitude sem ganhar nada (o benefício do aquecimento é para modelos com inicialização fresca). Definir warmup_steps = 0 significa: permanecer no simplex completo, mas com novos limites superiores e inferiores.
Três Geometrias, Um Treinamento
v2 warmup: sub-simplex de baixa dimensão.
v2 firehose: simplex completo de 15-D.
v3 polish: simplex completo com polígono menor (mais restrições).
Mesma execução de 200K passos, três regimes geométricos diferentes. Cada um foi ajustado para uma fase diferente de maturidade do modelo.