# M2. Álgebra linear
> Significado é geometria.
**Duração prevista:** 5 semanas. **Filme:** 10 minutos de animação narrada em https://llms.newortho.com.br/movimento#m2
Vetores, produto escalar, matrizes e transformações. O módulo em que fica claro por que dois textos com sentido parecido ficam próximos no espaço de embeddings e o que uma multiplicação de matrizes realmente faz com a informação.
**Por que este módulo existe.** Um LLM é, do começo ao fim, uma sequência de multiplicações de matrizes intercaladas com não linearidades. Se você entende multiplicação de matrizes e produto escalar, entende a maquinaria inteira. Tudo o mais é detalhe de arranjo.

## 1. Vetor: uma lista e uma seta
Um vetor é uma lista ordenada de números. O vetor (3; 4) tem duas componentes. Um embedding de um token em um modelo moderno é um vetor com centenas ou milhares de componentes, algo como ℝ⁴⁰⁹⁶.
A segunda leitura, geométrica, é a que dá intuição: o mesmo vetor (3; 4) é uma seta que sai da origem e chega ao ponto três à direita e quatro acima. Direção e comprimento passam a significar alguma coisa.
Nos embeddings, essa geometria é literal. A direção do vetor carrega o significado, e a proximidade angular entre dois vetores é o que o modelo usa como medida de semelhança semântica. Não é metáfora, é a operação que roda.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s0.webm) (narração em voz humana)

## 2. Norma: o comprimento do vetor
A norma de um vetor, escrita entre barras duplas, é o seu comprimento. Em duas dimensões é o velho teorema de Pitágoras: raiz da soma dos quadrados das componentes. Em qualquer dimensão a fórmula é idêntica, só com mais termos.
Normalizar um vetor é dividi-lo pela própria norma, obtendo um vetor de comprimento um que aponta na mesma direção. Isso separa direção de magnitude, e é exatamente o que a normalização de camada faz dentro de um Transformer para manter as ativações em uma escala estável.

$$
\lVert v \rVert = \sqrt{v_1^2 + v_2^2 + \cdots + v_d^2}
$$
*Leitura:* A norma de v é a raiz quadrada da soma dos quadrados de todas as componentes de v.

**Exemplo, Cálculo à mão.** Para v igual a (3; 4): a norma é a raiz de nove mais dezesseis, ou seja raiz de vinte e cinco, igual a cinco. O vetor normalizado é (0,6; 0,8), que ainda aponta na mesma direção mas tem comprimento um.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s1.webm) (narração em voz humana)

## 3. Produto escalar: a medida de concordância
O produto escalar de dois vetores multiplica componente por componente e soma tudo. O resultado é um único número, não um vetor, e por isso o nome escalar.
O que esse número significa: ele é positivo e grande quando os dois vetores apontam na mesma direção, próximo de zero quando são perpendiculares, e negativo quando apontam em direções opostas. É uma medida de concordância entre direções, ponderada pelos comprimentos.
Esta é a operação central da atenção. Quando um token pergunta quais posições anteriores importam para mim, o cálculo é literalmente o produto escalar entre a consulta desse token e as chaves de todas as outras posições. Concordância alta significa atenção alta.

$$
a \cdot b = \sum_i a_i\, b_i = \lVert a \rVert\, \lVert b \rVert \cos \theta
$$
*Leitura:* O produto escalar de a com b é a soma dos produtos das componentes correspondentes, e equivale ao produto dos comprimentos vezes o cosseno do ângulo entre eles.

**Exemplo, Três casos em números.** Sejam a igual a (1; 0). Com b igual a (1; 0), o produto escalar é um, concordância máxima. Com b igual a (0; 1), é zero, perpendiculares, nenhuma relação. Com b igual a (−1; 0), é menos um, oposição. Três contas de dez segundos que fixam a intuição para sempre.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s2.webm) (narração em voz humana)

## 4. Similaridade do cosseno e o espaço de embeddings
O produto escalar cru mistura duas informações: o ângulo e os comprimentos. Para comparar significado, geralmente queremos só o ângulo, e por isso se divide pelo produto das normas. O resultado é o cosseno do ângulo, um número entre menos um e um.
Um cosseno perto de um significa direções quase idênticas, ou seja significados próximos. Perto de zero significa sem relação. Perto de menos um significa oposição. É essa a métrica usada em busca vetorial, em bancos como pgvector e em qualquer sistema de recuperação semântica.
Vale registrar o limite honesto da intuição famosa dos vetores de palavras: a ideia de que rei menos homem mais mulher dá rainha funciona em modelos clássicos de embedding e ajuda a construir a imagem mental, mas em modelos de linguagem grandes contemporâneos os embeddings são contextuais, mudam conforme a frase, e as relações não são tão limpas. Use a analogia para entender a geometria, não como descrição exata do que acontece dentro de um LLM.

$$
\cos(a, b) = \frac{a \cdot b}{\lVert a \rVert\, \lVert b \rVert}
$$
*Leitura:* A similaridade do cosseno entre a e b é o produto escalar dividido pelo produto das normas.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s3.webm) (narração em voz humana)

## 5. Matrizes e multiplicação
Uma matriz é uma tabela retangular de números, com linhas e colunas. A notação padrão diz que uma matriz é m por n quando tem m linhas e n colunas.
Multiplicar duas matrizes significa preencher cada célula do resultado com um produto escalar: a célula da linha i e coluna j do produto é o produto escalar entre a linha i da primeira matriz e a coluna j da segunda. Toda multiplicação de matrizes é, portanto, uma coleção organizada de produtos escalares.
Isso muda a percepção do que uma camada de rede neural faz. Quando você lê que uma camada multiplica a entrada por W, leia como: cada neurônio da camada calcula o produto escalar entre a entrada e a própria linha de pesos, medindo quanto a entrada concorda com o padrão que aquele neurônio aprendeu a procurar.

**Exemplo, Multiplicação 2 por 2 completa.** Sejam A com linhas (1, 2) e (3, 4), e B com linhas (5, 6) e (7, 8). A célula superior esquerda do produto é o produto escalar de (1, 2) com a coluna (5, 7), ou seja 1 vezes 5 mais 2 vezes 7, igual a 19. Seguindo o mesmo procedimento, o produto completo tem linhas (19, 22) e (43, 50). Faça esta conta à mão pelo menos três vezes ao longo do módulo.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s4.webm) (narração em voz humana)

## 6. Shapes: a álgebra das dimensões
Multiplicação de matrizes só é definida quando o número de colunas da primeira é igual ao número de linhas da segunda. Uma matriz m por n vezes uma n por p resulta em uma m por p. As dimensões internas precisam bater e desaparecem; as externas sobrevivem.
Esta regra é a ferramenta de depuração mais útil que existe para ler arquiteturas. Quando um paper diz que a entrada é de shape lote por sequência por dimensão do modelo, e que a projeção de consulta tem shape dimensão do modelo por dimensão da chave, você já sabe, sem ler mais nada, que a saída será lote por sequência por dimensão da chave.
Treine o hábito: ao encontrar qualquer multiplicação em um paper, escreva os shapes à margem antes de tentar entender o significado. Metade da compreensão vem daí.

$$
(m \times n) \cdot (n \times p) \;\longrightarrow\; (m \times p)
$$
*Leitura:* Uma matriz m por n multiplicada por uma n por p resulta em uma matriz m por p. O n interno precisa coincidir e é consumido.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s5.webm) (narração em voz humana)

## 7. Transformação linear: o que a matriz faz com o espaço
A leitura mais profunda de uma matriz não é tabela de números, é função que transforma o espaço inteiro. Multiplicar todos os pontos de um quadrado por uma matriz produz um paralelogramo: o espaço foi esticado, girado ou espelhado, mas linhas retas continuam retas e a origem fica no lugar.
Uma camada de rede neural é exatamente isso, uma transformação do espaço, seguida de uma função não linear que dobra o espaço de um jeito que a matriz sozinha não conseguiria. Empilhar camadas é empilhar transformações, e é dessa composição que sai a capacidade de representar relações complicadas.
A animação do laboratório deste módulo mostra a transformação acontecendo. Mexa nos coeficientes e observe o que cada um faz ao quadrado unitário; é a forma mais rápida de transformar a definição em intuição.

[Ouvir esta seção](https://llms.newortho.com.br/audio/m2-s6.webm) (narração em voz humana)

## Exercícios

1. **Calcule o produto escalar de (2; −1; 3) com (0; 4; 1).**

   Dois vezes zero é zero, menos um vezes quatro é menos quatro, três vezes um é três. Soma: menos um.

2. **Qual a norma de (0; 3; 4)?**

   Raiz de zero mais nove mais dezesseis, igual a raiz de vinte e cinco, igual a cinco.

3. **Se a similaridade do cosseno entre dois embeddings é 0,02, o que isso diz?**

   Que os vetores são praticamente perpendiculares, ou seja não há relação semântica detectável entre eles nesse espaço.

4. **Uma matriz 4 por 8 multiplica uma 8 por 2. Qual o shape do resultado, e o que aconteceria com uma 2 por 8?**

   O resultado é 4 por 2. Com uma 2 por 8 a operação é indefinida, porque oito colunas não casam com duas linhas.

5. **Multiplique à mão A com linhas (2, 0) e (1, 3) por B com linhas (1, 4) e (2, 5).**

   Linha um: 2 vezes 1 mais 0 vezes 2 é 2; 2 vezes 4 mais 0 vezes 5 é 8. Linha dois: 1 vezes 1 mais 3 vezes 2 é 7; 1 vezes 4 mais 3 vezes 5 é 19. Resultado: linhas (2, 8) e (7, 19).

## Trilhos do tutor socrático

### Norma e normalização do vetor (3; 4) (5 passos)

Considere o vetor de duas dimensões (3; 4), um embedding minúsculo. Vamos medir o comprimento dele e depois reduzi-lo a comprimento um, que é exatamente o que a normalização de camada faz com as ativações dentro de um Transformer.

**Passo 1.** Some os quadrados das duas componentes de (3; 4). Qual é esse total, ou seja, o número que fica embaixo da raiz?

   Resposta: 25. Três ao quadrado é nove, quatro ao quadrado é dezesseis, e nove mais dezesseis é vinte e cinco. Esse vinte e cinco é o que vai embaixo da raiz.

**Passo 2.** Agora conclua: qual é a norma do vetor (3; 4)?

   Resposta: 5. A raiz de vinte e cinco é cinco. A norma de (3; 4) vale cinco, o comprimento da seta que sai da origem e chega ao ponto três à direita e quatro acima.

**Passo 3.** Para normalizar, divida cada componente pela norma. Qual é a primeira componente do vetor normalizado?

   Resposta: 0.6. Três dividido por cinco é zero vírgula seis. O vetor normalizado é (0,6; 0,8), com a mesma direção do original.

**Passo 4.** Confirme o trabalho: qual é a norma do vetor normalizado (0,6; 0,8)?

   Resposta: 1. Zero vírgula trinta e seis mais zero vírgula sessenta e quatro é um, e a raiz de um é um. Todo vetor normalizado tem comprimento um, por construção.

**Passo 5.** O que a normalização preserva e o que ela descarta?

   Resposta: 0. A normalização preserva a direção e descarta a magnitude. É por isso que ela serve para separar significado, que mora na direção, de escala, que a rede prefere manter estável.

Este trilho mostrou que norma é comprimento e que normalizar é ficar só com a direção. Guarde a imagem: dentro de um Transformer, a normalização de camada faz esse mesmo movimento milhões de vezes para manter as ativações em escala estável.

### Do produto escalar até a similaridade do cosseno (6 passos)

Sejam os vetores a igual a (2; −1; 3) e b igual a (0; 4; 1). Vamos calcular o produto escalar, as duas normas e, por fim, o cosseno do ângulo entre eles, que é a medida usada em busca vetorial.

**Passo 1.** Calcule o produto escalar de a com b.

   Resposta: -1. Dois vezes zero é zero, menos um vezes quatro é menos quatro, três vezes um é três. Zero menos quatro mais três é menos um.

**Passo 2.** Qual é a norma de a, com três casas decimais?

   Resposta: 3.742. Quatro mais um mais nove é catorze, e a raiz de catorze é aproximadamente três vírgula setecentos e quarenta e dois.

**Passo 3.** Qual é a norma de b, com três casas decimais?

   Resposta: 4.123. Zero mais dezesseis mais um é dezessete, e a raiz de dezessete é aproximadamente quatro vírgula cento e vinte e três.

**Passo 4.** Calcule a similaridade do cosseno entre a e b, com três casas decimais.

   Resposta: -0.065. O produto das normas é aproximadamente quinze vírgula quatrocentos e vinte e sete, e menos um dividido por isso é aproximadamente menos zero vírgula zero sessenta e cinco.

**Passo 5.** O que esse valor de cosseno diz sobre a relação entre os dois vetores?

   Resposta: 0. O valor indica vetores praticamente perpendiculares. O ângulo é próximo de noventa graus e, em um espaço de embeddings, isso significa ausência de relação semântica detectável.

**Passo 6.** Se todas as componentes de a forem multiplicadas por dez, quanto passa a valer o cosseno entre a e b?

   Resposta: 0. O fator dez aparece no numerador e no denominador e se cancela. O cosseno continua em cerca de menos zero vírgula zero sessenta e cinco, porque o ângulo não mudou.

Você calculou as três peças da fórmula e viu por que o denominador existe: ele separa ângulo de comprimento. É essa separação que torna a similaridade do cosseno a métrica padrão de busca semântica.

### Multiplicação de matrizes célula por célula (6 passos)

Seja A a matriz com linhas (2, 0) e (1, 3), e B a matriz com linhas (1, 4) e (2, 5). Vamos preencher as quatro células do produto A vezes B, uma de cada vez, e depois testar se a ordem dos fatores importa.

**Passo 1.** Para obter a célula da linha 2 e coluna 1 do produto, quais dois vetores entram no produto escalar?

   Resposta: 0. Entram a linha 2 de A, que é (1, 3), e a coluna 1 de B, que é (1, 2), lida de cima para baixo.

**Passo 2.** Calcule a célula da linha 1 e coluna 1 do produto A vezes B.

   Resposta: 2. Dois vezes um é dois, zero vezes dois é zero, e a soma é dois. A célula superior esquerda vale dois.

**Passo 3.** Calcule a célula da linha 1 e coluna 2 do produto A vezes B.

   Resposta: 8. Dois vezes quatro é oito, zero vezes cinco é zero, e a soma é oito. A célula da linha 1 e coluna 2 vale oito.

**Passo 4.** Calcule a célula da linha 2 e coluna 1 do produto A vezes B.

   Resposta: 7. Um vezes um é um, três vezes dois é seis, e a soma é sete. A célula da linha 2 e coluna 1 vale sete.

**Passo 5.** Calcule a célula da linha 2 e coluna 2 do produto A vezes B.

   Resposta: 19. Um vezes quatro é quatro, três vezes cinco é quinze, e a soma é dezenove. O produto completo tem linhas (2, 8) e (7, 19).

**Passo 6.** Agora inverta a ordem dos fatores. Qual é a célula da linha 1 e coluna 1 do produto B vezes A?

   Resposta: 6. Um vezes dois é dois, quatro vezes um é quatro, e a soma é seis. Como seis é diferente de dois, fica provado que a multiplicação de matrizes não é comutativa.

As quatro células saíram de quatro produtos escalares, exatamente como diz a definição. E a última conta provou algo que vale para todo o resto da trilha: trocar a ordem dos fatores muda o resultado.

### Rastrear shapes em uma cabeça de atenção (5 passos)

Uma sequência de 6 tokens é representada por uma matriz X de shape 6 por 8, com 8 sendo a dimensão do modelo. A projeção de consulta tem shape 8 por 4. Vamos seguir os shapes até a saída da atenção, sem calcular um único número.

**Passo 1.** Quantas linhas tem a matriz resultante de X multiplicada pela projeção de consulta?

   Resposta: 6. O resultado é seis por quatro, então tem seis linhas, uma para cada token da sequência.

**Passo 2.** E quantas colunas tem essa mesma matriz de consultas?

   Resposta: 4. O resultado é seis por quatro, ou seja quatro colunas. Cada token passou a ser descrito por um vetor de quatro números.

**Passo 3.** Se alguém escrever a projeção de consulta multiplicada por X, nessa ordem, o que acontece?

   Resposta: 0. Quatro é diferente de seis, então as dimensões internas não batem e a operação é indefinida. A ordem correta é X primeiro, projeção depois.

**Passo 4.** As consultas, de shape 6 por 4, multiplicam as chaves transpostas, de shape 4 por 6. Quantos números tem a matriz de escores resultante?

   Resposta: 36. Seis por seis dá trinta e seis números, um escore para cada par de posições da sequência. É por isso que a atenção cresce com o quadrado do comprimento.

**Passo 5.** Por fim, a matriz de pesos, de shape 6 por 6, multiplica os valores, de shape 6 por 4. Quantos números tem a saída da atenção?

   Resposta: 24. Seis vezes quatro dá vinte e quatro números. A saída volta a ter uma linha por token, exatamente como a entrada, o que permite empilhar camadas.

Você percorreu uma cabeça de atenção inteira sem calcular um número sequer, só com a regra de shapes. É esse o hábito que faz um paper ficar legível: anote os shapes à margem antes de tentar entender o significado.

### O quadrado unitário sob uma matriz (5 passos)

Seja M a matriz com linhas (2, 0) e (0, 3). Vamos ver o que ela faz com o quadrado de lado um apoiado na origem, que é a forma mais rápida de enxergar uma matriz como transformação do espaço.

**Passo 1.** Aplique M ao vetor (1; 0). Qual é a primeira componente do resultado?

   Resposta: 2. Dois vezes um é dois e zero vezes zero é zero, então a primeira componente vale dois. O canto direito do quadrado foi empurrado de um para dois.

**Passo 2.** Aplique M ao vetor (0; 1). Qual é a segunda componente do resultado?

   Resposta: 3. Zero vezes zero é zero e três vezes um é três, então a segunda componente vale três. O canto de cima do quadrado subiu de um para três.

**Passo 3.** Os dois lados do quadrado viraram um lado de comprimento 2 na horizontal e um lado de comprimento 3 na vertical. Qual é a área da figura resultante?

   Resposta: 6. Dois vezes três dá área seis. A transformação ampliou a área do quadrado unitário em seis vezes.

**Passo 4.** Para onde a matriz M leva o ponto da origem, (0; 0)?

   Resposta: 0. Tudo dá zero, então a origem continua na origem. Retas continuam retas e o ponto zero fica fixo: é assim que se reconhece uma transformação linear.

**Passo 5.** Por que uma camada de rede neural não pode ser só a matriz, e precisa de uma função não linear depois?

   Resposta: 0. Compor matrizes produz apenas outra matriz, então a profundidade não acrescentaria nada. A função não linear dobra o espaço de um jeito que a matriz sozinha não consegue, e é dessa alternância que sai a capacidade de representar relações complicadas.

Duas colunas da matriz bastaram para descrever o destino de todo o plano. Guarde a leitura: matriz não é tabela de números, é função que transforma o espaço inteiro, e a não linearidade é o que impede que empilhar camadas seja inútil.

## Dúvidas frequentes

**Qual é a diferença real entre produto escalar e similaridade do cosseno?**

O produto escalar mistura duas informações em um número só: o ângulo entre os vetores e o comprimento de cada um. A similaridade do cosseno é esse mesmo produto escalar dividido pelo produto das normas, o que elimina os comprimentos e deixa apenas o ângulo. Na prática, o produto escalar cresce se você simplesmente alongar um dos vetores, enquanto o cosseno não muda. Por isso o cosseno é a métrica usada quando se quer comparar significado, e o produto escalar cru é o que aparece dentro da atenção, onde a magnitude também carrega informação.

**Por que o produto escalar devolve um número só, e não um vetor?**

Porque a última operação da fórmula é uma soma. Você multiplica componente por componente, o que ainda produz uma lista, mas em seguida soma todos esses produtos, e uma soma de números é um número. O nome escalar vem exatamente daí: o resultado é uma grandeza sem direção, apenas magnitude e sinal. É por isso que uma célula de uma matriz produto guarda um único valor, mesmo tendo nascido de dois vetores inteiros.

**A norma de um vetor pode dar negativa?**

Não. Cada componente entra elevada ao quadrado, e quadrado nunca é negativo, então a soma dentro da raiz é sempre maior ou igual a zero. A raiz quadrada dessa soma também é tomada como positiva. O único vetor com norma zero é o vetor de todas as componentes zero. Se você chegou a um número negativo, quase sempre foi por ter somado as componentes cruas em vez de somar os quadrados delas.

**Preciso decorar a fórmula da norma para vetores de milhares de dimensões?**

A fórmula é a mesma, só com mais termos. Em duas dimensões você soma dois quadrados, em quatro mil e noventa e seis você soma quatro mil e noventa e seis quadrados, e o resto do procedimento não muda em nada. O que vale decorar é a estrutura, quadrados primeiro, soma depois, raiz por último. A conta em si nunca será feita à mão em dimensão alta, mas a leitura da notação sim, e é ela que este módulo cobra.

**Se a similaridade do cosseno entre dois embeddings deu 0,02, isso é bom ou ruim?**

Não é bom nem ruim, é uma informação: significa que os vetores estão praticamente perpendiculares. Em um espaço de embeddings, isso quer dizer que não há relação semântica detectável entre os dois itens naquele espaço. Se você esperava que fossem parecidos, o valor indica que o modelo não enxerga essa semelhança. Para comparação, proximidade real costuma aparecer como cosseno claramente acima de zero, tendendo a um, e oposição aparece como valor negativo tendendo a menos um.

**Por que a multiplicação de matrizes não é comutativa?**

Porque a definição não é simétrica: da matriz da esquerda se leem linhas e da matriz da direita se leem colunas. Ao trocar a ordem, você troca quem entra como linha e quem entra como coluna, e os produtos escalares passam a ser entre vetores diferentes. Com A de linhas (2, 0) e (1, 3) e B de linhas (1, 4) e (2, 5), a célula superior esquerda vale dois em uma ordem e seis na outra. Em muitos casos a inversão nem é definida, porque as dimensões internas deixam de bater.

**Como eu sei rapidamente se uma multiplicação de matrizes é possível?**

Escreva os dois shapes lado a lado, na ordem em que aparecem, e olhe apenas para os dois números do meio. Se eles forem iguais, a operação existe e o resultado tem como shape os dois números das pontas. Se forem diferentes, a operação é indefinida e não há o que calcular. Uma matriz 4 por 8 vezes uma 8 por 2 funciona e devolve 4 por 2, enquanto a mesma 4 por 8 vezes uma 2 por 8 não funciona, porque oito não casa com dois.

**O que quer dizer, na prática, um shape lote por sequência por dimensão do modelo?**

É a mesma regra de shapes com um eixo a mais na frente. O eixo de lote conta quantos exemplos estão sendo processados juntos, o de sequência conta quantos tokens tem cada exemplo, e o de dimensão do modelo conta quantos números descrevem cada token. Nas multiplicações, o eixo de lote costuma ficar parado enquanto os dois últimos seguem a regra usual, com a dimensão interna sendo consumida. Por isso multiplicar por uma projeção de dimensão do modelo por dimensão da chave produz lote por sequência por dimensão da chave.

**Aquela história de rei menos homem mais mulher dar rainha é verdade?**

Funciona em modelos clássicos de embedding de palavras e serve muito bem para construir a imagem mental de que direções carregam significado. Em modelos de linguagem grandes contemporâneos, porém, os embeddings são contextuais, ou seja, mudam conforme a frase em que a palavra aparece, e essas relações deixam de ser tão limpas. Use a analogia para entender a geometria e desconfie dela como descrição literal do que acontece dentro de um modelo atual.

**Por que normalizar os vetores antes de compará-los?**

Porque comprimento e direção carregam informações diferentes, e para comparar significado geralmente interessa só a direção. Um vetor pode ser longo apenas porque o texto era maior ou porque as ativações tinham escala alta, sem que isso diga nada sobre o conteúdo. Ao normalizar, todos os vetores passam a ter comprimento um e a comparação fica sendo puramente angular. Comparar vetores já normalizados por produto escalar é, aliás, exatamente a mesma coisa que calcular a similaridade do cosseno.

**O que é uma transformação linear, em uma frase?**

É uma função que transforma o espaço inteiro esticando, girando ou espelhando, de modo que retas continuam retas e a origem permanece no lugar. Toda matriz representa uma dessas funções, e aplicar a matriz a um vetor é justamente perguntar para onde aquele ponto foi. A imagem canônica é o quadrado unitário virando um paralelogramo. Se você quiser um teste rápido, verifique se a origem ficou parada: se saiu do lugar, a transformação não é linear.

**Se a matriz já transforma o espaço, para que serve a função não linear?**

Porque compor transformações lineares devolve outra transformação linear. Sem algo entre elas, empilhar oitenta camadas teria exatamente o mesmo poder de representação de uma única camada, o que tornaria a profundidade inútil. A função não linear dobra o espaço de um jeito que nenhuma matriz consegue sozinha, e é a alternância entre esticar e dobrar que permite representar relações complicadas. É por isso que toda arquitetura intercala multiplicação de matrizes com não linearidade.

**Embedding e vetor são a mesma coisa?**

Todo embedding é um vetor, mas nem todo vetor é um embedding. Vetor é o objeto matemático, uma lista ordenada de números que também pode ser lida como uma seta. Embedding é o nome que se dá ao vetor quando ele foi produzido para representar alguma coisa, um token, uma frase, uma imagem, de modo que a posição no espaço carregue significado. A matemática é idêntica nos dois casos, o que muda é a interpretação.

**Onde exatamente o produto escalar aparece dentro da atenção?**

No cálculo dos escores. Quando um token pergunta quais posições anteriores importam para ele, o modelo faz o produto escalar entre a consulta desse token e as chaves de todas as outras posições. Concordância alta entre consulta e chave produz escore alto, que depois vira atenção alta. Como isso é feito para todos os pares de posições de uma vez, o cálculo inteiro é escrito como uma multiplicação de matrizes, que nada mais é do que uma coleção organizada desses produtos escalares.

**Como visualizar um vetor de quatro mil e noventa e seis dimensões?**

Não tente. Ninguém visualiza mais do que três dimensões, e a boa notícia é que não é preciso. Pense em duas ou três dimensões para construir a intuição de direção, comprimento e ângulo, e confie que todas as fórmulas continuam valendo com mais termos. O que muda em dimensão alta é apenas o número de parcelas nas somas, nunca a lógica da operação. A geometria mental de duas dimensões é uma bengala legítima, desde que você saiba que é uma bengala.

## Checkpoint

1. O que o produto escalar mede, em uma frase?

   O quanto dois vetores apontam na mesma direção, ponderado pelos seus comprimentos.

2. Por que se divide pelo produto das normas na similaridade do cosseno?

   Para isolar o ângulo e eliminar a influência do comprimento dos vetores.

3. Explique a multiplicação de matrizes em termos de produtos escalares.

   Cada célula do resultado é o produto escalar entre uma linha da primeira matriz e uma coluna da segunda.

4. Qual regra de shapes governa a multiplicação?

   As dimensões internas precisam ser iguais e somem; as externas formam o shape do resultado.

5. O que uma matriz faz geometricamente com um quadrado unitário?

   Transforma o quadrado em um paralelogramo, esticando, girando ou espelhando o espaço, mantendo retas retas e a origem fixa.

## Bibliografia

- **Introduction to Linear Algebra**, Gilbert Strang, 6ª edição, Wellesley-Cambridge Press, 2023. Capítulos 1 a 3. O livro-texto de referência mundial em álgebra linear, e a base do curso 18.06 do MIT. A abordagem por colunas de Strang é exatamente a intuição que serve para entender embeddings.

- **Álgebra Linear e suas Aplicações**, David C. Lay, Steven Lay e Judi McDonald, edição brasileira, LTC. Capítulos de sistemas lineares, transformações lineares e ortogonalidade. Alternativa em português, com exercícios graduados. Bom complemento ao Strang para quem quer treinar cálculo manual.

- **Mathematics for Machine Learning**, Deisenroth, Faisal e Ong, Cambridge University Press, 2020, livro aberto. Capítulos 2 e 3. Álgebra linear já escrita na direção de aprendizado de máquina, com produto interno e normas tratados como ferramentas de similaridade.

## Vídeos curados

- [Essence of Linear Algebra, série completa](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab), 3Blue1Brown. Assista os capítulos 1 a 4 e o 9. É o melhor material de intuição geométrica que existe e cabe no ritmo do módulo.

- [Álgebra linear](https://pt.khanacademy.org/math/linear-algebra), Khan Academy Brasil. Alternativa em português com exercícios corrigidos, útil para a prática de recuperação.

- [Mathematics for Machine Learning, capítulo 2](https://mml-book.github.io/book/mml-book.pdf), Deisenroth, Faisal e Ong. Referência de consulta. Leia as seções que você precisar, não o capítulo inteiro.
