🔗 관련 문서: Wikipedia - Physics-Informed Neural Networks
PINN(Physics-Informed Neural Networks)은 물리 법칙을 신경망 학습 과정에 통합하여, 데이터와 물리학적 지식을 동시에 활용하는 혁신적인 인공지능 기법이다.
전통적인 딥러닝 모델은 순수하게 데이터에만 의존하여 학습하지만, PINN은 편미분방정식(PDE, Partial Differential Equation)과 같은 물리 법칙을 손실 함수에 포함시켜 학습한다. 이를 통해 적은 양의 데이터로도 물리적으로 타당한 예측을 수행할 수 있다.
PINN은 2019년 Raissi, Perdikaris, Karniadakis에 의해 제안되었으며, 과학 및 공학 문제 해결에서 데이터 기반 접근법과 물리 기반 접근법의 장점을 결합한 방법론으로 주목받고 있다.
기존의 딥러닝이 아무런 사전 지식 없이 데이터만을 보고 패턴을 찾는 '데이터 중심(Data-driven)' 방식이라면, PINN은 인공지능에게 "세상은 이러한 물리 법칙(편미분방정식)을 따른다"는 '상식'을 가르치는 기법이다.
예를 들어, 온도를 예측할 때 일반 AI는 데이터가 부족하면 엉뚱한 값을 내놓을 수 있으나, PINN은 "열은 높은 곳에서 낮은 곳으로 흐른다"는 열방정식을 학습 과정에 강제함으로써 물리적으로 타당한 결과를 도출한다.
신경망이 물리 법칙을 학습할 수 있게 만드는 핵심 기술이다. 이는 전통적인 수치 미분이나 기호 미분과는 차별화된 방식으로, 복잡한 물리 방정식(PDE)을 연산 그래프(Computational Graph) 내에서 정확하고 효율적으로 계산할 수 있게 해준다.
실제로 PyTorch나 TensorFlow 같은 프레임워크에서 u.backward() 또는 tape.gradient()를 호출하는 순간, 컴퓨터는 내부에 미리 그려놓은 연산 그래프를 따라가며 미분을 수행하게 된다.
| 구분 | PINN 자동 미분 | 일반 미분 |
|---|---|---|
| 정의 | 신경망의 연산 그래프를 기반으로 체인룰을 자동 적용하여 미분값을 계산 | 해석적 공식이나 수치적 근사(차분법 등)를 통해 미분값을 계산 |
| 계산 방식 | 역전파(backpropagation)와 동일한 메커니즘으로 기울기를 구함 | 공식 유도 또는 Δx를 이용한 근사 계산 |
| 정확도 | 기계 오차 외에는 근사 오차가 거의 없음 | 수치적 미분은 Δx 크기에 따라 근사 오차 발생 |
| 적용 범위 | 복잡한 신경망 구조와 PDE 제약 조건을 포함한 문제에 적합 | 단순 함수나 해석적으로 표현 가능한 경우에 적합 |
| 장점 | 고차 미분도 안정적으로 계산 가능, PINN에서 물리 법칙 제약을 쉽게 반영 | 직관적이고 간단하며, 신경망 외의 일반 함수에도 적용 가능 |
| 단점 | 신경망 구조와 연산 그래프가 필요, 계산량이 많을 수 있음 | 고차 미분이나 복잡한 함수에서는 근사 오차와 계산 불안정성 증가 |
복잡한 수학적 계산 과정을 노드(Node)와 엣지(Edge)로 이루어진 네트워크 형태로 시각화한 구조를 의미한다. PINN에서 자동 미분을 수행할 때, 컴퓨터는 우리가 입력한 수식을 이 그래프 형태로 변환하여 기억한다. 여기서 노드(Node)란 입력 변수(데이터)나 연산자(덧셈, 곱셈, $\sin$, $\exp$ 등)를 나타내고, 엣지(Edge)란 데이터가 흘러가는 통로를 의미하며, 한 노드의 결과값이 다음 노드의 입력값으로 전달되는 방향성을 가진다.
• 정의:
PINN에서 미분방정식(PDE)을 만족시키도록 강제하기 위해, 정의역(domain) 안에서 선택한 특정 좌표 지점들을 말한다.
• 역할:
신경망이 단순히 데이터를 맞추는 것뿐 아니라, 물리 법칙(예: PDE)을 만족하도록 학습하기 위해, 이 지점들에서 자동 미분을 통해 PDE 잔차(residual)를 계산한다.
• 자동 미분과의 관계:
PINN은 신경망 출력에 대해 $x$, $t$ 같은 독립변수에 대한 편미분을 자동 미분으로 구한다. 이때 collocation points에서 그 값을 평가하여 PDE 제약 조건을 손실 함수에 포함시킨다.
• 비유:
마치 시험 문제를 여러 위치에서 풀어보며 "법칙이 잘 적용되는지" 확인하는 체크포인트 같은 역할을 한다.
PINN은 물리 법칙(PDE)을 만족해야 하므로, 단순한 결과값뿐만 아니라 '미분값(변화율)'이 필수적이다. 이때 연산 그래프는 두 가지 경로로 활용된다.
PINN은 자동 미분(Automatic Differentiation) 기능을 활용하여 신경망 출력에 대한 편미분을 계산하고, 이를 통해 PDE 조건을 직접 학습 과정에 반영한다.
학습 과정에서 PINN은 다음 세 가지 조건을 동시에 만족시키려 한다:
❶ 데이터 일치:
관측된 데이터 포인트를 정확히 예측
❷ PDE 만족:
지배 방정식(governing equation)을 모든 영역에서 만족
❸ 경계 조건:
초기 조건 및 경계 조건 충족
PINN의 핵심은 손실 함수(Loss Function)의 구성에 있다. 일반적인 신경망의 손실 함수는 데이터 손실만 포함하지만, PINN은 여기에 물리 법칙 위반에 대한 페널티를 추가한다.
손실함수를 순차적이 아닌 동시 계산이 가능한 이유는 자동미분(Automatic Differentiation) 덕분이다. PyTorch나 TensorFlow 같은 프레임워크가 계산 그래프를 구성하여, 한 번의 순전파로 얻은 결과로부터 필요한 모든 도함수를 효율적으로 계산할 수 있다.
이러한 방식으로 PINN은 데이터와 물리 법칙을 동시에 학습하게 됩니다.
| 구분 | 전통적 기법 (FEM/FDM) | PINN (물리정보 신경망) |
|---|---|---|
| 데이터 의존도 | 방정식에만 의존 | 데이터 + 방정식 결합 |
| 격자(Mesh) 생성 | 필수적이며 복잡함 | 불필요 (Mesh-free) |
| 역문제 해결 | 매우 어려움 | 파라미터 추정 용이 |
PINN은 물리 법칙이 명확히 정의된 다양한 과학 및 공학 분야에서 활용되고 있다.
• 유체역학(Fluid Dynamics)
• 구조 역학(Structural Mechanics)
• 열전달(Heat Transfer)
• 생물의학(Biomedical Engineering)
• 기후 및 환경 과학
다음은 간단한 물리 방정식을 해결하기 위한 PINN의 기본 골격이다.
import torch
import torch.nn as nn
class PINN(nn.Module):
def __init__(self):
super(PINN, self).__init__()
self.net = nn.Sequential(
nn.Linear(1, 20), nn.Tanh(),
nn.Linear(20, 20), nn.Tanh(),
nn.Linear(20, 1)
)
def forward(self, x):
return self.net(x)
# 물리 법칙(PDE) 손실 계산 함수
def physics_loss(model, x):
x.requires_grad = True
u = model(x)
# 자동 미분을 통한 u_x (1차 미분) 계산
u_x = torch.autograd.grad(u, x, torch.ones_like(u), create_graph=True)[0]
# u_xx (2차 미분) 계산
u_xx = torch.autograd.grad(u_x, x, torch.ones_like(u_x), create_graph=True)[0]
# 예: u_xx = 0 이라는 물리 법칙을 만족해야 함
loss_pde = torch.mean(u_xx**2)
return loss_pde