맺음: 고정된 축에서 배우는 축으로

처음부터 돌아보기

마지막 시간. 칠판에는 머리말에서 꺼낸 세 정보가 다시 적혀 있다. 도·미·솔 화음 녹음 1초, 선생님 그림 한 장, 공 표면 위의 울퉁불퉁한 모양. 줄 하나, 평면 하나, 공 모양의 표면 하나에 놓인 숫자들이다.

선생님 T01
선생님

처음 시간에 녹음, 그림, 공 위의 모양을 보여 주고 물었죠. 바탕의 모양이 다른 정보를 같은 방법으로 볼 수 있느냐고요. 지금은 뭐라고 답하겠어요?

김민준 M01
김민준

셋 다 「물결 모양의 성분으로 나눠서 성분마다 세기를 늘어놓는다」로 볼 수 있다고요. 녹음은 사인·코사인 물결, 그림은 가로·세로 코사인 무늬, 공 표면은 구면 조화로요. 처음에는 그게 그냥 「다 비슷해 보인다」는 말인 줄 알았어요.

선생님 T01
선생님

그 「나눈다」는 일은 어디서 시작했죠?

이서연 S01
이서연

기저에서요. 칸 세 개짜리 벡터를 평균·기울기·굽음 세 축으로 다시 적은 게 처음이었어요. 축끼리 직각이면 계수는 내적 한 번으로 구하고, 제곱합은 어느 축으로 적어도 그대로였어요(파스발 등식). 그다음 푸리에 급수는 축을 끝없이 많은 사인·코사인으로 늘린 거였고, 끊긴 곳에서는 항을 아무리 늘려도 9% 남짓 넘치는 깁스 현상이 남았어요.

김민준 M01
김민준

에피사이클은 축을 바꿔 다시 적기를 복소수로 한 거였어요. 평면의 점을 수 하나로 적으니까 곱하기가 돌리기가 되고, 닫힌 곡선이 주파수(한 바퀴 동안 몇 번 도나)가 정수배인 화살표들의 합이 됐어요. RoPE 가 질의와 열쇠를 자리 번호만큼 돌리는 것도 그 화살표였고요.

이서연 S01
이서연

칸으로 적은 신호로 오자 적분이 합이 됐어요. 칸 N개를 계수 N개로 바꾸는 이산 푸리에 변환, 그 계산을 반씩 나눠 다시 쓰는 고속 푸리에 변환. 칸 간격이 너무 넓으면 빠른 물결이 느린 물결로 둔갑했고(에일리어싱), 「언제」를 함께 알고 싶으면 윈도우를 대고 옮겨야 했는데, 윈도우가 짧으면 주파수가 흐려지고 길면 시각이 흐려졌어요.

선생님 T02
선생님

거기까지는 「사인과 코사인으로 적으면 잘 된다」였어요. 왜 하필 사인과 코사인이었죠?

김민준 M07
김민준

미는 대칭 때문이에요. 어느 자리에 대도 같은 무게로 곱해 더하는 필터는 모두 원형 행렬이고, 원형 행렬은 필터가 무엇이든 같은 물결을 고유벡터로 가져요. 그래서 합성곱이 주파수마다 곱하기가 됐고요. 물결은 사람이 좋아서 고른 게 아니라, 미는 대칭이 고른 축이었어요.

이서연 S08
이서연

그래서 대칭을 바꾸면 축이 바뀌었어요. 공을 돌리는 대칭은 구면 조화를 골랐고, 그래프처럼 대칭이 마땅치 않은 바탕에서는 이웃 관계를 담은 라플라시안의 고유벡터가 축이 됐어요. 바탕이 줄이든 평면이든 공 표면이든 「대칭이 고른 축으로 적고, 성분 하나씩 더해 가며 그린다」는 같은 그림이 됐고요.

선생님 T01
선생님

그 그림을 한 장에 놓아 볼까요. 왼쪽 칸에 바탕과 그 바탕의 대칭을, 오른쪽에 그 대칭이 고른 축 셋을 그렸어요.

대칭이 기저를 고른다. 위에서부터: 32칸 고리에서 평행이동 대칭이 고른 물결 k = 1, 2, 3(원 둘레에 반지름을 늘이고 줄여 그렸다), 구면에서 회전 대칭이 고른 실수 구면 조화 세 개(앞쪽 반구를 25° 기울여 본 그림, 주황은 양수 보라는 음수), 점 10개짜리 그래프에서 라플라시안의 고유벡터 셋(고윳값 0 인 상수 벡터 다음부터), 마지막 줄은 대칭이 없는 하루 24시간 승객 수에서 자료가 고른 축 셋. 이 마지막 줄은 「배운 축」 이야기에서 승객 수 자료로 만든다(sources/epilogue/figs.py, s2_subway.py)
대칭이 기저를 고른다. 위에서부터: 32칸 고리에서 평행이동 대칭이 고른 물결 k = 1, 2, 3(원 둘레에 반지름을 늘이고 줄여 그렸다), 구면에서 회전 대칭이 고른 실수 구면 조화 세 개(앞쪽 반구를 25° 기울여 본 그림, 주황은 양수 보라는 음수), 점 10개짜리 그래프에서 라플라시안의 고유벡터 셋(고윳값 0 인 상수 벡터 다음부터), 마지막 줄은 대칭이 없는 하루 24시간 승객 수에서 자료가 고른 축 셋. 이 마지막 줄은 「배운 축」 이야기에서 승객 수 자료로 만든다(sources/epilogue/figs.py, s2_subway.py)
김민준 M01
김민준

위의 세 줄은 이제 어느 칸이든 설명할 수 있어요. 마지막 줄은 처음 보는데요. 물결도 아니고 구면 조화도 아니고, 봉우리가 한쪽에 몰린 모양이에요.

선생님 T14
선생님

이 책의 축은 모두 대칭이 미리 정해 줬어요. 대칭이 축을 고르니까, 데이터를 보기 전에도 축을 알았죠. 커널 함수가 무한히 많은 물결을 셈 한 번으로 다룬 것도, 신경망이 왜 굵은 무늬부터 배우는지를 주파수로 설명한 것도 그 축 위에서 한 일이에요. 그런데 데이터에 대칭이 없으면 축은 누가 고르나요? 마지막 줄의 모양은 사람이 고른 게 아니에요.

이서연 S01
이서연

대칭이 없으면 굳이 물결을 고를 이유도 없겠네요. 그러면 데이터가 고르는 수밖에 없고요.

선생님 T01
선생님

마지막으로 그 이야기를 두 가지로 해 봅시다. 대칭이 아예 없을 때 데이터가 어떤 축을 고르는지, 그리고 대칭이 있긴 한데 어설플 때 사람이 고른 축과 데이터가 고른 축을 어떻게 섞는지. 둘째 것은 아직 답이 다 나오지 않은 물음이에요.