Aprendizaje Profundo Aplicado a la Física y los Fluidos

Aplicación del Aprendizaje Profundo en Física y Fluidos

Las simulaciones numéricas se han utilizado durante años para comprender el comportamiento de los sistemas físicos; cómo interactúan los fluidos con una estructura, cómo se deforma una geometría bajo estrés, o incluso la distribución térmica en condiciones de calentamiento. Aplicadas en los dominios más diversos como el aeroespacial, automotriz, energético, etc., estos cálculos permiten dimensionar prototipos y garantizar procesos seguros sin tener que construirlos. No obstante, pueden ser computacionalmente costosos y llevar muchas horas, días o incluso semanas. Ahí es donde Machine Learning, y específicamente Deep Learning, brilla, ¡abreviando el tiempo de procesamiento a solo minutos!

Simulaciones de Dinámica de Fluidos Computacional

Una simulación numérica común puede describir sistemas físicos mediante la resolución de un conjunto de Ecuaciones en Derivadas Parciales (EDP), que típicamente tienen la forma:

𝐹 representa el operador diferencial sobre el dominio Ω ∈ ℝ, límites 𝜕Ω y parámetros 𝑞. La solución 𝑠(𝑥, 𝑡) del sistema depende de las coordenadas espaciales y el tiempo, con subíndices que denotan derivadas parciales. El conjunto de ecuaciones se puede resolver discretizando el dominio físico en partes pequeñas (elementos finitos o volúmenes finitos) para obtener un sistema linealizado. Este enfoque encuentra una aplicación particular en la dinámica de fluidos.

En la dinámica de fluidos, el sistema se representa principalmente mediante las ecuaciones de Navier-Stokes, un conjunto de leyes sin resolución analítica que describe el comportamiento de cada fluido basado en los balances de masa y fuerza. En una forma 2D más simple, se pueden describir como:

Donde 𝑢 es la velocidad a lo largo del eje x, 𝑣 es la velocidad en y, 𝑝 es la presión, 𝜌 es la densidad y 𝜈 es la viscosidad.

Las simulaciones de Dinámica de Fluidos Computacional (CFD) consisten en resolver el sistema linealizado discretizado junto con sus condiciones de contorno, como la presión y la velocidad en los límites del dominio, mediante métodos de solución iterativa de multigrid. Los métodos directos son impracticables para aplicaciones del mundo real, donde la inversión de la matriz para una cuadrícula cartesiana 3D y equiespaciada (i³ elementos) alcanza una complejidad de i⁷.

Incluso con solucionadores eficientes que funcionan en un entorno paralelo de HPC, el costo computacional de estas operaciones puede llevar muchas horas y ser perjudicial para un proceso de ingeniería dinámico. ¿La solución? ¡Como vemos cada vez más, la IA!

Modelos sustitutos

Cuando existe una posible relación de entrada-salida, la IA surge como candidata para modelar dicho comportamiento. Este escenario se alinea perfectamente con la CFD, donde la configuración geométrica, parametrizada como una cuadrícula y sus elementos, además de las condiciones de contorno, se pueden vincular a la salida: los campos físicos (presión, velocidad, etc.) en cada punto de la cuadrícula. Los modelos construidos pueden actuar como solucionadores sin malla que pueden reemplazar los simuladores tradicionales con un menor costo computacional.

De manera general, queremos aprender la asignación entre los parámetros de las EDP (𝑥, 𝑞, 𝑡): 𝑋 ∈ ℝⁿ y su solución 𝑠(𝑥, 𝑡): 𝑌 ∈ ℝⁿ. En otras palabras, nuestro objetivo es encontrar la función predictiva 𝐺: (𝑥, 𝑞, 𝑡) → 𝑠(𝑥, 𝑡) donde 𝑡 a veces se encuentra constante (análisis de estado estacionario). Así, podemos imaginar diferentes formas de hacerlo.

Modelos simplificados

El enfoque más sencillo para modelar la relación es simplificarla reduciendo la dimensionalidad de los datos. Este método se puede aplicar tanto a la entrada como a la salida. Por ejemplo, en lugar de utilizar las coordenadas completas de los puntos de la cuadrícula, podemos representar la geometría previamente descrita con un conjunto reducido de parámetros, denotados como 𝑘 ∈ N | 𝑘 < n. Un engranaje tiene un número de dientes, un radio primitivo, un ancho, etc.

Para la salida, una opción viable es una métrica de rendimiento global denotada como s(𝑘) ∈ N. Ejemplos son las fuerzas que actúan sobre el prototipo, el coeficiente de arrastre y sustentación, etc.

La ventaja de las simplificaciones es que nos permite aplicar modelos de IA más básicos y rápidos. Incluso se podría utilizar una regresión lineal/polimonial sin mayores problemas para aprender la función 𝐺: k → 𝑠(k).

El inconveniente es que, al reducir la dimensionalidad de esta manera, se produce una pérdida intrínseca de información y los modelos se vuelven menos generalizables cuando se enfrentan a datos fuera del espacio de diseño.

Modelos volumétricos

En lugar de reducir la dimensionalidad de los datos, podemos optar por trabajar con la rejilla volumétrica original (𝑌 ∈ ℝⁿ), lo cual introduce una mayor complejidad y requiere el uso de técnicas de aprendizaje profundo.

Cuando se trabaja con una rejilla no estructurada, un enfoque común implica interpolarla en una malla estructurada uniforme. Características esenciales como la velocidad de flujo libre y la presión se pueden incrustar en cada voxel, lo que permite realizar predicciones correspondientes. En consecuencia, las regiones sin fluido se representan como valores nulos, codificando así la geometría.

Esta representación basada en voxels facilita el uso de una técnica comúnmente empleada en tareas de reconocimiento de imágenes: la convolución. Las Redes Neuronales Convolucionales (CNNs) pueden extraer características locales y globales mediante su enfoque de filtrado. Se pueden lograr diferentes escalas de extracción de características mediante la integración de etapas diferentes, lo que lleva a modelos cada vez más complejos, incluyendo u-nets y auto-encoders/decoders.

En lugar de transformar los datos desordenados a la forma ordenada de voxels/imágenes, otra solución implica codificar activamente las coordenadas. Esto permite describir los datos en formato tabular, donde cada punto se asocia con el índice correspondiente de la simulación/ejemplo. Como veremos en la próxima sección, ¡esto es lo que hace pytorch geometric!

Aunque es teóricamente posible entrenar y aplicar un modelo a cada punto, este enfoque normalmente no captura las relaciones entre nodos críticas para determinar la información local. Aquí es donde entran en juego las Redes Neuronales de Grafos, que constituyen otra clase de modelos diseñados para abordar esta limitación.

Modelos geométricos

En CFD a menudo nos interesa determinar los campos físicos no en el volumen, sino en la superficie. Esto lleva a considerar estrategias de construcción de modelos. Si bien el método de voxelización mencionado anteriormente ha mostrado resultados prometedores, su aplicación para representar nubes dispersas de puntos correspondientes a la geometría requiere la creación de una rejilla estructurada uniforme. Sin embargo, esto se vuelve impráctico para geometrías intrincadas, ya que conlleva costos computacionales innecesarios debido a la inclusión de información irrelevante alrededor de la forma, o una pérdida de información valiosa debido a una rejilla gruesa.

Una solución más eficiente es ofrecida por el campo del Aprendizaje Profundo Geométrico, que es conocido principalmente por su éxito en el reconocimiento de objetos y la segmentación semántica. Este enfoque está estrechamente relacionado con las Redes Neuronales de Grafos y trata directamente una Nube de Puntos, que es un conjunto no ordenado de puntos, describiendo los datos como una tabla de coordenadas e índices como mencionamos en la última sección. ¡Afortunadamente, eso es exactamente lo que tenemos con una malla no estructurada!

Para describir los datos en este formato, podemos usar pytorch geometric, una extensión del avanzado framework pytorch diseñada para GNNS y modelos geométricos. También contiene una serie de conjuntos de datos de grafos que podemos utilizar, como AirfRANS⁴, un conjunto de datos de alas NACA 2D para simulaciones RANS. Veamos brevemente cómo se traduce esto en código real:

from torch_geometric.datasets import AirfRANSfrom matplotlib import pyplot as pltdataset = AirfRANS(root='/tmp/AirfRANS', task='full', train=True)  # Descargosejemplo = dataset[0]fig, ax = plt.subplots(figsize=(12,5))ax.set_aspect('equal', adjustable="datalim")# Dibuja la Nube de Puntos utilizando las coordenadas x, y y la Presión como colormim = ax.scatter(*example.pos.T, s=0.5, c=example.y[:, 2]) fig.colorbar(im, ax=ax)

Con una comprensión de la naturaleza del conjunto de datos, surge la pregunta: ¿Cómo podemos entrenar modelos utilizando esto? Lo transformamos a la forma descrita anteriormente con un poco de ayuda de Pytorch Geometric. El DataLoader nos permite recorrer el conjunto de datos en mini-lotes gracias al atributo batch, un vector que asigna cada nodo a su respectivo gráfico en el lote. Esto resulta crucial para utilizar funciones de agregación en cada simulación, como veremos más adelante.

from torch_geometric.loader import DataLoader# No estamos diferenciando entre conjuntos de datos de entrenamiento y prueba, sino que solo estamos analizando el dataloader = DataLoader(dataset, batch_size=2)  # Lote de 2 simulacionesfor data in loader:  # Recorre el conjunto de datos, devolviendo los lotes    print(data), print(data.batch)    break>>> DataBatch(x=[351974, 5], y=[351974, 4], pos=[351974, 2], surf=[351974], name=[2], batch=[351974], ptr=[3])>>> tensor([0, 0, 0,  ..., 1, 1, 1])

Habiendo establecido la descripción de los datos, ¿qué tipos de modelos son adecuados? Pytorch geometric ofrece una variedad de capas neurales y operaciones predefinidas que pueden ser muy útiles. Uno de los más tradicionales es, quizás, PointNet¹. Uno de los pioneros en el campo, esta arquitectura propuesta en 2017 introdujo dos ventajas importantes que hasta hoy en día son muy importantes.

La clave del éxito de Pointnet radica en su operación de pooling. Al condensar la información de toda una simulación en un solo vector, captura información global y permite la transición de múltiples puntos a un valor global singular. Esto aborda de manera efectiva el problema, por ejemplo, de aplicar un modelo a un solo punto y no poder cambiar las dimensiones del modelo. En otras palabras, consideraremos el conjunto de datos 𝐷 = {Dᵢ | i ∈ N, 1 ≤ i ≤ m}, donde m es el número total de simulaciones. Podemos definir para cada simulación Dᵢ el conjunto de puntos X = {Xⱼ(pⱼ, fⱼ) | j ∈ N , 1 ≤ i ≤ n}. El vector de características concatenado (pⱼ, fⱼ) ∈ ℝʰ | h ∈ N. De esta manera, el pooling realiza la siguiente transformación:

Esto es necesario para tareas de clasificación donde la Nube de Puntos debe reducirse a un solo valor o vector. Otra ventaja del pooling es la incorporación de información global en cada punto, útil en tareas de segmentación. El vector de información global se puede concatenar a los vectores de características de cada punto, aumentando su dimensión. De esta manera, el modelo aplicado a cada punto no solo tendrá su información puntual, sino una idea general de todo el ejemplo. Formalmente, considerando z como el número total de puntos en el conjunto de datos no estructurados, las operaciones que realiza la arquitectura Pointnet se pueden describir de manera simplificada:

Donde se aplica el mismo MLP a cada punto/fila y las columnas representan las características.

Se propusieron modelos más complejos en la secuencia. Pointnet++², por ejemplo, propuso la idea de usar Pointnet en diferentes niveles jerárquicos. Este enfoque no solo concatena características globales, sino que también incorpora vectores que representan fenómenos a menor escala. Esto resulta especialmente valioso al abordar problemas de CFD. Por ejemplo, al simular un avión completo, surgen comportamientos distintos en diferentes componentes geométricos. Las alas exhiben fenómenos diferentes en comparación con las turbinas. Incluso a una escala más fina, existen variaciones entre la parte trasera y delantera de un ala, lo que lleva a distribuciones de presión características.

Las Redes Neuronales Gráficas generalizan los conceptos mencionados anteriormente al representar los datos como aristas y vértices, reflejando las relaciones entre los nodos. De esta manera, es equivalente a las CNN en el sentido de que agrega características locales, pero en lugar de utilizar una cuadrícula regular, se puede aplicar directamente a un conjunto desordenado de puntos.

Un GNN típico codifica un nodo como vértices (vⱼ = Xⱼ), teniendo sus coordenadas como características. La arista representa la conectividad entre nodos y codifica, por ejemplo, la distancia entre uno específico y sus vecinos (o fórmulas más complejas), por ejemplo, E = {(vᵢ, vⱼ) | ‖pᵢ, pⱼ‖₂ < r} siendo p las coordenadas, v los vértices vecinos i y j dentro de una distancia r.

Una vez que se calcula este grafo, se somete a actualizaciones iterativas para propagar información local, generando no linealidad e incrustaciones cada vez más complejas. Cuantas más actualizaciones se realicen, más información adquieren los nodos de alcances más lejanos del grafo. Se pueden construir diferentes arquitecturas de grafo definiendo la función de actualización, el número de actualizaciones, la forma en que se construye inicialmente el grafo, cómo se calculan los vecinos y muchos otros procedimientos intermedios posibles (por ejemplo, conexiones residuales o incluso un mecanismo de atención). Un procedimiento de actualización simple emplea funciones de agregación de la siguiente manera:

Donde 𝑓 es la función de agregación de un vértice en un vecindario, actualizado por la función no lineal 𝜎 , y 𝑔 la función para actualizar las aristas, como la distancia euclidiana que definimos anteriormente.

Un modelo generalizable también debe tener las características inductivas de ser invariante a la rotación, la traslación y la permutación. Una arquitectura de grafo clásica es GraphSage³. Su bajo costo computacional le permite entrenar eficientemente en datos geométricos con gran éxito. Utiliza la fórmula anterior especificando f como una operación de concatenación simple seguida de una multiplicación de matriz de pesos con Wᵏ. Los agregadores sugeridos, a su vez, son promedios o agrupación máxima; mientras que los vecinos se muestrean uniformemente con un tamaño fijo de todo el conjunto.

Además de los modelos más simples descritos, se han desarrollado arquitecturas de grafo más complejas y modernas en años posteriores y son un campo de investigación prometedor.

Representar la física

Ahora que hemos identificado modelos adecuados, surge la pregunta: ¿Cómo podemos incorporar de manera efectiva las características únicas de los sistemas físicos? Un enfoque comúnmente utilizado implica hacer cumplir las leyes físicas a través de restricciones suaves o métodos de penalización. Específicamente, las Redes Neuronales Informadas Físicamente (PINNs, por sus siglas en inglés) implementan esta estrategia penalizando el modelo utilizando el residuo de las EDP, lo que garantiza su adhesión precisa. Cuando se hace referencia a la CFD, estas son las ecuaciones de Navier-Stokes. Las derivadas parciales en cada ecuación se pueden calcular a partir de la predicción del modelo mediante AD utilizando el marco de Deep Learning. De manera similar, tanto las condiciones de contorno de Dirichlet como las de Neumann se pueden incorporar utilizando la misma metodología. En consecuencia, este enfoque conduce a un formato refinado para la función de pérdida:

Donde LG y LB representan, respectivamente, la pérdida de los datos y las condiciones de contorno, constituyendo una función supervisada con dos argumentos; Lᵣₑₛ es la función de residuo de la EDP; Xb y xb son los datos de entrada del modelo y la EDP en los puntos de las condiciones de contorno; B recupera los valores de las condiciones de contorno en sí mismos; G𝜃 es la función directa de la red con parámetros 𝜃.

En consecuencia, el modelo aprende a respetar tanto el equilibrio de presión como el de velocidad, y generaliza mejor a datos no vistos.

La expresión de pérdida destaca que las PINNs se pueden utilizar en un enfoque supervisado, basado en datos y física. No obstante, el término LG es opcional y la red se puede entrenar de manera no supervisada. Esto tendrá un espacio de soluciones mucho más grande. Dado que las predicciones iniciales son inherentemente aleatorias, optimizar la red resulta un desafío, y identificar un objetivo de búsqueda adecuado sigue siendo una pregunta abierta en Machine Learning. Se pueden imaginar varias soluciones, desde funciones de pérdida y estrategias de optimización alternativas hasta hacer cumplir las condiciones de contorno mediante una restricción rígida, donde un componente de la red debe cumplir directamente con los valores especificados.

Señales de alta frecuencia

Los modelos de Aprendizaje Profundo Geométrico han encontrado un desafío en términos de convergencia lenta y la dificultad para aprender funciones de alta frecuencia. Este fenómeno es particularmente prominente en la dinámica de fluidos, especialmente cuando se trata de flujos turbulentos. Para abordar esta preocupación, el campo de las Representaciones Neuronales Implícitas ofrece estrategias que resultan efectivas.

Estas transformaciones se basan en el hecho de que las redes profundas están sesgadas hacia el aprendizaje de funciones de baja frecuencia. En consecuencia, esas técnicas pueden ser útiles para mejorar la representación de funciones de alta frecuencia. Un ejemplo es la expansión mediante características de Fourier:

Emplear esta técnica con Redes Neuronales facilita el aprendizaje de funciones de alta frecuencia en dominios de problemas de baja dimensión como contextos geométricos. Ajustar el parámetro de frecuencia permite manipular el espectro de frecuencias que el modelo puede captar.

En términos prácticos, se logran mejores resultados al establecer aⱼ = 1 y seleccionar bⱼ de una distribución aleatoria. Se puede realizar un ajuste fino en la desviación estándar de esta distribución, generalmente gaussiana. Una distribución más amplia acelera la convergencia para los componentes de alta frecuencia, lo que conduce a mejores resultados (notablemente en tareas relacionadas con imágenes, lo que resulta en una mayor definición). Por otro lado, una distribución excesivamente amplia puede introducir artefactos en la salida (generando una imagen ruidosa), presentando un equilibrio entre el subajuste y el sobreajuste.

Un enfoque más moderno se puede lograr utilizando Redes de Representación Sinusoidal (SIRENs). Proponen funciones de activación periódicas en la forma:

Además de mejorar la representación de alta frecuencia, las SIRENs también son diferenciables. Esto sucede porque la derivada de una SIREN es en sí misma una SIREN, similar a cómo la derivada del seno es un coseno: un seno desplazado en fase. No todas las funciones de activación comunes tienen esta cualidad; por ejemplo, ReLU tiene una derivada discontinua y una segunda derivada igual a cero en todo momento. Algunas otras funciones sí tienen esta capacidad deseada, como Softplus, Tangente hiperbólica o ELU; sin embargo, sus derivadas pueden no ser bien comportadas y no representar los detalles finos buscados.

Por lo tanto, son adecuadas para representar problemas inversos, como las EDP en las que estamos tan interesados. Además, se demostró que las SIREN convergen más rápido que otras arquitecturas.

Para lograr los resultados deseados, es esencial un esquema de inicialización adecuado. Esta inicialización preserva la distribución de activación en toda la red para asegurar que la salida final sea independiente del número de capas. La solución radica en adoptar un esquema de inicialización uniforme de la siguiente manera:

, de modo que la entrada a cada unidad esté distribuida normalmente con una desviación estándar de 1. Además, la primera capa de la red debe abarcar varios períodos en el intervalo [-1, 1], lo cual se puede lograr utilizando ω₀ = 30 en sin(ω₀ ⋅ 𝑊𝑥 + 𝑏); este valor debe cambiarse según la frecuencia de la función modelada y el número de observaciones. La limitación de utilizar una sola frecuencia fue posteriormente tratada con lo que se llama SIRENs Moduladas.

Conclusión

Esperamos que ahora tenga una comprensión más clara de cómo el Aprendizaje Profundo puede crear modelos sustitutos para simulaciones numéricas, incluso al tratar con datos no estructurados y ruidosos. Mejorar la capacidad de generalización de la red se puede lograr mediante diversas técnicas. Estas van desde la incorporación de la física de las ecuaciones diferenciales parciales (EDP) subyacentes hasta el uso de Representación Neural Implícita, entre otras que no hemos tenido la oportunidad de explorar. Este campo de investigación dinámico está destinado a expandirse significativamente en los próximos años a medida que se vuelva más confiable. A pesar de su nombre, este enfoque no busca reemplazar las simulaciones numéricas. En cambio, ofrece una alternativa más rápida que aprovecha las propias simulaciones e incluso los datos experimentales. Si podemos combinar simulaciones de dinámica de fluidos, ecuaciones físicas y Aprendizaje Profundo, ¿por qué limitarnos a solo una de ellas?

Referencias

[1]: PointNet

C. R. Qi, H. Su, K. Mo, L. J. Guibas, PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation, arXiv:1612.00593 [cs]ArXiv: 1612.00593 (Abr. 2017). URL http://arxiv.org/abs/1612.00593

[2]: PointNet++

C. R. Qi, L. Yi, H. Su, L. J. Guibas, PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space, arXiv:1706.02413[cs] ArXiv: 1706.02413 (Jun. 2017). URL http://arxiv.org/abs/1706.02413

[3]: GraphSage

W. L. Hamilton, R. Ying, J. Leskovec, Inductive Representation Learning on Large Graphs, arXiv:1706.02216 [cs, stat]ArXiv: 1706.02216 (Sep. 2018). URL http://arxiv.org/abs/1706.02216

[4]: AirfRANS

F. Bonnet, A. J. Mazari, P. Cinnella, P. Gallinari, Airfrans: High fidelity computational fluid dynamics dataset for approximating reynolds averaged navier-stokes solutions (2023). arXiv:2212.07564.

[5]: Point-GNN

W. Shi, R. R. Rajkumar, Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud (2020) IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (2020): 1708–1716.

[6]: Scientific Machine Learning through Physics-Informed Neural Networks: Where we are and What’s next

S. Cuomo, V.S. Di Cola, F. Giampaolo, Scientific Machine Learning Through Physics–Informed Neural Networks: Where we are and What’s Next. J Sci Comput 92, 88 (2022). https://doi.org/10.1007/s10915-022-01939-z

[7]: Learning differentiable solvers for systems with hard constraints

G. Negiar, M.W. Mahoney, A.S. Krishnapriyan, Learning differentiable solvers for systems with hard constraints (2022). ArXiv, abs/2207.08675.