Álgebra Linear
Por que a álgebra linear é a linguagem da IA (AI)
Sistemas modernos de IA são construídos a partir de representações (vetores) e transformações (matrizes e tensores de ordem superior). Seja ao treinar um classificador linear (linear classifier), ajustar um modelo probabilístico (probabilistic model) ou executar uma Arquitetura Transformer, o cálculo central geralmente é alguma forma de:
- pegar vetores (características (features), estados ocultos (hidden states), incorporações (embeddings)),
- aplicar transformações lineares (linear transformations) aprendidas (matrizes de pesos (weight matrices)),
- combiná-los com não linearidades (nonlinearities) e normalização (normalization),
- e otimizar parâmetros com gradientes (gradients).
Por isso a álgebra linear aparece em toda parte no aprendizado de máquina (machine learning):
- Incorporações: palavras, imagens, usuários e itens são representados como vetores; similaridade e recuperação frequentemente se reduzem a produtos escalares ou distâncias.
- Camadas neurais: uma camada densa (dense layer) é uma multiplicação matriz–vetor (ou matriz–matriz) mais um termo de viés.
- Atenção (attention): o coração dos transformers é uma sequência de multiplicações de matrizes e função softmax (softmax).
- Otimização: gradientes são vetores; curvatura se relaciona a matrizes (Hessianas); a estabilidade depende do condicionamento (conditioning) (veja Álgebra Linear Numérica).
Se você quiser um guia dedicado aos objetos básicos e às convenções de forma, veja Vetores, Matrizes, Tensores.
Objetos centrais e notação (o que você manipula em código de ML)
Escalares, vetores, matrizes, tensores
- Escalar: um único número, por exemplo ( \alpha \in \mathbb{R} )
- Vetor: uma lista ordenada de números, por exemplo ( x \in \mathbb{R}^d )
- Matriz: um arranjo 2D, por exemplo ( W \in \mathbb{R}^{m \times d} )
- Tensor: um arranjo de (n) dimensões (generalização de matrizes). Frameworks de aprendizado profundo (deep learning) usam tensores para quase tudo.
Formas (shapes) como um conceito de primeira classe
Uma grande fração de “álgebra linear para ML” é raciocinar cuidadosamente sobre formas (shapes). Formas típicas:
- Um lote (batch) de incorporações: (X \in \mathbb{R}^{B \times d})
- Uma sequência de incorporações (por exemplo, tokens (tokens)): (H \in \mathbb{R}^{B \times T \times d})
- Uma matriz de pesos para uma camada linear: (W \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}})
Quando você vê código como Y = X @ W.T, você está vendo a álgebra linear em ação.
Vetores: similaridade, geometria e incorporações
Adição e escalonamento de vetores
Vetores suportam adição e multiplicação por escalar:
- (x + y) combina informação
- (\alpha x) redimensiona a magnitude
Em espaços de incorporação, essas operações podem ter significado semântico (embora nem sempre de forma confiável). Quanto mais consistentemente seu modelo aprende estrutura, mais útil a geometria simples se torna.
Produto escalar e similaridade do cosseno
O produto escalar (dot product) (produto interno) entre vetores (x, y \in \mathbb{R}^d) é:
[ x \cdot y = \sum_{i=1}^{d} x_i y_i ]
Ele mede alinhamento. Em muitos sistemas de incorporação, a recuperação usa produtos escalares porque são rápidos e se correlacionam com similaridade.
A similaridade do cosseno (cosine similarity) compara direção em vez de magnitude:
[ \cos(\theta) = \frac{x \cdot y}{|x|_2 |y|_2} ]
Isso é comum quando incorporações são normalizadas (por exemplo, norma unitária), transformando produto escalar em similaridade do cosseno.
Normas e distâncias
Uma norma mede o tamanho de um vetor.
- ( |x|_2 ) (norma euclidiana (Euclidean norm)): mais comum em geometria e otimização
- ( |x|_1 ): promove esparsidade (frequentemente em regularização (regularization))
- ( |x|_\infty ): maior componente em valor absoluto
Distância frequentemente usa ( |x-y|_2 ) (distância euclidiana (Euclidean distance)). Em altas dimensões, tenha cautela: distâncias podem se concentrar, fazendo medidas de similaridade se comportarem de maneira pouco intuitiva.
Exemplo prático: similaridade de incorporação em Python
import numpy as np
x = np.array([0.2, 0.1, -0.4])
y = np.array([0.0, 0.3, -0.1])
dot = x @ y
cos = dot / (np.linalg.norm(x) * np.linalg.norm(y))
dist = np.linalg.norm(x - y)
print("dot:", dot)
print("cosine:", cos)
print("euclidean distance:", dist)
Matrizes: transformações lineares e parâmetros do modelo
Matrizes como funções
Uma matriz (W \in \mathbb{R}^{m \times d}) define uma aplicação linear (linear map):
[ f(x) = Wx \quad \text{onde } x \in \mathbb{R}^{d},; Wx \in \mathbb{R}^{m} ]
Isso é exatamente o que uma camada densa faz antes de adicionar viés (bias) e aplicar uma não linearidade:
[ y = Wx + b ]
Em um contexto de Redes Neurais, o “conhecimento aprendido” de uma camada frequentemente vive em (W).
Como interpretar uma matriz (modelos mentais úteis)
- Visão por colunas: as colunas de (W) mostram para onde os vetores de base vão; elas descrevem como cada dimensão de entrada contribui para as saídas.
- Visão por linhas: cada linha é uma função linear que calcula uma coordenada de saída; a saída (y_i) é o produto escalar da linha (i) com (x).
Multiplicação de matrizes = composição de transformações
Se (A) e (B) são matrizes com formas compatíveis, então (AB) corresponde a aplicar (B) primeiro e depois (A):
[ x \mapsto Bx \mapsto A(Bx) = (AB)x ]
Redes profundas empilham transformações assim, intercaladas com não linearidades. Durante a Retropropagação (Backpropagation), gradientes fluem por essas composições.
Transposta e simetria
- A transposta (transpose) (W^\top) troca linhas e colunas.
- Uma matriz é simétrica se (A = A^\top). Matrizes simétricas surgem naturalmente (por exemplo, matrizes de covariância em estatística).
Ortogonalidade e rotações
Uma matriz (Q) é ortogonal (orthogonal) se:
[ Q^\top Q = I ]
Transformações ortogonais preservam comprimentos e ângulos (rotações/reflexões). Elas são úteis porque são numericamente estáveis e não fazem normas “explodirem”. Algumas arquiteturas restringem ou regularizam pesos para serem aproximadamente ortogonais.
Sistemas lineares e mínimos quadrados: a espinha dorsal da regressão
Resolvendo \(Ax=b\)
Um sistema linear:
[ Ax = b ]
aparece em:
- regressão linear (linear regression),
- problemas de calibração,
- ajuste de modelos com erro quadrático,
- etapas internas de algoritmos de otimização.
Se (A) é quadrada e inversível, existe uma solução única (x = A^{-1}b). Na prática, você geralmente evita calcular explicitamente (A^{-1}) por razões numéricas (veja Álgebra Linear Numérica).
Sistemas superdeterminados e mínimos quadrados
Em ML, você frequentemente tem mais equações do que incógnitas (mais pontos de dados do que parâmetros). Então (Ax=b) pode não ter solução exata. Mínimos quadrados resolve:
[ \min_x |Ax - b|_2^2 ]
Essa é a base clássica da regressão linear. As equações normais (normal equations) são:
[ A^\top A x = A^\top b ]
Mas, novamente, implementações práticas normalmente usam solucionadores baseados em decomposição QR (QR) ou Decomposição em Valores Singulares (Singular Value Decomposition, SVD) por estabilidade.
Exemplo prático: regressão linear via mínimos quadrados
import numpy as np
# A: (n_samples, n_features), b: (n_samples,)
A = np.array([
[1.0, 0.0],
[1.0, 1.0],
[1.0, 2.0],
[1.0, 3.0],
])
b = np.array([1.0, 2.0, 2.0, 4.0])
x_hat, residuals, rank, s = np.linalg.lstsq(A, b, rcond=None)
print("fit parameters:", x_hat) # intercept and slope
Conexão com otimização e gradientes
Mínimos quadrados é um problema de otimização convexo. Seu gradiente envolve (A^\top(Ax-b)), um padrão que você verá repetidamente em ML. Para a história mais ampla de aprendizado como otimização, veja Otimização e Descida do Gradiente. Para o cálculo por trás de gradientes, veja Cálculo.
Subespaços, posto e projeções (a “geometria por baixo do capô”)
Espaço gerado e subespaços
Um conjunto de vetores gera um subespaço: todas as combinações lineares deles. Muitos fenômenos em ML são mais fáceis de entender como questões de subespaços:
- Sua representação colapsa em um subespaço de menor dimensão?
- Sua matriz de características tem posto completo ou há características redundantes?
- Gradientes ficam confinados a um subespaço devido a restrições ou à arquitetura?
Posto e expressividade
O posto de uma matriz é a dimensão do espaço que ela consegue alcançar (seu espaço coluna). Em termos de ML:
- Matrizes de pesos de baixo posto restringem o conjunto de transformações que uma camada pode representar.
- Estrutura de baixo posto pode ser uma característica (compressão, generalização) ou um problema (subajuste (underfitting)).
Projeção ortogonal
Projetar um vetor em um subespaço é uma operação comum (explicitamente ou implicitamente). Se (U \in \mathbb{R}^{d \times k}) tem colunas ortonormais (então (U^\top U = I)), então a projeção de (x) no subespaço gerado pelas colunas de (U) é:
[ \hat{x} = UU^\top x ]
Projeções aparecem em redução de dimensionalidade, otimização com restrições e interpretação de incorporações.
Autovalores e valores singulares: por que “espectros” importam em ML
Muitas propriedades importantes de uma transformação são reveladas por seu espectro (spectrum) (autovalores/valores singulares):
- se uma transformação amplifica ou encolhe vetores,
- como a informação flui pelas camadas,
- se um problema é mal condicionado (ill-conditioned) (difícil de otimizar numericamente),
- se os dados têm baixa dimensão intrínseca (low intrinsic dimension).
Em alto nível:
- Autovalores/autovetores se aplicam de forma mais direta a matrizes quadradas.
- SVD se aplica a qualquer matriz e é central para Análise de Componentes Principais (Principal Component Analysis, PCA) e aproximações de baixo posto (low-rank approximations).
Esses tópicos são profundos e muito práticos em ML, então são cobertos em detalhe em Autovalores e SVD. Para armadilhas numéricas (ponto flutuante (floating point), condicionamento, estabilidade), veja Álgebra Linear Numérica.
Tensores e álgebra linear em lote no aprendizado profundo
Frameworks de aprendizado profundo generalizam operações de matriz para dimensões mais altas via multiplicação de matrizes em lote (batched matmul), broadcasting (broadcasting) e contrações tensoriais (tensor contractions).
Exemplo: atenção é principalmente multiplicações de matrizes
Em transformers, você normalmente tem:
- (Q, K, V \in \mathbb{R}^{B \times T \times d})
- escores de atenção (S = QK^\top \in \mathbb{R}^{B \times T \times T}) (com uma transposta nas duas últimas dimensões)
- pesos (A = \text{softmax}(S / \sqrt{d}))
- saída (O = AV \in \mathbb{R}^{B \times T \times d})
Esboço mínimo no estilo PyTorch
import torch
B, T, d = 2, 4, 8
Q = torch.randn(B, T, d)
K = torch.randn(B, T, d)
V = torch.randn(B, T, d)
scores = Q @ K.transpose(-1, -2) # (B, T, T)
weights = torch.softmax(scores / d**0.5, dim=-1)
O = weights @ V # (B, T, d)
print(O.shape)
Este exemplo é “apenas álgebra linear + softmax”. Entender formas e transpostas aqui é a diferença entre implementar modelos com confiança e depurar por tentativa e erro. Para o contexto arquitetural completo, veja Arquitetura Transformer.
Onde a álgebra linear aparece na prática de IA
Incorporações e recuperação
- Busca por similaridade (similarity search) frequentemente usa produto escalar/similaridade do cosseno.
- Muitos métodos de incorporação aprendem implicitamente uma geometria em que certas direções codificam fatores semânticos.
- Avaliação e alinhamento frequentemente envolvem projeções, centralização e branqueamento (whitening) (ferramentas de SVD/PCA).
Modelos de aprendizado supervisionado
- Modelos lineares (regressão logística (logistic regression), regressão linear) são baseados em matrizes do começo ao fim.
- Redes profundas são composições de aplicações lineares e não linearidades; o treinamento é, em grande parte, sobre como essas aplicações transformam gradientes.
Modelagem probabilística e estatística
Álgebra linear é inseparável de estatística multivariada:
- matrizes de covariância (covariance matrices) (simétricas, semidefinidas positivas (positive semidefinite)),
- distância de Mahalanobis ( (x-\mu)^\top \Sigma^{-1} (x-\mu) ),
- condicionamento Gaussiano (Gaussian conditioning) e modelos Gaussianos lineares.
Veja Probabilidade e Estatística para o lado probabilístico.
Aprendizado baseado em grafos
Redes neurais em grafos (graph neural networks) e métodos espectrais usam:
- matrizes de adjacência (adjacency matrices),
- Laplacianos (Laplacians),
- propagação de mensagens (message passing) que pode ser escrita como multiplicações de matrizes.
Veja Teoria dos Grafos para fundamentos de grafos.
Perspectivas de informação e compressão
Aproximações de baixo posto e projeções são profundamente conectadas a compressão e eficiência de representação, relacionando-se a conceitos de Teoria da Informação.
Diretrizes práticas (o que importa em código real de ML)
1) Trate formas como contratos
Anote as formas de cada tensor em uma passagem direta (forward pass). Muitos bugs são erros de forma “silenciosos” que ainda produzem números.
Um hábito útil é anotar formas esperadas em comentários:
# X: (B, d_in), W: (d_out, d_in), b: (d_out,)
Y = X @ W.T + b # (B, d_out)
2) Evite inversas explícitas de matrizes
Prefira:
solve(A, b)em vez deinv(A) @ blstsqpara mínimos quadrados- decomposições estáveis (QR/SVD/Cholesky) quando aplicável
Isso melhora a estabilidade numérica e o desempenho.
3) Saiba quando você está em um regime numérico ruim
Matrizes mal condicionadas podem causar:
- treinamento instável,
- ativações explosivas/desaparecentes,
- soluções não confiáveis para problemas de mínimos quadrados.
Condicionamento é um tema central em Álgebra Linear Numérica.
4) Use normalização de forma intencional
Normalizar incorporações (norma unitária) muda a geometria de similaridade (produto escalar ↔ similaridade do cosseno). Normalizar ativações (LayerNorm, BatchNorm) muda a dinâmica de otimização ao controlar escala.
5) Explore estrutura: esparsidade e baixo posto
Muitos problemas se tornam tratáveis quando você reconhece estrutura:
- matrizes esparsas (grafos, saco de palavras (bag-of-words), alguns sistemas de recomendação),
- aproximações de baixo posto (compressão, acelerações, remoção de ruído (denoising)),
- estrutura em blocos (atenção multi-cabeça (multi-head attention), operações agrupadas).
Um “checklist de álgebra linear” compacto para intuição em ML
Quando você vir uma expressão, pergunte:
- Quais são as formas? O que cada eixo significa?
- Que geometria está implícita? Similaridade por produto escalar? Distância euclidiana? Projeção?
- O que a transformação está fazendo? Esticar/encolher (valores singulares), rotacionar (partes ortogonais), colapsar dimensões (posto)?
- É estável? Estamos evitando inversas explícitas? Condicionamento é uma preocupação?
- Posso reescrever para ser mais rápido? Multiplicação de matrizes em lote, operações fundidas (fused ops), fatoração de baixo posto, esparsidade?
Álgebra linear não é apenas matemática pré-requisito — é a linguagem operacional de sistemas de IA. Quando você lê vetores como representações e matrizes como transformações aprendidas, arquiteturas de modelos ficam menos misteriosas: elas são pipelines cuidadosamente projetados de operações geométricas treinadas via otimização.