Redes Neurais Informadas por Física
Visão geral
Redes Neurais Informadas pela Física (Physics-Informed Neural Networks, PINNs) são uma família de métodos que usam Redes Neurais para aproximar soluções de equações diferenciais parciais (partial differential equations, PDEs; EDPs) e problemas correlatos com restrições, incorporando a física conhecida ao objetivo de treinamento. Em vez de aprender apenas a partir de pares entrada–saída rotulados, PINNs exploram:
- Equações governantes (governing equations) (por exemplo, leis de conservação, relações constitutivas)
- Condições de contorno (boundary conditions, BCs) e condições iniciais (initial conditions, ICs)
- Dados de medição (measurement data) opcionais (ruidosos e/ou esparsos)
A ideia central é simples: representar a solução desconhecida (u(x,t)) (e, às vezes, parâmetros desconhecidos) com uma rede neural e, então, penalizar violações da EDP e das restrições na função de perda (loss function). O treinamento usa Retropropagação, com diferenciação automática (automatic differentiation, autodiff) fornecendo as derivadas necessárias para avaliar resíduos da EDP.
PINNs são especialmente atraentes quando:
- Dados são escassos ou caros (experimentos, simulações de alta fidelidade)
- Restrições de EDP são conhecidas e confiáveis
- O domínio é irregular ou de alta dimensão (onde malhas são difíceis)
- Você quer um único modelo substituto diferenciável (differentiable surrogate) para simulação, inferência e otimização
Configuração de problema restrito por EDP
Um problema direto típico de EDP é:
[ \mathcal{F}\big(x,t,u,\nabla u,\nabla^2 u,\dots;\theta\big)=0,\quad (x,t)\in \Omega ]
com condições de contorno e iniciais como:
[ \mathcal{B}(x,t,u,\nabla u)=0,\quad (x,t)\in \partial\Omega,\qquad u(x,0)=u_0(x) ]
Aqui:
- (u) é o campo desconhecido (escalar ou vetorial)
- (\Omega) é o domínio espaço-temporal (ou apenas espacial para problemas estacionários)
- (\theta) pode incluir parâmetros físicos (difusividade, viscosidade, módulos elásticos), às vezes desconhecidos
Uma PINN aproxima (u) com uma rede neural:
[ u_\phi(x,t) \approx u(x,t) ]
onde (\phi) são pesos treináveis.
Formulação central de PINNs: “física na perda”
Perda baseada em resíduo (residual-based loss)
Defina o resíduo da EDP (PDE residual) em um ponto ((x,t)):
[ r_\phi(x,t) = \mathcal{F}\big(x,t,u_\phi,\nabla u_\phi,\nabla^2 u_\phi,\dots;\theta\big) ]
Então o objetivo de treinamento tipicamente combina múltiplos termos:
[ \mathcal{L}(\phi) = \lambda_{pde},\mathbb{E}{(x,t)\sim \Omega}\left[|r\phi(x,t)|^2\right]
- \lambda_{bc},\mathbb{E}{(x,t)\sim \partial\Omega}\left[| \mathcal{B}\phi(x,t)|^2\right]
- \lambda_{ic},\mathbb{E}{x\sim \Omega_0}\left[|u\phi(x,0)-u_0(x)|^2\right]
- \lambda_{data},\mathbb{E}{(x,t)\sim \mathcal{D}}\left[|u\phi(x,t)-\hat{u}|^2\right] ]
Isso normalmente é implementado amostrando conjuntos finitos de pontos:
- Pontos de colocalização (collocation points) no interior para o resíduo da EDP
- Pontos de contorno/iniciais para os termos de condições de contorno/condições iniciais
- Medições rotuladas opcionais (\mathcal{D})
O treinamento então usa variantes de Descida do Gradiente (frequentemente Adam seguido de métodos quasi-Newton (quasi-Newton methods) como L-BFGS).
Restrições suaves vs. rígidas
PINNs normalmente impõem restrições de uma entre duas formas:
Restrições suaves (soft constraints) (método de penalidade (penalty method))
Adiciona erros de condições de contorno/condições iniciais à perda (mais comum).- Prós: fácil de implementar; flexível
- Contras: balancear os pesos da perda pode ser difícil; as restrições podem ser violadas se forem pouco ponderadas
Restrições rígidas (hard constraints) (solução tentativa (trial solution) / arquitetura com restrições (constrained architecture))
Constrói (u_\phi) de modo que as condições de contorno/condições iniciais sejam satisfeitas por construção. Exemplo para uma condição de contorno de Dirichlet (Dirichlet BC) 1D (u(0,t)=a), (u(1,t)=b):[ u_\phi(x,t)=a(1-x)+bx + x(1-x),N_\phi(x,t) ]
onde (N_\phi) é uma rede neural não restrita.
- Prós: garante as restrições exatamente
- Contras: pode ser complicado para geometrias complexas ou condições de Neumann/condições mistas (mixed conditions)
Na prática, muitos fluxos de trabalho usam restrições suaves com ponderação cuidadosa ou estratégias adaptativas.
Diferenciação automática para resíduos de EDP
Para avaliar (r_\phi(x,t)), você precisa de derivadas como (u_t), (u_x), (u_{xx}) etc. PINNs dependem de diferenciação automática, que pode computar derivadas exatas da saída da rede em relação às entradas (até erro de ponto flutuante).
Por que a diferenciação automática é central
- Evita ruído de derivadas por diferenças finitas (finite-difference)
- Funciona em qualquer dimensão
- Mantém todo o solucionador diferenciável (útil para problemas inversos e controle ótimo)
Considerações práticas
- Derivadas de ordem superior (higher-order derivatives) podem ser caras e numericamente delicadas (por exemplo, (u_{xxxx}), derivadas parciais mistas).
- Funções de ativação importam: ativações suaves (por exemplo,
tanh,sin,softplus) frequentemente funcionam melhor para EDPs do que ReLU, que não é duas vezes diferenciável. - Fique atento a patologias de gradiente (gradient pathologies): termos do resíduo da EDP podem causar otimização rígida e gradientes conflitantes entre componentes da perda.
Frameworks comumente usados: PyTorch, JAX, TensorFlow. Muitas bibliotecas de PINN encapsulam esses frameworks (por exemplo, DeepXDE, NVIDIA Modulus).
Estratégias de colocalização e amostragem
PINNs aproximam integrais/esperanças usando pontos amostrados. Essa amostragem pode dominar o desempenho.
Conjuntos comuns de pontos
- Amostragem aleatória uniforme (uniform random sampling) no domínio
- Amostragem por hipercubo latino (Latin Hypercube Sampling, LHS) para melhor cobertura em dimensões moderadas
- Sequências quase aleatórias (quasi-random sequences) (Sobol, Halton) para melhor preenchimento do espaço
- Grades estruturadas (structured grids) quando o domínio é simples (pode melhorar a estabilidade)
Amostragem adaptativa (adaptive sampling) (refinamento baseado em resíduo (residual-based refinement))
Uma melhoria frequente é adicionar pontos de forma adaptativa onde o resíduo da EDP é grande:
- Treinar em um conjunto inicial de pontos de colocalização
- Avaliar o resíduo em um conjunto candidato
- Reamostrar mais pontos onde (|r_\phi|) é alto
- Continuar o treinamento
Isso se assemelha a um indicador de erro em métodos numéricos clássicos e frequentemente ajuda com choques, camadas-limite e fenômenos localizados.
Ideias de currículo e continuação
Relacionado a Aprendizado por Currículo, alguns fluxos de trabalho com PINNs aumentam gradualmente a dificuldade:
- Começar com amostragem grosseira e depois refinar
- Começar com horizontes de tempo menores e depois expandir (“PINNs com marcha no tempo (time marching PINNs)”)
- Aumentar os pesos de perda no resíduo da EDP após ajustar restrições/dados
Considerações de treinamento e pontos de dor comuns
Balanceamento e ponderação de perdas
PINNs são problemas multiobjetivo: resíduo da EDP, condições de contorno/condições iniciais e termos de dados podem ter escalas muito diferentes. Uma ponderação ruim pode levar a:
- Bom ajuste no contorno, mas baixa satisfação da EDP (ou vice-versa)
- Convergência lenta ou estagnação
Abordagens comuns:
- Ajuste manual dos pesos (\lambda)
- Normalização (normalization) de entradas/saídas e termos de resíduo
- Pesos adaptativos (adaptive weights) baseados em magnitudes de gradiente (por exemplo, equalizando normas de gradiente entre termos)
- Otimizadores/agendas separados para termos diferentes (menos comum, mas às vezes útil)
Otimizadores (optimizers): Adam + L-BFGS é uma receita clássica
Um padrão amplamente usado:
- Rodar Adam para exploração e redução rápida da perda
- Trocar para L-BFGS para convergência mais rápida a um ótimo local (quando funciona)
Ressalva: L-BFGS pode consumir muita memória e ser sensível a ruído de batch; funciona melhor com treinamento relativamente estável em batch completo ou batches grandes.
Viés espectral e mapeamentos de características
Perceptrons multicamadas (multilayer perceptrons, MLPs) padrão frequentemente aprendem primeiro componentes de baixa frequência (“viés espectral (spectral bias)”), o que pode prejudicar problemas com gradientes acentuados ou soluções de alta frequência. Mitigações práticas:
- Características de Fourier (Fourier features) / embeddings sinusoidais (sinusoidal embeddings) das entradas
- Redes sinusoidais no estilo SIREN (SIREN-style sinusoidal networks) (em alguns cenários)
- Decomposição de domínio (domain decomposition) (treinar redes separadas em subdomínios)
- Arquiteturas com conexões de atalho (skip connections) para facilitar a otimização (do tipo ResNet (ResNet-like))
EDPs rígidas (stiff PDEs) e física multiescala (multi-scale physics)
PINNs podem ter dificuldades com:
- Coeficientes muito pequenos/grandes (por exemplo, escoamentos com alto número de Reynolds)
- Camadas-limite finas
- Formação de choques (descontinuidades)
Mitigações incluem:
- Adimensionalização (non-dimensionalization) / escalonamento (scaling)
- Amostragem adaptativa perto das camadas
- Uso de formas fracas/variacionais (weak/variational forms) (veja abaixo)
- Métodos híbridos (hybrid methods) que combinam solucionadores clássicos com modelos substitutos de PINN
Exemplo prático: PINN para a equação do calor 1D
Considere a equação do calor 1D em (x\in[0,1]), (t\in[0,T]):
[ u_t = \alpha u_{xx} ]
com condição inicial: (u(x,0)=\sin(\pi x)) e condições de contorno: (u(0,t)=u(1,t)=0).
Uma PINN modela (u_\phi(x,t)). O resíduo é:
[ r_\phi(x,t) = u_t(x,t) - \alpha u_{xx}(x,t) ]
Abaixo está um esboço mínimo no estilo PyTorch (ilustrativo, não pronto para produção):
import torch
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, width=64, depth=4):
super().__init__()
layers = [nn.Linear(2, width), nn.Tanh()]
for _ in range(depth - 1):
layers += [nn.Linear(width, width), nn.Tanh()]
layers += [nn.Linear(width, 1)]
self.net = nn.Sequential(*layers)
def forward(self, x, t):
xt = torch.cat([x, t], dim=1) # shape (N,2)
return self.net(xt)
def gradients(y, x):
return torch.autograd.grad(
y, x, grad_outputs=torch.ones_like(y),
create_graph=True, retain_graph=True
)[0]
alpha = 0.1
model = MLP()
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
# Sample collocation points (interior)
Nf = 5000
x_f = torch.rand(Nf, 1, requires_grad=True)
t_f = torch.rand(Nf, 1, requires_grad=True)
# Boundary points
Nb = 500
t_b = torch.rand(Nb, 1)
x0 = torch.zeros(Nb, 1)
x1 = torch.ones(Nb, 1)
# Initial points
Ni = 500
x_i = torch.rand(Ni, 1)
t0 = torch.zeros(Ni, 1)
for step in range(2000):
opt.zero_grad()
# PDE residual
u = model(x_f, t_f)
u_t = gradients(u, t_f)
u_x = gradients(u, x_f)
u_xx = gradients(u_x, x_f)
r = u_t - alpha * u_xx
loss_pde = (r**2).mean()
# Boundary loss
u0 = model(x0, t_b)
u1 = model(x1, t_b)
loss_bc = (u0**2).mean() + (u1**2).mean()
# Initial loss
ui = model(x_i, t0)
u0_true = torch.sin(torch.pi * x_i)
loss_ic = ((ui - u0_true)**2).mean()
loss = loss_pde + loss_bc + loss_ic
loss.backward()
opt.step()
Em uma implementação real, você normalmente adicionaria:
- Escalonamento de entrada (por exemplo, mapear (x,t) para ([-1,1]))
- Amostragem melhor (Sobol/LHS, refinamento adaptativo)
- Ponderação da perda ou balanceamento adaptativo
- Um otimizador de segunda etapa como L-BFGS
Problemas inversos (inverse problems): aprender parâmetros desconhecidos a partir de dados + física
PINNs lidam naturalmente com identificação de parâmetros (parameter identification): trate parâmetros físicos desconhecidos como variáveis treináveis (trainable variables) junto com os pesos da rede.
Exemplo: se (\alpha) na equação do calor é desconhecido, defina (\alpha=\texttt{torch.nn.Parameter}(\cdot)) e inclua-o no otimizador. O termo do resíduo da EDP conduz (\alpha) a valores consistentes tanto com a física quanto com os dados observados.
Casos de uso típicos:
- Estimar campos de permeabilidade em escoamento no subsolo
- Inferir parâmetros constitutivos em mecânica dos sólidos
- Identificar taxas de reação em cinética química
Essa combinação de “física + dados esparsos” é um dos cenários mais atraentes para PINNs.
Aplicações comuns
Dinâmica de fluidos (Navier–Stokes e além)
- Reconstrução de campos de velocidade/pressão a partir de sensores esparsos (por exemplo, cenários tipo PIV)
- Assimilação de dados (data assimilation) e inferência de parâmetros (por exemplo, viscosidade)
- Modelagem com modelos substitutos para escoamentos em geometrias complexas (frequentemente com decomposição de domínio)
Turbulência em alto número de Reynolds continua desafiadora para PINNs “vanilla”; amostragem, arquiteturas e hibridização especializadas frequentemente são necessárias.
Transferência de calor e difusão
- Condução estacionária e transiente
- Difusão anisotrópica em materiais
- Identificação de parâmetros térmicos a partir de medições limitadas
Esses frequentemente são bons problemas “iniciais” de PINN porque a EDP é suave e bem comportada.
Mecânica dos sólidos
- Elasticidade linear e campos de deslocamento/tensão
- Identificação inversa do módulo de Young ou parâmetros de dano
- Acoplamento multifísico (multi-physics coupling) (termoelasticidade)
Eletromagnetismo e ondas
- Equações de Maxwell (domínio do tempo/frequência)
- Propagação de ondas acústicas e elásticas
- Espalhamento e problemas inversos de fontes
Problemas de ondas frequentemente exigem características de Fourier ou arquiteturas especializadas devido a soluções oscilatórias.
Geociências e clima
- Escoamento de água subterrânea, transporte de contaminantes
- Modelos reduzidos (reduced models) para inversão restrita por EDP (PDE-constrained inversion)
- Assimilação de dados com restrições físicas
Modelagem biomédica
- Fluxo sanguíneo (frequentemente em modelos simplificados)
- Modelos de difusão e reação em tecidos
- Estimativa de parâmetros fisiológicos sob restrições de EDP
Variantes e extensões de PINNs
PINNs têm muitas extensões para lidar com fraquezas conhecidas:
- PINNs variacionais/em forma fraca (variational/weak-form PINNs): impõem a física via integrais contra funções teste (pode melhorar a robustez e reduzir requisitos de ordem das derivadas).
- PINNs conservativas (conservative PINNs): projetam perdas/arquiteturas que preservam melhor leis de conservação (massa, momento, energia).
- PINNs com decomposição de domínio (domain decomposition PINNs): treinam múltiplas PINNs em subdomínios com condições de interface (ajuda no escalonamento e no comportamento multiescala).
- PINNs de multifidelidade (multi-fidelity PINNs): combinam simulações grosseiras com dados esparsos de alta fidelidade.
- PINNs com quantificação de incerteza (uncertainty-aware PINNs): abordagens bayesianas ou de ensemble (ensemble approaches) para quantificar incerteza (útil quando os dados são ruidosos ou há incompatibilidade do modelo).
Essas abordagens frequentemente importam mais do que o tamanho bruto da rede.
Quando PINNs funcionam bem (e quando não funcionam)
Pontos fortes
- Aproximação livre de malha (mesh-free) para domínios complexos
- Forma natural de incorporar estrutura conhecida de EDP
- Funciona com medições esparsas/ruidosas (a física atua como regularizador (regularizer))
- Produz modelos substitutos diferenciáveis para otimização/controle a jusante
Limitações
- O treinamento pode ser instável e sensível a hiperparâmetros (hyperparameters) (pesos, amostragem, escalonamento)
- EDPs rígidas/multiescala podem derrotar formulações ingênuas
- Derivadas de alta ordem podem ser caras e numericamente desafiadoras
- Não há garantia de convergência comparável à de solucionadores clássicos sem um projeto cuidadoso
Uma regra prática: PINNs frequentemente são melhores como ferramentas híbridas—para problemas inversos, modelagem com modelos substitutos e assimilação de dados—do que como substituições imediatas (drop-in replacements) de solucionadores maduros de EDPs em todo regime.
Dicas práticas de ferramentas
- Comece com formas bem escalonadas e adimensionais de EDP.
- Normalize entradas/saídas; mantenha valores próximos de (\mathcal{O}(1)).
- Use ativações suaves (
tanh,softplus) e considere características de Fourier para soluções oscilatórias. - Monitore termos de perda separados (EDP vs. condições de contorno/condições iniciais vs. dados) e normas de gradiente para diagnosticar desbalanceamento.
- Use amostragem adaptativa quando resíduos se localizarem.
- Considere um otimizador em duas etapas (Adam e depois L-BFGS) para muitos problemas suaves.
- Para problemas grandes, trate isso como Treinamento em Escala: fazer profiling dos custos de diferenciação automática, usar batching de pontos de colocalização e gerenciar memória se tornam críticos.
Resumo
Redes Neurais Informadas pela Física transformam a resolução de EDPs em um problema de otimização (optimization problem): uma rede neural aproxima a solução, enquanto a função de perda penaliza violações das equações governantes e das condições de contorno/iniciais (e, opcionalmente, ajusta dados medidos). A diferenciação automática torna viável computar as derivadas necessárias para os resíduos da EDP, enquanto escolhas cuidadosas sobre imposição de restrições, amostragem de colocalização, ponderação de perdas e otimização frequentemente determinam o sucesso.
PINNs são uma ponte poderosa entre computação científica (scientific computing) e aprendizado profundo (deep learning)—particularmente valiosa para problemas inversos e cenários em que a física é conhecida, mas os dados rotulados são limitados—porém exigem um projeto de treinamento cuidadoso para lidar com rigidez, fenômenos multiescala e restrições complexas.