Notação e formas
Metade dos erros em redes neurais são erros de forma, não de cálculo.
Todo o projeto trabalha com matrizes double[][] na convenção linha = exemplo, coluna = característica. As letras são estáveis do começo ao fim:
Softmax
Como transformar números quaisquer em probabilidades, sem estourar o double.
A saída de qualquer modelo aqui é um vetor de logits: um número por caractere, sem restrição de sinal nem de soma. O softmax os transforma numa distribuição, preservando a ordem.
Entropia cruzada
A perda que todos os três níveis minimizam, e a única métrica comparável entre eles.
O gradiente que vem de graçaDerivando a entropia cruzada e o softmax juntos em relação aos logits, tudo cancela e sobra P − onehot(y): a probabilidade prevista menos a desejada. É por isso que os dois nunca são implementados separadamente.
Perplexidade
A mesma informação da perda, numa escala que dá para explicar em voz alta.
Regra da cadeia e backpropagation
Backpropagation não é um algoritmo novo; é a regra da cadeia aplicada na ordem eficiente.
A ordem importa por custo: como a perda é um escalar, ir de trás para frente (modo reverso) calcula todos os gradientes numa única passada. Ir de frente para trás exigiria uma passada por parâmetro.
Verificação por diferenças finitas
O único jeito de saber que o backward está certo sem confiar em quem o escreveu.
Embeddings
Como um caractere vira algo que tem 'proximidade' com outro caractere.
Um id sozinho é arbitrário: nada faz o 41 ser mais parecido com o 42 do que com o 7. Um embedding é uma tabela C de forma (V × E) em que cada caractere ocupa uma linha: um vetor que o treino ajusta livremente.
Adam
Por que ninguém usa descida de gradiente pura.
O projeto aplica ainda weight decay desacoplado (estilo AdamW): θ ← θ − lr·wd·θ, uma regularização que puxa os pesos para zero independentemente do gradiente. Padrão 1e-4; zero desliga.
LayerNorm
O que mantém os números numa faixa saudável enquanto a rede fica profunda.
Atenção
O mecanismo que define o Transformer, em uma linha.
Temperatura e top-k
Dois botões que mudam o texto sem mudar o modelo.
Nenhum dos dois melhora a perdaPerda é medida sobre a distribuição do modelo, não sobre o sorteio. Temperatura e top-k mudam apenas o texto que sai: são decisões de apresentação, e é útil não confundi-las com qualidade de modelo.
Mini-lotes
Por que o gradiente é estimado em 16 exemplos e não no corpus inteiro.
O gradiente exato da perda média exigiria uma passada por todo o corpus a cada passo. Um lote aleatório de B exemplos dá uma estimativa ruidosa e barata do mesmo gradiente, e o ruído até ajuda, empurrando o otimizador para fora de mínimos ruins.
É por isso que a perda impressa durante o treino oscila mesmo quando tudo vai bem: cada linha é medida num lote diferente. A tendência importa; o ponto isolado, não.