Featured image of post Decomposição em Valores Singulares (SVD): Decompondo Qualquer Matriz em Rotações e Escalonamento para Compressão de Dados e IA

Decomposição em Valores Singulares (SVD): Decompondo Qualquer Matriz em Rotações e Escalonamento para Compressão de Dados e IA

Um guia abrangente sobre os fundamentos matemáticos, a intuição geométrica e as aplicações da Decomposição em Valores Singulares (SVD) na compressão de imagens e NLP.

Uma das ferramentas mais importantes e poderosas na álgebra linear é a Decomposição em Valores Singulares (SVD). Essa técnica, que pode decompor qualquer matriz em operações fundamentais, sustenta o núcleo das tecnologias modernas, como ciência de dados, machine learning e processamento de imagens.

Neste artigo, explicaremos a SVD em detalhes, começando por sua definição matemática até seu significado geométrico e, finalmente, suas aplicações práticas na compressão de dados e IA.

1. Definição Matemática da SVD

Qualquer matriz real $m \times n$, denotada como $A$, pode ser decomposta no produto de três matrizes da seguinte forma:

$$A = U \Sigma V^T \quad (\text{Decomposição em Valores Singulares da matriz})$$

Aqui, cada matriz tem as seguintes propriedades:

  • $U$ é uma matriz ortogonal $m \times m$. Seus vetores coluna são chamados de vetores singulares esquerdos .
  • $\Sigma$ é uma matriz diagonal $m \times n$. Os elementos diagonais $\sigma_i$ são chamados de valores singulares , geralmente classificados em ordem decrescente $\sigma_1 \ge \sigma_2 \ge \dots \ge 0$.
  • $V^T$ é a transposta de uma matriz ortogonal $V$ de $n \times n$. Os vetores coluna de $V$ são chamados de vetores singulares direitos .

Como propriedade de matrizes ortogonais, $U^T U = I$ e $V^T V = I$ se mantêm. Essa é a maior força da SVD, pois permite que uma matriz complexa $A$ seja decomposta em matrizes ortogonais e diagonais que são matematicamente fáceis de manusear.

2. Diferença para a Decomposição de Autovalores

Para matrizes quadradas, a decomposição de autovalores $A = P \[Lambda](https://kenji.blog/pt/p/serverless-architecture-aws-lambda-cold-start/) P^{-1}$ é bem conhecida. No entanto, essa decomposição tem as seguintes limitações:

  • Ela só pode ser aplicada a matrizes quadradas ($n \times n$).
  • Mesmo que seja uma matriz quadrada, nem sempre é diagonalizável.

Por outro lado, a Decomposição em Valores Singulares sempre existe para qualquer matriz $m \times n$, mesmo que não seja quadrada. Essa é uma das razões pelas quais a SVD é extremamente útil na análise de dados.

3. Intuição Geométrica: Rotação e Escalonamento

Um dos aspectos mais bonitos da SVD é sua interpretação geométrica. Ela implica que qualquer transformação linear $A$ pode ser decomposta nas três etapas simples a seguir.

  graph LR
    X["Vetor de entrada x"] -->|"Rotação por V^T"| V_vec["Vetor rotacionado"]
    V_vec -->|"Escalonamento por Sigma"| S_vec["Vetor escalonado"]
    S_vec -->|"Rotação por U"| Y["Vetor de saída Ax"]
  1. Rotação por $V^T$ : Rotaciona o vetor usando uma transformação ortogonal.
  2. Escalonamento por $\Sigma$ : Estica ou encolhe o vetor ao longo de cada eixo de coordenada pelo fator do valor singular $\sigma_i$.
  3. Rotação por $U$ : Por fim, rotaciona o vetor novamente no espaço transformado.

Em outras palavras, por mais complexa que pareça uma transformação, ela basicamente pode ser reduzida a um processo de “rotacionar, escalonar e rotacionar novamente”.

4. Aproximação de Baixo Posto (Teorema de Eckart-Young-Mirsky)

A maior aplicação da SVD é a aproximação de baixo posto . Como os valores singulares de uma matriz $A$ são classificados em ordem decrescente, os valores singulares pequenos podem ser considerados como representantes de ruído ou de informações sem importância.

Ao extrair apenas os primeiros $k$ valores singulares e seus vetores singulares correspondentes, podemos criar uma matriz de posto $k$, $A_k$, que aproxima a matriz original $A$.

$$A \approx A_k = U_k \Sigma_k V_k^T \quad (\text{Aproximação ideal de posto } k)$$

De acordo com o teorema de Eckart-Young-Mirsky, essa $A_k$ é a matriz de aproximação ideal que minimiza o erro com a matriz original $A$.

5. Exemplo de Aplicação 1 em Python: Compressão de Imagens

Uma imagem pode ser representada como uma matriz de valores de pixels. Ao realizar a aproximação de baixo posto usando SVD, podemos reduzir significativamente o tamanho dos dados, mantendo a qualidade visual.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import matplotlib.pyplot as plt
from skimage import data
from skimage.color import rgb2gray

# Carregar imagem e converter para tons de cinza
image = rgb2gray(data.astronaut())

# Executar a decomposição em valores singulares
U, S, VT = np.linalg.svd(image, full_matrices=False)

# Comprimir a imagem usando os primeiros k valores singulares
k = 50
compressed_image = np.dot(U[:, :k], np.dot(np.diag(S[:k]), VT[:k, :]))

# Exibir a imagem original e a comprimida
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.title("Original Image")
plt.imshow(image, cmap='gray')

plt.subplot(1, 2, 2)
plt.title(f"Compressed Image (k={k})")
plt.imshow(compressed_image, cmap='gray')
plt.show()

Neste código, usamos apenas 50 de milhares de valores singulares originais, mas as principais características da imagem são firmemente preservadas.

6. Exemplo de Aplicação 2: Análise Semântica Latente (LSA)

A SVD também é usada no campo do Processamento de Linguagem Natural (NLP) como Análise Semântica Latente (LSA).

  graph TD
    Doc["Matriz documento-termo A"] -->|"Aplicar SVD"| Decomp["Matrizes decompostas"]
    Decomp -->|"Selecionar os primeiros k"| LowRank["Espaço semântico de baixa dimensão"]
    LowRank -->|"Calcular semelhança"| Sim["Descobrir relações palavra/documento"]

Aqui, a SVD é aplicada a uma matriz em que as linhas representam palavras e as colunas representam documentos. Isso nos permite capturar os “tópicos latentes” por trás das palavras, e não apenas correspondências superficiais.

7. Pseudoinversa de Moore-Penrose

A SVD também é útil ao encontrar a solução para um sistema de equações lineares. Mesmo que a matriz $A$ não seja uma matriz quadrada, podemos obter a solução dos mínimos quadrados calculando a pseudoinversa de Moore-Penrose $A^+$.

$$A^+ = V \Sigma^+ U^T \quad (\text{Cálculo da pseudoinversa})$$

Isso torna possível encontrar soluções de forma estável para regressão linear em machine learning.

8. Conclusão

A Decomposição em Valores Singulares (SVD) é uma técnica poderosa que decompõe qualquer matriz em três elementos simples: “rotação”, “escalonamento” e “rotação”. Compreender o contexto matemático da SVD será o primeiro passo para compreender profundamente os algoritmos de machine learning.

comments powered by Disqus