PINN: 물리 법칙을 손실함수에 넣기
데이터만으로 배우면 생기는 문제
기계학습의 기본 방식은 이렇다. 예시를 많이 보여주고, 그 예시들에 잘 맞는 규칙을 찾게 한다.
물리 문제에 적용하면 이렇게 된다. (조건, 답) 짝을 수만 개 보여주고, 조건에서 답을 내는 규칙을 배우게 한다.
이 방식은 어느 정도 작동한다. 그런데 문제가 있다.
배운 규칙이 물리 법칙을 지킬 이유가 없다.
모델은 “본 예시들과 비슷하게 답하는 방법”을 배운다. 물리를 이해한 것이 아니다. 그래서 본 적 없는 조건이 들어오면 물리적으로 말이 안 되는 답을 낸다.
열이 차가운 쪽에서 뜨거운 쪽으로 흐르는 답. 에너지가 어디선가 생겨나는 답. 20편에서 만든 검사에 걸리는 답들이다.
물리를 함께 가르치기
PINN(Physics-Informed Neural Network)의 발상은 여기서 나온다.
예시만 맞히게 하지 말고, 물리 법칙도 함께 지키게 한다.
어떻게 하는가. 학습의 원리를 잠깐 짚어야 한다.
기계학습은 “틀린 정도”를 숫자로 만들어 그것을 줄여가는 방식으로 진행된다. 그 숫자를 손실이라 부른다. 예측이 정답과 다를수록 손실이 크고, 모델은 손실을 줄이는 방향으로 조정된다.
PINN은 이 손실에 항목을 하나 더 붙인다.
기존 손실 = (예측 − 정답)의 크기
PINN 손실 = (예측 − 정답)의 크기 + (물리 법칙 위반의 정도)
두 번째 항목이 핵심이다. 모델이 낸 답을 미분방정식에 대입해 본다. 답이 물리적으로 옳다면 방정식이 만족되어 0에 가까운 값이 나온다. 틀리면 0에서 멀어진다.
그 벗어난 정도를 손실에 더한다. 그러면 모델은 정답을 맞히는 것과 물리를 지키는 것을 동시에 추구하게 된다.
왜 이게 강력한가
두 가지 이점이 있다.
① 정답 없이도 배울 수 있다.
물리 법칙 위반을 계산하려면 정답이 필요하지 않다. 모델의 예측만 있으면 된다. 그 예측을 방정식에 넣어보면 되니까.
그래서 정답이 붙은 데이터가 거의 없어도 학습이 가능하다. 경계조건만 주고 “물리를 만족하는 답을 찾아라”라고 하는 것에 가깝다.
② 본 적 없는 조건에서도 덜 이상해진다.
물리를 지키도록 훈련되었으므로, 학습 범위를 벗어난 조건에서도 최소한 물리적으로 말이 되는 답을 낼 가능성이 높아진다.
이건 21편의 표에서 말한 “위험”을 줄이는 방향이다.
그런데 우리 상황에서는 이점이 작다
정직하게 말하면, PINN의 첫 번째 이점이 우리에게는 크지 않다.
21편에서 봤듯 우리는 정답 데이터를 무한히 만들 수 있다. 전통 솔버를 돌리면 (조건, 답) 짝이 나온다. 정답이 부족한 상황이 아니다.
PINN이 정말 빛나는 것은 정답을 얻기 어려운 문제다. 실험 데이터가 조금밖에 없는 경우, 또는 전통 방법으로 푸는 것 자체가 아주 어려운 경우.
우리 문제는 전통 방법으로 잘 풀린다. 다만 매번 다시 푸는 것이 비싸다.
그럼 왜 다루나
두 가지 이유가 있다.
첫째, 아이디어가 우리 설계에 이미 들어 있다.
20편의 검증을 다시 보자. “에너지가 보존되는가”, “최대값이 제자리에 있는가”를 확인했다. 이건 물리 법칙으로 답을 채점하는 것이다.
PINN이 하는 일과 방향이 같다. 다만 PINN은 학습 중에 그것을 쓰고, 우리는 계산 후 검증에 쓴다.
그래서 24편에서 다룰 방식에도 이 아이디어를 결합할 수 있다. AI가 예측한 답을 물리 법칙으로 채점해서, 통과하지 못하면 쓰지 않는 것. 26편의 설계가 이 방향이다.
둘째, 교육적 가치가 있다.
우리 앱에는 학습용 모드가 있다. 물리를 배우는 사람에게 PINN은 흥미로운 대상이다. “물리 법칙이란 무엇인가”를 손으로 만지게 해주기 때문이다.
방정식을 손실에 넣고 학습시키면, 모델이 물리를 “발견하는” 과정이 눈에 보인다. 처음에는 엉망인 답에서 시작해 점점 물리적으로 그럴듯한 분포로 변해 간다.
이 과정을 보는 것은 방정식을 외우는 것과 다른 종류의 이해를 준다. 29편에서 다룰 교육 축의 한 부분이다.
PINN의 실제 한계
이 방식을 쓰려 할 때 부딪히는 현실적인 문제들도 정리해 두자.
학습이 어렵다. 두 가지 손실 항목의 균형을 맞추는 것이 까다롭다. 물리 항목에 너무 무게를 두면 정답을 못 맞히고, 너무 적게 두면 물리를 무시한다. 그리고 이 균형은 문제마다 다르다.
느리다. 학습 자체에 시간이 걸린다. 그리고 문제 조건이 바뀌면 대개 다시 학습해야 한다. 이게 결정적인 문제다.
우리 목적에는 이 점이 치명적이다. 우리가 원하는 것은 조건을 바꿔가며 열 번 시도하는 것이다. 조건마다 다시 학습해야 한다면 아무 이득이 없다. 전통 솔버로 푸는 것이 빠르다.
정확도가 전통 방법보다 낮은 경우가 많다. 특히 급하게 변하는 부분에서 그렇다.
그래서 어디에 쓰나
정리하면 이렇다.
| 용도 | 적합성 |
|---|---|
| 반복 계산 가속 | 부적합 — 조건마다 재학습 필요 |
| 정답이 희소한 문제 | 적합 — 우리 경우는 아님 |
| 검증에 물리 법칙 활용 | 적합 — 아이디어를 차용 |
| 교육·시각화 | 적합 — 물리를 눈으로 보게 함 |
우리 로드맵에서 PINN은 주력이 아니다. 앱에 학습·시각화 용도로 넣고, 그 아이디어를 검증 설계에 차용한다.
반복 계산 가속이라는 본래 목표에는 다른 접근이 필요하다. 조건이 바뀔 때마다 다시 배우지 않는 방법. 한 번 배우면 여러 조건에 쓸 수 있는 방법.
그런 방법이 있다. 그리고 그 방법의 이름에 푸리에가 들어간다.
다음 편 예고 — 왜 하필 푸리에인가. 200년 전의 수학이 왜 지금 AI와 만나는지, 그 발상의 핵심을 짚는다.