top of page
Buscar

Resolvendo Equações Diferenciais com PINNs: Uma Comparação com Redes Neurais Tradicionais

Atualizado: 10 de mar.



Introdução

Equações diferenciais parciais (PDEs) são fundamentais em modelar fenômenos físicos, como a difusão de calor, a dinâmica de fluidos e a eletrodinâmica. A resolução dessas equações pode ser desafiadora, especialmente quando as condições de contorno e os domínios são complexos. Métodos tradicionais de resolução, como diferenças finitas e elementos finitos, podem se tornar computacionalmente intensivos.


Redes Neurais como Solução

Redes neurais têm sido utilizadas para aproximar funções complexas e resolver problemas que envolvem grandes volumes de dados. Recentemente, surgiu um novo método denominado PINNs (Physics-Informed Neural Networks), que integra princípios físicos diretamente no treinamento das redes neurais, oferecendo uma abordagem promissora para resolver PDEs.


O que são PINNs e como funcionam?

PINNs são uma classe de redes neurais que incorporam as leis físicas governantes, expressas como equações diferenciais, na função de perda da rede. Isso permite que a rede não só aprenda a partir dos dados, mas também respeite as leis físicas inerentes ao problema.


Ao invés de apenas minimizar o erro entre a predição da rede e os dados observacionais (MSE), as PINNs minimizam a violação das equações diferenciais (PDE), bem como das condições de contorno (BC), através de termos adicionados na função de perda. Isso resulta em soluções que são fisicamente consistentes.


 

Apresentação do Problema: Equação de Poisson Unidimensional

Vamos considerar a equação de Poisson unidimensional, que é uma PDE clássica:


em que x está entre 0 e 1. Além disso, vamos considerar as condições de controno de Dirichlet:


Para este exemplo, vamos considerar


Assim, a solução analítica para esta PDE é:


 

Comparação: PINN vs Redes Neurais Tradicionais

Vamos agora construir as redes neurais, e treina-las para melhor aproximarem a solução da equação de Poisson apresentada acima. Utilizaremos Python para arquitetar e construir as redes.


Importação das bibliotecas:

  • tensorflow: Biblioteca para construir e treinar modelos de redes neurais.

  • numpy: Biblioteca para manipulação eficiente de arrays e operações numéricas.

  • matplotlib.pyplot e matplotlib.animation: Bibliotecas para criar e animar gráficos.


Função para a Solução Analítica da Equação de Poisson:

Geração dos Dados:

  • Cria 100 pontos igualmente espaçados entre 0 e 1, convertendo-os para um array de coluna (shape (100,1) ) e o tipo float32.


Função para Gerar Dados Observacionais:

  • Gera dados de entrada x e saídas correspondentes u usando a solução analítica para um número especificado de pontos (num_points).


Definição do Modelo de Rede Neural PINN:

  • Definimos uma rede neural com duas camadas ocultas (hidden1 e hidden2) com 20 neurônios cada, usando a função de ativação tanh, e uma camada de saída (out).


Função de Perda para a PINN:

  • Calcula a perda da PINN, incluindo o erro da equação diferencial parcial (PDE) e das condições de contorno (boundary conditions, BC). Usa GradientTape para calcular as derivadas.


Inicialização e Treinamento da PINN:

  • Inicializa o modelo PINN e o otimizador Adam. Define o número de épocas de treinamento e uma lista para armazenar as perdas.


Definição do Modelo de Rede Neural Tradicional:

  • Define uma rede neural tradicional similar à PINN, com duas camadas ocultas e uma camada de saída.


Inicialização o Modelo Tradicional:

  • Inicializa o modelo tradicional e o otimizador Adam. Define uma lista para armazenar as perdas.


Função de Perda Tradicional (MSE):

  • Calcula o erro quadrático médio (MSE) entre as predições do modelo tradicional e os dados observacionais.


Treinamento e Criação do GIF:

  • Configura os gráficos para visualizar as predições da PINN e da rede neural tradicional. Adiciona as linhas da solução verdadeira e define os limites dos eixos.


Função de Inicialização e Atualização para a Animação:

  • Inicializa os dados para a animação, preparando as linhas dos gráficos.

  • Atualiza os modelos e os gráficos a cada iteração. Calcula as perdas, atualiza os pesos dos modelos e ajusta as linhas dos gráficos.


Criação da Animação:

  • Cria a animação usando FuncAnimation, salva o GIF e fecha a figura.


Resultados:

Vamos examinar os resultados e comparar o desempenho entre a PINN e a rede tradicional.



As PINNs se mostraram uma ferramenta poderosa para resolver PDEs, integrando diretamente as leis físicas no treinamento da rede. Comparadas às redes neurais tradicionais, as PINNs produzem soluções que são mais precisas e fisicamente consistentes, especialmente quando há falta de dados observacionais. Isso faz das PINNs uma escolha promissora para uma ampla gama de problemas em engenharia e ciências físicas.







 
 
 

Comments


Commenting has been turned off.
bottom of page