곡면 위에서 속도를 말하려면

벡터장: 모든 점에 화살표 하나씩

지금까지는 한 점에 붙은 화살표 하나를 다뤘다. 그런데 바람은 한 곳에서만 불지 않는다. 매 점마다 화살표를 하나씩 골라 붙이면 무엇이 되고, 그렇게 붙이는 데 걸림돌은 없을까?

일기예보에서 보는 바람 지도를 생각해 보라. 지구 표면의 매 지점에 바람의 방향과 빠르기를 나타내는 화살표가 하나씩 붙어 있다.

지구 위의 바람 지도 — 매 지점에 풍속과 방향이 배정된 벡터장의 실제 예시
지구 위의 바람 지도 — 매 지점에 풍속과 방향이 배정된 벡터장의 실제 예시

이것이 바로 벡터장이다 — 매니폴드의 각 점 pp에서 접선공간 TpMT_pM의 원소를 하나 골라, 그것이 점에 따라 매끄럽게 변하도록 한 것이다.

바람 지도를 들여다보면 바람이 거의 멎은 곳이 늘 어딘가에 있다. 우연일까? 모공정리(Hairy Ball Theorem)라 불리는 정리에 따르면, 구면 위에서 모든 점에 0이 아닌 접선벡터를 연속적으로 배정하는 것은 불가능하다. 쉽게 말해, 털이 빽빽한 공을 아무리 빗어도 어딘가에는 머리의 가마처럼 털이 한 점을 중심으로 소용돌이치거나 곤두서는 곳이 생긴다. 그 점에서는 털이 누울 방향이 없으므로 벡터장이 0이 된다. 지구의 바람도 높이마다 한 겹의 구면 위 벡터장으로 보면, 어느 순간이든 수평으로는 바람이 멎은 곳이 적어도 한 곳 있다.

모공정리(Hairy Ball Theorem) — 구면 위의 벡터장은 반드시 영점을 가진다
모공정리(Hairy Ball Theorem) — 구면 위의 벡터장은 반드시 영점을 가진다

역사: 풀 수 없는 방정식의 그림을 그린 푸앵카레

행성 셋이 서로 끌어당기는 삼체 문제처럼, 천체의 운동 방정식은 대부분 해를 식으로 적을 수 없다. 앙리 푸앵카레(Henri Poincaré)는 1881년부터 1886년까지 네 편으로 나온 논문 「미분방정식이 정의하는 곡선에 관하여」에서 방향을 바꿨다. 해의 식을 구하는 대신, 평면이나 구면 위의 벡터장을 따라 흐르는 곡선들이 어떤 모양을 그리는지를 보기로 한 것이다. 모양을 가르는 열쇠는 화살표가 0이 되는 점이었다. 그는 이런 점을 둘레의 곡선 모양에 따라 매듭(사방으로 뻗어 나가거나 사방에서 모여드는 점), 초점(소용돌이치며 감기는 점), 안장(한쪽으로 들어와 다른 쪽으로 빠지는 점), 중심(빙빙 도는 점)으로 나눴다.

벡터장이 0이 되는 점의 세 가지 — 매듭(사방으로 뻗어 나감), 초점(소용돌이), 안장(한쪽으로 들어와 다른 쪽으로 빠짐). 영점을 부호까지 붙여 셀 때 매듭과 초점은 +1, 안장은 −1로 센다
벡터장이 0이 되는 점의 세 가지 — 매듭(사방으로 뻗어 나감), 초점(소용돌이), 안장(한쪽으로 들어와 다른 쪽으로 빠짐). 영점을 부호까지 붙여 셀 때 매듭과 초점은 +1, 안장은 −1로 센다

이 논문에서 그는 구면 위에서는 매듭과 초점을 더한 개수가 안장의 개수보다 언제나 2만큼 많다는 것을 보였다. 매듭이나 초점이 적어도 두 개 있으니, 구면 위의 벡터장에는 0이 되는 점이 반드시 있다. 1912년 브라우어르(L. E. J. Brouwer)가 이 결론을 모든 짝수 차원 구면으로 넓혔고, 1926년 호프(Heinz Hopf)는 영점을 부호까지 세어 더한 값이 벡터장이 아니라 공간의 모양만으로 정해진다는 것을 일반 매니폴드에서 보였다. 푸앵카레 자신은 뒤에 이 일을 돌아보며, 미분방정식의 곡선을 연구하고 그것을 천체역학의 방정식으로 넓히려다 보니 위치와 모양만 따지는 새 기하학이 필요해졌다고 적었다.

ML에서: 신경망이 배우는 벡터장

첸(R. T. Q. Chen) 등이 2018년 NeurIPS에 발표한 신경 상미분방정식(Neural ODE)은 층을 쌓는 대신, 은닉 상태 hh가 있는 곳마다 "지금 어느 쪽으로 얼마나 빨리 가라"는 화살표 f(h,t)f(h, t)를 신경망으로 배운다. 입력은 이 벡터장을 따라 흘러가 출력이 된다. 움직이는 것은 은닉 상태이고, 매 순간 그 점의 화살표를 속도로 삼는 곡선(벡터장의 적분곡선)이 곧 순전파다.

문제 13 — 추월 없는 외길

확인 추월할 수 없는 외길에서 모든 차가 자리마다 정해진 속도로만 달린다. 0 km 지점부터 10 km 지점까지는 시속 100 km, 10 km 지점부터는 시속 50 km다. 지금 차 A는 10 km 지점, 차 B는 0 km 지점에 있다. (가) B는 A를 따라잡는가? (나) 두 차 사이의 간격은 어떻게 변하는가?

같이 풀기 세션 13

김민준 M01
김민준

B가 두 배 빠르니까 간격 10 km를 시속 50 km 차이로 좁히면 0.2시간, 12분이면 따라잡아요.

선생님 T01
선생님

B가 10 km 지점에 닿는 건 언제고, 그때부터 B는 시속 몇 km로 달리죠?

김민준 M07
김민준

0.1시간 뒤에 닿는데, 그때부터는 B도 시속 50 km네요. A는 그동안 15 km 지점까지 갔으니까 간격은 5 km로 줄고, 그다음엔 계속 5 km예요. 못 따라잡아요.

이서연 S01
이서연

속도가 자리로만 정해지니까, 만약 B가 A와 같은 순간 같은 자리에 온다면 그 뒤로 둘은 똑같이 움직여야 해. 앞지르려면 먼저 한 자리에서 만나야 하는데, 만나는 순간 둘은 한 몸이 되는 거지. 이 외길에서는 차의 순서가 바뀌지 않아.

문제 14 — 털 난 공을 가마 없이 빗을 수 있을까

킬러 구면 위의 벡터장 X=∂θ\textcolor{#1f77b4}{X} = \textcolor{#1f77b4}{\partial_\theta}(모든 점에서 남쪽을 가리키는 길이 1인 화살표)는 어디서도 0이 아닌 것처럼 보인다. 이것은 모공정리의 반례인가? 도넛 모양의 곡면(토러스)에서는 어디서도 0이 아닌 벡터장을 만들 수 있는가?

같이 풀기 세션 14

김민준 M01
김민준

반례 같은데요. ∂θ\textcolor{#1f77b4}{\partial_\theta} 길이는 어디서나 1이잖아요. 구면좌표로 ∂θ=(cos⁡θcos⁡ϕ, cos⁡θsin⁡ϕ, −sin⁡θ)\textcolor{#1f77b4}{\partial_\theta} = (\cos\textcolor{#1b9e77}{\theta}\cos\textcolor{#1b9e77}{\phi},\ \cos\textcolor{#1b9e77}{\theta}\sin\textcolor{#1b9e77}{\phi},\ -\sin\textcolor{#1b9e77}{\theta})라 계산해 봐도 ∣∂θ∣=1|\textcolor{#1f77b4}{\partial_\theta}| = 1이었고요. 코드로 구면 위에 격자를 깔고 ∂θ\textcolor{#1f77b4}{\partial_\theta}를 다 그려 봐도 0인 화살표는 하나도 없었어요.

이서연 S01
이서연

격자가 극을 지나지는 않았지? 격자 점은 θ=0\textcolor{#1b9e77}{\theta} = 0을 피해서 잡는 경우가 많잖아.

선생님 T01
선생님

좋은 의심이에요. 민준 학생, 북극에서 ∂θ\textcolor{#1f77b4}{\partial_\theta}는 어느 쪽을 가리켜요?

김민준 M05
김민준

북극에서 남쪽이요… 그런데 북극에서는 모든 방향이 남쪽이네요. 경도 ϕ\textcolor{#1b9e77}{\phi}가 0이면 이쪽, ϕ\textcolor{#1b9e77}{\phi}가 π\pi면 반대쪽이라, 한 방향으로 정해지지가 않아요.

선생님 T01
선생님

그래요. ∂θ\textcolor{#1f77b4}{\partial_\theta}는 좌표가 무너지는 극에서 정의되지 않아요. 극에서 값을 정해 줄 수 없으니 구면 전체의 연속 벡터장이 아니고, 반례가 되지 못해요.

이서연 S01
이서연

그럼 sin⁡θ\sin\textcolor{#1b9e77}{\theta}를 곱한 sin⁡θ ∂θ\sin\textcolor{#1b9e77}{\theta}\,\textcolor{#1f77b4}{\partial_\theta}는 극에서 길이가 0으로 줄어드니까 연속으로 이어 붙일 수 있어. 대신 극에서 0이 되니 정리가 말하는 영점이 거기 있네. 그러니까 이 정리는 결국 닫힌 곡면이면 어디서나 성립하는 거죠? 닫혀 있으면 어딘가에 가마가 생긴다고요.

선생님 T01
선생님

도넛은 닫힌 곡면이죠. 도넛을 빗어 볼까요?

이서연 S06
이서연

도넛에서는… 가로 방향으로 한 바퀴 도는 화살표를 모든 점에 붙이면 끝나네요. 어디서도 0이 아니고 연속이에요. 반례가 있어요. 닫힌 곡면이라고 다 되는 게 아니군요.

선생님 T01
선생님

그래서 정리는 "짝수 차원 구면"에 대해서만 말해요. 서연 학생이 만든 sin⁡θ ∂θ\sin\textcolor{#1b9e77}{\theta}\,\textcolor{#1f77b4}{\partial_\theta}를 세어 볼까요? 가마는 북극과 남극 두 곳이에요. 북극에서는 화살표가 사방으로 뻗어 나가고 남극에서는 사방에서 모여드니, 둘 다 매듭이라 +1씩, 합이 2예요. 이 합은 어떻게 빗어도 같고, 곡면을 다각형으로 나눠 「꼭짓점 − 모서리 + 면」으로 센 오일러 수와 같아요. 구면을 정육면체처럼 나누면 8−12+6=28 - 12 + 6 = 2, 도넛은 0이에요. 0이면 가마 없이 빗을 수 있는 거죠.

김민준 M07
김민준

결국 제 코드는 격자 때문에 "문제의 점"을 안 본 거였네요. 과제 테스트 케이스에서 경계값을 빼 먹고 “다 통과했어요” 했다가 조교님 채점 스크립트에서 0점 나온 적 있어요.

이서연 S01
이서연

나는 선형대수의 홀짝 이야기가 떠올라. 홀수 차원 실행렬은 반드시 실수 고윳값이 있지만 짝수 차원이면 없을 수도 있잖아. 조건 하나(차원, 모양)를 바꾸면 결론이 뒤집히니까, 정리를 쓸 때는 가정부터 봐야겠어.

문제 15 — 1과 −1을 맞바꾸는 신경 ODE

계산 1차원 은닉 상태 hh를 신경 상미분방정식 dh/dt=f(h,t)dh/d\textcolor{#6a7a00}{t} = f(h, \textcolor{#6a7a00}{t})로 흘려서, 시각 t=0\textcolor{#6a7a00}{t} = 0에 1이던 hh는 t=1\textcolor{#6a7a00}{t} = 1에 −1-1로, −1-1이던 hh는 1로 보내고 싶다(ff는 매끄러운 신경망). (가) 이런 ff가 있는가? (나) 은닉 상태를 2차원 (h1,h2)(h_1, h_2)로 늘리고 벡터장 f(h1,h2)=(−h2, h1)f(h_1, h_2) = (-h_2,\ h_1)을 따라 시각 π\pi까지 흘리면, (1,0)(1, 0)과 (−1,0)(-1, 0)은 어디로 가는가?

같이 풀기 세션 15

김민준 M01
김민준

신경망은 충분히 크면 뭐든 근사하잖아요. ff를 잘 배우면 되겠죠.

선생님 T01
선생님

두 은닉 상태가 시각 0부터 1까지 지나는 길을 시간 축 위에 그려 볼까요? 하나는 1에서 −1-1로, 하나는 −1-1에서 1로 가요.

이서연 S06
이서연

두 길의 차 g(t)=ha(t)−hb(t)g(\textcolor{#6a7a00}{t}) = h_a(\textcolor{#6a7a00}{t}) - h_b(\textcolor{#6a7a00}{t})가 2에서 −2-2로 끊김 없이 가니까, 중간값 정리로 g=0g = 0인 순간이 있어요. 그 순간 둘은 같은 자리에 있고, 벡터장은 한 시각 한 자리에 화살표를 하나만 주니까 그 뒤로는 똑같이 움직여야 해요. 끝에서 −1-1과 1로 갈라질 수가 없어요.

김민준 M07
김민준

아까 외길이랑 같네요. 1차원 은닉 상태가 추월 없는 외길이었어요. 신경망이 아무리 커도 ff가 한 자리에 화살표 하나를 주는 한 순서는 못 바꿔요.

선생님 T01
선생님

(나)는요?

김민준 M01
김민준

이 벡터장은 점을 원점 둘레로 돌리는 회전이라 시각 π\pi면 반 바퀴예요. solve_ivp로 풀어도 (1,0)(1, 0)은 (−1,0)(-1, 0)으로, (−1,0)(-1, 0)은 (1,0)(1, 0)으로 가요. 둘째 칸으로 비켜 돌아가니까 서로 부딪히지 않고 자리를 바꿔요.

선생님 T01
선생님

그래요. 뒤퐁(E. Dupont) 등이 2019년 NeurIPS 논문 「Augmented Neural ODEs」에서 바로 이 1과 −1-1의 예로 신경 ODE가 나타낼 수 없는 함수가 있음을 보이고, 은닉 상태에 빈 차원을 덧붙이는 처방을 냈어요.

이서연 S01
이서연

도넛에서는 구면에서 안 되던 빗질이 됐던 것처럼, 공간의 모양이나 차원을 바꾸면 안 되던 일이 되네요.