13장 — 열 방정식과 확산

불안정한 문제: 거꾸로 가는 열 방정식

흔들려 찍힌 사진을 선명하게 되살리는 편집 기능도, 흐린 이미지에서 출발해 선명한 이미지를 만드는 생성 모델도 퍼진 것을 거꾸로 되돌리려 한다. 앞으로 가는 동안 무늬마다 e^(−Dk²t)로 줄어든다면, 나중 모양의 무늬마다 e^(+Dk²t)를 곱해 처음 모양을 되찾을 수 있지 않을까?

거꾸로 가면 자라는 무늬

앞으로 가는 동안에는 촘촘한 무늬일수록 빨리 사라졌는데, 시간을 거꾸로 돌리면 이 순서가 뒤집힌다. 거꾸로 가는 열 방정식에서 무늬는 e^(+Dk²t)로 자라고, 가장 빨리 사라졌던 촘촘한 무늬가 가장 빨리 커진다. D = 1/2, t = 8이면 파수 1, 2, 3, 5인 무늬가 각각 55배, 8.9 × 10⁶배, 4.3 × 10¹⁵배, 2.7 × 10⁴³배로 커진다. 수학적으로는 나중 모양이 처음 모양을 하나로 정하지만, 앞으로 가는 동안 파수 3인 무늬는 e^(−36) ≈ 2.3 × 10⁻¹⁶배로 줄어 배정밀도 부동소수점의 반올림 오차보다 작아진다. 그 뒤로 이 무늬의 기록은 반올림 오차에 묻히고, 거꾸로 돌리면 그 오차가 10¹⁵배 넘게 부풀어 답을 덮는다. 격자를 촘촘히 할수록 더 큰 파수가 들어오므로 오히려 더 빨리 망가진다. 이처럼 자료의 작은 오차가 답에서 한없이 커지는 문제를 불안정한 문제 (자료를 조금만 바꿔도 답이 크게 바뀌는 문제, ill-posed problem)라 하며, 거꾸로 가는 열 방정식이 그 대표적인 예다.

앞으로 갈 때와 거꾸로 갈 때의 배율(D = 1/2, t = 8). 앞으로 가는 동안 파수 k인 무늬는 e^(−Dk²t)배가 되어(아래 곡선) k ≈ 3에서 배정밀도 반올림 오차 2.2 × 10⁻¹⁶ 밑으로 가라앉는다. 거꾸로 돌리면 같은 무늬가 e^(+Dk²t)배로 부풀어(위 곡선), 그 아래로 가라앉았던 반올림 오차가 1보다 크게 키워진다.
앞으로 갈 때와 거꾸로 갈 때의 배율(D = 1/2, t = 8). 앞으로 가는 동안 파수 k인 무늬는 e^(−Dk²t)배가 되어(아래 곡선) k ≈ 3에서 배정밀도 반올림 오차 2.2 × 10⁻¹⁶ 밑으로 가라앉는다. 거꾸로 돌리면 같은 무늬가 e^(+Dk²t)배로 부풀어(위 곡선), 그 아래로 가라앉았던 반올림 오차가 1보다 크게 키워진다.

ML에서: 열 퍼짐을 거꾸로 돌리는 생성 모델

리사넨, 헤이노넨, 솔린(2023)은 열 퍼짐을 되돌리는(inverse heat dissipation) 생성 모델에서 열 방정식을 다른 공간에서 돌렸다. 데이터 공간에서 분포를 퍼뜨리는 대신, 이미지 한 장을 2차원 평면 위의 온도 분포로 보고 픽셀 평면에서 열 방정식을 돌린 것이다. 앞으로 가면 이미지가 점점 흐려져 결국 평균 색 하나만 남고, 모델은 이것을 거꾸로 돌리는 법을 배워 이미지를 만든다. 논문 요약은 열 방정식을 「이미지의 2차원 평면에서 돌리면 촘촘한 규모의 정보를 국소적으로 지우는 편미분 방정식」이라 소개한다. 거꾸로 가는 열 방정식은 불안정하므로, 그들은 앞으로 가는 과정에 작은 잡음을 더하고 되돌리는 과정을 확률적으로 만들었다. 이 장을 마친 독자라면 이 모델이 굵은 윤곽과 색부터 그리고 가는 무늬를 나중에 채우는 이유를 푸리에 모드가 줄어드는 순서에서 곧바로 읽을 수 있다. 가장 늦게 사라진 무늬가 가장 먼저 돌아오는 것이다. 같은 논문 요약은 보통의 확산 모델에도 「굵은 것에서 가는 것으로」 가는 성향이 숨어 있음을 스펙트럼 분석으로 보였다. 자연 이미지는 촘촘한 무늬일수록 크기가 작아서, 모든 파수에 같은 크기로 더해지는 잡음이 촘촘한 무늬부터 덮기 때문이다.

문제 9. 조금만 퍼뜨렸다면

처음 분포가 ±2에 봉우리를 둔 두 봉우리 분포(각 표준편차 0.5)이고, D = 1/2로 이번에는 t = 2까지만 퍼뜨렸다. 봉우리는 아직 둘이지만 낮고 넓어졌다. (가) t = 2의 밀도에서 푸리에 성분마다 e^(Dk²t)를 곱해 처음 분포를 되찾을 수 있는가? (나) 파수가 큰 무늬를 잘라 내고 되돌린다면 어디까지 살릴 수 있고, 그때 x = 2의 밀도는 참값 0.399에 얼마나 다가가는가? (다) 같은 분포를 t = 8까지 퍼뜨렸다면 살릴 수 있는 파수의 경계는 어디로 옮겨 가는가?

이서연 S11
이서연

열 방정식은 시간으로 한 번만 미분한 식이니까 초기값만 주면 해가 하나로 정해져요. t = 2면 봉우리도 아직 둘이고 많이 퍼지지도 않았으니, 시간을 거꾸로 2만큼 풀면 되지 않을까요?

김민준 M04
김민준

제가 해 볼게요. 간격 0.05로 800칸, 푸리에 성분마다 e^(Dk²t)를 곱해서 되돌리면… nan이 나왔어요. 계산이 넘쳤나 봐요.

선생님 T14
선생님

가장 촘촘한 무늬의 배율을 계산해 봐요.

김민준 M05
김민준

격자에서 가장 큰 파수가 π/0.05 = 62.8이니까 e^(0.5 × 62.8² × 2)… 지수가 3,900이 넘어요. 이건 수가 아니네요.

이서연 S06
이서연

그런데 이상하다. 수학적으로는 해가 하나로 정해져야 하잖아.

선생님 T14
선생님

정해지긴 해요. 문제는 앞으로 가는 동안 무슨 일이 있었느냐예요.

이서연 S09
이서연

앞으로 갈 때 파수 k인 무늬는 e^(−Dk²t)배가 됐으니까, t = 2에서는 k = 6일 때 e^(−36) ≈ 2.3 × 10⁻¹⁶배예요. 배정밀도 반올림 오차보다 작아요. 아, 6보다 촘촘한 무늬의 기록은 이미 반올림 오차에 묻혀 버렸구나. 되돌릴 때는 그 오차를 10¹⁵배 넘게 키우는 거고요.

김민준 M04
김민준

그럼 큰 파수는 버리고 되돌리면 되잖아요. 4보다 큰 파수를 버리면 x = 2에서 0.381, 5보다 큰 걸 버리면 0.395, 6이면 0.400이에요. 참값 0.399에 거의 다 왔어요. 조금 더 욕심내서 7까지 살리면… −70이요. 가장 작은 값은 −141이고요.

이서연 S07
이서연

6을 넘자마자 무너지네. 6까지만 살려도 거의 맞았던 건 처음 분포에서 6보다 촘촘한 무늬가 원래 1%쯤으로 작았기 때문이고.

선생님 T02
선생님

경계가 6이 된 까닭을 식으로 적으면, t = 8일 때는 어디가 될까요?

이서연 S08
이서연

e^(−Dk²t)가 e^(−36)이 되는 파수니까 Dk²t = 36, k = √(36/(Dt))예요. t = 2면 6, t = 8이면 3이에요. 퍼뜨린 시간이 네 배면 살릴 수 있는 파수는 절반이라, t = 8에서는 3보다 촘촘한 무늬를 다 잃고 봉우리를 뭉툭하게밖에 못 되찾아요.

이서연 S07
이서연

많이 자르면 가는 정보를 못 되찾고, 덜 자르면 폭발하고. 해가 하나라는 것과 그 해를 구할 수 있다는 건 다른 얘기네요.

선생님 T14
선생님

풀 수 있는 문제가 되려면 해가 있고, 하나뿐이고, 자료를 조금 바꾸면 해도 조금만 바뀌어야 해요. 서연 학생이 말한 유일성은 앞의 두 조건만 말해 주고, 거꾸로 가는 열 방정식은 세 번째 조건을 어겨요. 자르는 자리를 6에서 7로 조금만 옮겨도 답이 0.4에서 −70으로 뛰었죠.

김민준 M07
김민준

복사하고 또 복사한 흐린 종이로 원본 글씨를 되살리는 거네요. 흐린 걸 진하게 하면 글씨보다 복사기 먼지가 먼저 진해지는 것처럼요. 몇 번 안 거친 복사본이면 그래도 꽤 읽히고요.