벡터장: 모든 점에 화살표 하나씩
지금까지는 한 점에 붙은 화살표 하나를 다뤘지만, 바람은 한 곳에서만 불지 않는다. 매 점마다 화살표를 하나씩 골라 붙이면 무엇이 되고, 그렇게 붙이는 데 걸림돌은 없을까?
일기예보에서 보는 바람 지도를 생각해 보면, 지구 표면의 매 지점에 바람의 방향과 풍속을 나타내는 화살표가 하나씩 붙어 있다.

바람 지도처럼 매니폴드의 각 점
- 벡터장 (바람 지도 / Vector Field): 매니폴드 위의 매 점에 벡터를 하나씩 매끄럽게 배정한 것. 일기예보의 바람 지도처럼, 공간의 모든 곳에 화살표가 붙어 있다. 형식적으로는 점마다 그 점의 접선공간에서 화살표 하나를 고르는 매끄러운 함수, 곧 단면(section)
.
바람 지도를 들여다보면 바람이 거의 멎은 곳이 늘 어딘가에 있는데, 이것은 우연일까? 모공정리(Hairy Ball Theorem)라 불리는 정리에 따르면, 구면 위에서 모든 점에 0이 아닌 접선벡터를 연속적으로 배정하는 것은 불가능하다. 쉽게 말해, 털이 빽빽한 공을 아무리 빗어도 어딘가에는 머리의 가마처럼 털이 한 점을 중심으로 소용돌이치거나 곤두서는 곳이 생긴다. 그 점에서는 털이 누울 방향이 없으므로 벡터장이 0이 된다. 지구의 바람도 높이마다 한 겹의 구면 위 벡터장으로 보면, 어느 순간이든 수평으로는 바람이 멎은 곳이 적어도 한 곳 있다.

역사: 풀 수 없는 방정식의 그림을 그린 푸앵카레
행성 셋이 서로 끌어당기는 삼체 문제처럼, 천체의 운동 방정식은 대부분 해를 식으로 적을 수 없다. 앙리 푸앵카레(Henri Poincaré)는 1881년부터 1886년까지 네 편으로 나온 논문 「미분방정식이 정의하는 곡선에 관하여」에서 방향을 바꿨다. 해의 식을 구하는 대신, 평면이나 구면 위의 벡터장을 따라 흐르는 곡선들이 어떤 모양을 그리는지를 보기로 한 것이다. 모양을 가르는 열쇠는 화살표가 0이 되는 점이었다. 그는 이런 점을 둘레의 곡선 모양에 따라 매듭(사방으로 뻗어 나가거나 사방에서 모여드는 점), 초점(소용돌이치며 감기는 점), 안장(한쪽으로 들어와 다른 쪽으로 빠지는 점), 중심(빙빙 도는 점)으로 나눴다.
이 논문에서 그는 구면 위에서는 매듭과 초점을 더한 개수가 안장의 개수보다 언제나 2만큼 많다는 것을 보였다. 매듭이나 초점이 적어도 두 개 있으니, 구면 위의 벡터장에는 0이 되는 점이 반드시 있다. 1912년 브라우어르(L. E. J. Brouwer)가 이 결론을 모든 짝수 차원 구면으로 넓혔고, 1926년 호프(Heinz Hopf)는 영점을 부호까지 세어 더한 값이 벡터장이 아니라 공간의 모양만으로 정해진다는 것을 일반 매니폴드에서 보였다. 푸앵카레 자신은 뒤에 이 일을 돌아보며, 미분방정식의 곡선을 연구하고 그것을 천체역학의 방정식으로 넓히려다 보니 위치와 모양만 따지는 새 기하학이 필요해졌다고 적었다.

흐름 그림이라면 지금은 matplotlib의 streamplot 한 줄이에요. 구면 위 벡터장도 곡선 모양이 금방 다 보이고요.

그 그림은 격자 점마다 화살표를 계산하고, 곡선을 아주 짧은 토막으로 이어 그린 거예요. 1881년에 그걸 손으로 하면 어떻게 될까요?

토막 하나마다 그 자리의 화살표를 다시 계산해야 하니까… 곡선 하나 그리는 데 곱셈을 수백 번 해야겠네요. 그래 봐야 출발점 하나에 곡선 하나고요.

그래서 화살표가 0인 점 둘레만 봤군요. 거기서는 곡선이 뻗어 나가는지, 감기는지, 비켜 가는지만 가리면 되니까요. 그런데 0인 점 몇 개로 전체 그림을 말할 수 있다고 확신한 근거는 뭐였어요?

그 근거를 대는 말이 그때는 없었어요. 푸앵카레 자신이 위치와 모양만 따지는 새 기하학이 필요해졌다고 적은 게 그 얘기예요. 매듭과 초점이 안장보다 늘 2만큼 많다는 것도, 화살표를 얼마나 길게 그리느냐와 상관없이 성립하는 셈이었으니까요.

식을 못 풀어도 영점과 흐름의 모양으로 따질 수 있는 게 있다면, 신경망이 배운 벡터장이 할 수 있는 일과 못 하는 일도 그렇게 따질 수 있어요?
ML에서: 신경망이 배우는 벡터장
첸(R. T. Q. Chen) 등이 2018년 NeurIPS에 발표한 신경 상미분방정식(Neural ODE)은 층을 쌓는 대신, 은닉 상태
문제 13: 추월 없는 외길
확인 추월할 수 없는 외길에서 모든 차가 자리마다 정해진 속도로만 달린다. 0 km 지점부터 10 km 지점까지는 시속 100 km, 10 km 지점부터는 시속 50 km다. 지금 차 A는 10 km 지점, 차 B는 0 km 지점에 있다. (가) B는 A를 따라잡는가? (나) 두 차 사이의 간격은 어떻게 변하는가?
같이 풀기 세션 13

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

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

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

속도가 자리로만 정해지니까, 만약 B가 A와 같은 순간 같은 자리에 온다면 그 뒤로 둘은 똑같이 움직여야 해. 앞지르려면 먼저 한 자리에서 만나야 하는데, 만나는 순간 둘은 한 몸이 되는 거지. 이 외길에서는 차의 순서가 바뀌지 않아.
문제 14: 털 난 공을 가마 없이 빗을 수 있을까
킬러 구면 위의 벡터장
같이 풀기 세션 14

반례 같은데요.

격자가 극을 지나지는 않았지? 격자 점은

좋은 의심이에요. 민준 학생, 북극에서

북극에서 남쪽이요… 그런데 북극에서는 모든 방향이 남쪽이네요. 경도

그래요.

그럼 극으로 갈수록 화살표를 줄이면 어때?

이어 붙인 그 벡터장은 극에서 값이 얼마예요?

0이요. 정리가 말하는 영점이 거기 있네요. 그러니까 이 정리는 결국 닫힌 곡면이면 어디서나 성립하는 거죠? 닫혀 있으면 어딘가에 가마가 생긴다고요.

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

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

그래서 정리는 "짝수 차원 구면"에 대해서만 말해요. 서연 학생이 만든

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

나는 선형대수의 홀짝 이야기가 떠올라. 홀수 차원 실행렬은 반드시 실수 고윳값이 있지만 짝수 차원이면 없을 수도 있잖아. 조건 하나(차원, 모양)를 바꾸면 결론이 뒤집히니까, 정리를 쓸 때는 가정부터 봐야겠어.
문제 15: 1과 −1을 맞바꾸는 신경 ODE
계산 1차원 은닉 상태
같이 풀기 세션 15

신경망은 충분히 크면 뭐든 근사하잖아요.

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

그려 보니까 하나는 위에서 아래로, 하나는 아래에서 위로 가요. 어디선가 엇갈려야 할 것 같은데요.

엇갈린다는 걸 식으로 말해 볼래요? 두 길의 차를 보면요.

차

그 순간 두 은닉 상태는 같은 자리에 있죠. 그 뒤로는 어떻게 움직여요?

벡터장은 한 시각 한 자리에 화살표를 하나만 주니까… 똑같이 움직여야 해요. 끝에서

문제 13의 외길이랑 같네요. 1차원 은닉 상태가 추월 없는 외길이었어요. 신경망이 아무리 커도

(나)는요?

이 벡터장은 점을 원점 둘레로 돌리는 회전이라 시각

그래요. 뒤퐁(E. Dupont) 등이 2019년 NeurIPS 논문 「Augmented Neural ODEs」에서 바로 이 1과

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