Fundamentos

Multiplicação de matrizes como transformação

Multiplicação de matrizes compõe mudanças de coordenadas aprendidas; um exemplo real é a projeção up feed-forward do Qwen3.8-27B, de 5120 entradas para 17.408 saídas, cerca de 89,1 milhões de multiply-adds para um único token.

Atualizada em

01 · Conceito

Conceito

Você tem o hidden state de um token: 5120 números, como a lição 0.4 estabeleceu. Dentro de cada camada do Qwen3.8-27B, esse estado é empurrado por um bloco feed-forward que primeiro o alarga para 17.408 dimensões e depois o estreita de volta. Os dois números saem direto da configuração do modelo. A pergunta que esta lição responde é o que esse alargamento de fato faz, e quanto ele custa, porque a resposta explica a maior parte de para onde vão os parâmetros e a aritmética de um modelo de 27 bilhões de parâmetros.

Multiplicação de matrizes é mais fácil de entender como uma transformação do que como um ritual de preencher grade. Uma matriz WW pega coordenadas em um espaço e produz coordenadas em outro. Cada componente de saída de WxWx é um produto escalar entre uma linha de WW e a entrada xx. As linhas são, portanto, perguntas aprendidas e independentes feitas sobre a mesma entrada, e o número de linhas é quantas perguntas são feitas.

Um caso pequeno torna a geometria visível. Tome

W=[2001/2].W=\begin{bmatrix}2&0\\0&1/2\end{bmatrix}.

Aplicada a (x1,x2)(x_1,x_2) ela devolve (2x1,x2/2)(2x_1, x_2/2): um quadrado vira um retângulo, esticado na horizontal e achatado na vertical. Outras matrizes rotacionam, refletem, cisalham ou projetam sobre um subespaço. Em 5120 dimensões a figura desaparece, mas a operação é a mesma — uma mudança aprendida de representação, nada mais exótico que isso.

Agora a de verdade. Na convenção usada aqui, WxWx, a projeção up do Qwen3.8-27B tem shape 17408×512017408 \times 5120: uma linha para cada saída e uma coluna para cada entrada. Para transformar um único token, a máquina precisa produzir 17.408 coordenadas de saída, e cada uma delas é um produto escalar sobre 5120 entradas. Conte diretamente:

5120×17408=89,128,96089.1 milho˜es de multiply-adds.5120 \times 17408 = 89{,}128{,}960 \approx 89.1\ \text{milhões de multiply-adds}.

Isso é uma matriz, uma camada, um token. O modelo tem 64 camadas, e o bloco feed-forward de cada camada contém mais de uma matriz de tamanho comparável; a lição 4.9 faz a contabilidade completa e mostra que os blocos feed-forward guardam a grande maioria dos parâmetros do modelo. Mas segure primeiro esse número isolado, porque ele recalibra a intuição. Gerar uma resposta de cem tokens não é fazer cem consultas pequenas. Todo token empurrado por toda camada dispara dezenas de milhões de multiply-adds só nessa matriz, e as perguntas de hardware da track 9 existem por causa disso.

O posto de uma matriz mede quantas direções independentes de fato passam por ela. Um mapa de posto baixo força suas saídas para dentro de um subespaço menor do que o shape sugere. Isso não é mera ressalva: é o mecanismo por trás do fine-tuning eficiente em parâmetros da lição 6.3, que adapta uma matriz enorme somando uma correção deliberadamente de posto baixo em vez de retreinar todos os 89 milhões de números.

A multiplicação matriz-matriz faz muitas dessas transformações de uma vez. A entrada (i,j)(i,j) de ABAB é o produto escalar da linha ii de AA com a coluna jj de BB. Mais importante que a receita é o significado: ABAB representa composição, com BB atuando primeiro e AA em segundo. A multiplicação não é comutativa. ABAB e BABA podem diferir, e uma pode estar definida enquanto a outra não está. O shape é o que registra quais composições fazem sentido.

Camadas neurais em geral computam y=Wx+by = Wx + b. A matriz fornece a transformação linear e o bias translada todo resultado, tornando o mapa afim em vez de estritamente linear: zero agora pode ir para bb em vez de ir para zero. Essa liberdade permite que uma fronteira de decisão fique em algum lugar que não passe pela origem.

Aqui está o erro clássico, e ele é a razão pela qual funções de ativação existem. Suponha que você empilhe duas camadas lineares para ganhar profundidade: W2(W1x)W_2(W_1 x). Por associatividade isso é igual a (W2W1)x(W_2 W_1)x, e W2W1W_2 W_1 é apenas outra matriz. Duas camadas têm exatamente o poder expressivo de uma. Acrescente biases e o mesmo colapso acontece com um único mapa afim combinado. Empilhe cinquenta e você ainda tem uma matriz. Profundidade numa rede puramente linear é uma ilusão, comprada com parâmetros e paga em aritmética, entregando nada. Algo não linear precisa interromper a composição, o que no bloco feed-forward do Qwen é uma ativação com gate, coberta na lição 2.3.

A multiplicação de matrizes domina a computação neural em parte porque é expressiva e em grande parte porque o hardware é excepcionalmente bom nela. Um batch de vetores de token multiplicado por uma matriz de pesos reaproveita os mesmos parâmetros em todas as posições, então a razão aritmética por memória é favorável. Aceleradores dividem produtos grandes em tiles, os transmitem por uma hierarquia de memória e acumulam somas parciais. A álgebra é simples; se aquilo roda rápido depende de shapes, precisão, movimentação de dados e fusão, que são o assunto das tracks 8 e 9.

O hábito de leitura a levar adiante é uma pergunta feita em cada matriz de um modelo: qual espaço entra, qual espaço sai, quantas direções independentes conseguem sobreviver, e quanto isso custa por token? Aplicado à projeção do Qwen de 5120 entradas para 17.408 saídas, as respostas são um estado estreito entrando, um estado largo saindo, no máximo 5120 direções independentes, e 89,1 milhões de multiply-adds. É assim que uma camada de transformer se sente por dentro.

02 · Analogia

Analogia

Uma mesa de luz de teatro mapeia um punhado de sliders de controle para centenas de lâmpadas: uma matriz diz como cada slider aciona vermelho, verde e azul pelo palco. Uma segunda matriz mapeia as cores resultantes no palco para o que a câmera de transmissão registra. Multiplicar as duas matrizes constrói uma única deixa que vai direto do slider à câmera. A ordem não pode ser trocada, porque iluminar uma sala e depois filmá-la não é a mesma operação que tentar iluminar uma gravação já pronta.

03 · Explique de volta

Explique de volta

Descreva multiplicação de matrizes como composição, explique por que uma pilha de camadas puramente lineares colapsa, e calcule o custo em multiply-adds da projeção up feed-forward do Qwen3.8-27B para um token.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

Uma matriz mapeia coordenadas de entrada para coordenadas de saída tomando o produto escalar de cada linha com a entrada, então aplicar A e depois B é a transformação única BA, lida da direita para a esquerda; AB em geral difere e pode nem ser válida em shape. Como o produto de duas matrizes é outra matriz, empilhar camadas lineares sem nada entre elas equivale a uma única camada, e é por isso que ativações não lineares precisam interromper a pilha. O Qwen3.8-27B tem hidden size 5120 e largura intermediária feed-forward 17.408, então com WxWx e as unidades de saída armazenadas como linhas, sua projeção up é uma matriz 17.408 por 5120; produzir todas as 17.408 saídas para um token exige 17.408 produtos escalares de comprimento 5120, ou seja, 5120 vezes 17.408, cerca de 89,1 milhões de operações multiply-add, para essa única matriz, naquela única camada, para aquele único token.

04 · Teste seu entendimento

Teste seu entendimento

01A projeção up feed-forward do Qwen3.8-27B mapeia 5120 dimensões para 17.408. Quantas operações multiply-add ela consome para transformar um token?
Resposta e explicação

Cerca de 89,1 milhões — Cada uma das 17.408 coordenadas de saída é um produto escalar sobre 5120 entradas, então o custo é 5120 vezes 17.408, que dá 89.128.960.

02Se A atua sobre x e B atua sobre o resultado, qual matriz única realiza as duas coisas?
Resposta e explicação

BA, já que composição se lê da direita para a esquerda — B(Ax) = (BA)x. A matriz mais à direita toca a entrada primeiro, e é por isso que a notação inverte a ordem dos passos.

03A lição 0.4 definiu o produto escalar como uma soma sobre componentes correspondentes. Onde essa operação aparece dentro de um produto matriz-vetor?
Resposta e explicação

Cada coordenada de saída é o produto escalar de uma linha da matriz com o vetor de entrada — Um produto matriz-vetor é exatamente um lote de produtos escalares, um por linha, e é por isso que alargar a dimensão de saída multiplica o trabalho linearmente.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Ian Goodfellow, Yoshua Bengio e Aaron Courville (2016). Deep Learning.
  2. PyTorch Contributors (2026). PyTorch Linear.
  3. Qwen Team (2026). Qwen3.8-27B Model Card.