군의 푸리에 변환: 대칭이 고르는 축
평행이동 대칭에서는 사인·코사인 물결이 특별했다. 칸을 한 칸 밀면 물결 하나는 모양이 그대로이고 출발 자리(위상)만 바뀌므로, 신호를 물결의 합으로 적으면 「한 칸 밀기」가 물결마다 길이 1인 복소수를 곱하는 일로 바뀌었다. 네모 곡선을 도는 화살표로 그릴 때도, 네모를 90° 돌려도 네모라서 주파수(곡선을 한 번 그리는 동안 화살표가 도는 바퀴 수) 1, −3, 5, … 인 화살표만 살아남았다. 그렇다면 90° 돌리기 군에는 어떤 축이 짝지어질까? 다시 말해 그림을 어떤 성분들로 나누면, 돌리기가 성분마다 숫자 하나를 곱하는 일이 될까?
역사: 데데킨트가 풀지 못한 인수분해
1886년 무렵 데데킨트(Richard Dedekind)는 방정식의 근을 덧붙여 만든 수 체계(갈루아 이론의 체 확대)를 연구하다 「군 행렬식」이라는 식에 닿았다. 군의 원소마다 변수를 하나씩 두고, 군의 곱셈표대로 변수를 늘어놓은 행렬의 행렬식이다. 돌리기 넷처럼 이어 하는 순서가 상관없는 군에서는 이 행렬이 한 칸씩 밀린 꼴이고, 행렬식이 일차식들의 곱으로 깔끔하게 인수분해되었다. 그 일차식들은 지금 말로 하면 이산 푸리에 변환의 계수다. 그런데 칸 세 개의 순서 바꾸기처럼 이어 하는 순서에 따라 결과가 달라지는 군에서는 일차식 둘과 함께 더는 쪼개지지 않는 이차식이 제곱으로 나왔다.
1896년 봄 데데킨트는 프로베니우스(Ferdinand Georg Frobenius)에게 편지로 이 문제를 알렸다. 뒤이은 편지에서는 조심스럽게 추측을 하나 적고, 자신은 여기서 아무것도 이루지 못할 것 같으니 프로베니우스가 맡아 주면 기쁘겠다고 덧붙였다고 전해진다. 프로베니우스는 같은 해 7월 베를린 학술원에 「군 지표에 대하여(Über Gruppencharaktere)」를 내며 데데킨트의 추측을 풀었고, 그해 12월에는 군 행렬식이 어떻게 인수분해되는지를 모두 밝혔다. 순서가 상관없는 군에서는 푸리에의 물결처럼 「숫자 하나를 곱받는 성분」으로 다 쪼개지지만, 순서가 상관있는 군에는 성분 여럿이 한 덩어리로 함께 움직여서 숫자가 아니라 작은 행렬을 곱받는 부분이 있다. 이 생각이 군의 표현론이라는 수학 분야의 시작이 되었다.

ㄱ 그림을 돌리기 성분 넷으로
손으로 계산해 보자. ㄱ 그림 x와 그것을 90°, 180°, 270° 돌린 그림 넷을 겹쳐 놓고, 칸 하나에 놓인 값 넷을 돌린 순서대로 읽는다. 왼쪽 위 모서리 칸 (0, 0)은 처음 그림에서만 칠해져 있어 [1, 0, 0, 0]이다. 가운데 칸 (1, 1)은 90°와 180° 돌린 그림에서 칠해져 [0, 1, 1, 0]이다.
칸 하나의 값 넷에 칸 네 개짜리 이산 푸리에 변환을 한다. 돌린 횟수 j를 칸 번호로, 「돌리기 네 번에 k바퀴 도는 화살표를 거꾸로 돌린 것」 i−jk를 곱해 더하고 4로 나눈다. 가운데 칸이면 k = 0일 때 (0 + 1 + 1 + 0)/4 = 0.5, k = 1일 때 (0 + 1 × (−i) + 1 × (−1) + 0)/4 = −0.25 − 0.25i, k = 2일 때 (0 − 1 + 1 − 0)/4 = 0, k = 3일 때 −0.25 + 0.25i다. 왼쪽 위 모서리 칸은 네 값 모두 0.25다. 열여섯 칸에서 이 계산을 하면 그림 네 장, 성분 P0, P1, P2, P3가 나온다(s3_fourier.py).
| 칸 | 돌린 그림 넷에서의 값 | P₀ | P₁ | P₂ | P₃ |
|---|---|---|---|---|---|
| (0, 0) 모서리 | 1, 0, 0, 0 | 0.25 | 0.25 | 0.25 | 0.25 |
| (0, 3) 모서리 | 0, 0, 0, 1 | 0.25 | 0.25i | −0.25 | −0.25i |
| (1, 1) 가운데 | 0, 1, 1, 0 | 0.5 | −0.25 − 0.25i | 0 | −0.25 + 0.25i |
| (1, 2) 가운데 | 1, 1, 0, 0 | 0.5 | 0.25 − 0.25i | 0 | 0.25 + 0.25i |
네 성분을 더하면 처음 ㄱ 그림이 칸 하나 틀리지 않고 되살아나는데, 성분마다 돌리기에 대한 반응이 다르다. P0은 돌린 그림 넷의 평균이라 돌려도 칸마다 값이 바뀌지 않는다. P2는 90° 돌리면 칸마다 부호만 바뀌며, P1은 돌리면 칸마다 i가 곱해지고, P3은 −i가 곱해진다. 그런데 그림이 실수이므로 P3은 P1의 켤레다.

그림을 성분으로 나누고 나면 「90° 돌리기」는 성분마다 1, i, −1, −i를 곱하는 일이 된다(칸의 자리도 함께 돌아간다). 평행이동이 물결마다 길이 1인 복소수를 곱하는 일이 되던 것과 같은 모양이다. 대칭 변환이 성분마다 숫자 하나를 곱하는 일이 되도록 신호를 나누는 것을 군의 푸리에 변환 (그 군에 맞는 축으로 다시 적기 / Fourier transform on a group)이라 한다.
곱하는 숫자가 모두 길이 1이므로 성분마다의 파워(칸 값 크기의 제곱 합)는 그림을 돌려도 바뀌지 않는다. ㄱ 그림의 파워는 P0부터 차례로 1.75, 1.25, 0.75, 1.25이고 합은 칠한 칸 수 5와 같다. 그림을 90°, 180°, 270° 돌려도 이 네 숫자는 바뀌지 않으므로, 네 숫자의 묶음이 돌리기에 불변인 「돌리기 스펙트럼」이다.
이 성분들은 이미 아는 것과 이어진다. 원 위를 돌리는 군에는 각도 θ로 k번 출렁이는 물결 eikθ가 맞는 축이었는데, 각도 α만큼 돌리면 이 물결에 길이 1인 수 e−ikα가 곱해질 뿐이기 때문이다. 90° 돌리기 넷만 허락하면 곱해지는 수 e−ikπ/2는 1, −i, −1, i 네 값 가운데 하나이고, 어느 값인지는 k를 4로 나눈 나머지만 정한다. 그래서 출렁임 수 k가 4로 나눈 나머지에 따라 네 묶음으로 나뉘고, 묶음마다 곱해지는 수가 같은 성분 하나가 대응한다. 그 네 성분이 P0부터 P3이다. 네모 곡선에서 주파수 1, −3, 5, … 인 화살표가 함께 살아남은 것도 이 때문이다(셋 다 4로 나눈 나머지가 1).
칸 세 개의 순서 바꾸기에서는 쪼개지지 않는 덩어리가 남는다. 값 [3, 1, 2]를 평균 부분 [2, 2, 2]와 나머지 [1, −1, 0]으로 나누면, 어떤 순서 바꾸기도 평균 부분은 그대로 두고 나머지는 「합이 0인 평면」 안에서만 옮긴다. 평균 부분이 이 군의 「돌려도 그대로인 성분」이지만, 남은 평면은 더 쪼개지지 않는다. 1·2번 칸 바꾸기가 그대로 두는 방향(1, 1, −2)은 2·3번 칸 바꾸기를 하면 다른 방향으로 넘어가고, 평면 안의 방향 3600개를 조사해도 여섯 바꾸기가 모두 제자리에 두는 방향은 하나도 없다. 이 평면이 데데킨트의 쪼개지지 않던 이차식, 프로베니우스의 「함께 움직이는 덩어리」다. 순서 바꾸기 군의 푸리에 변환은 「합과 평균」 하나와 「나머지 평면」 하나로 끝난다.
ML에서: 집합 신경망의 층은 평균과 나머지를 따로 곱한다
자히르(Manzil Zaheer)와 동료들은 「딥 세트(Deep Sets)」(NIPS 2017)에서 원소의 순서와 상관없는 집합을 다루는 신경망을 정리했다. 순서 바꾸기에 불변인 함수는 모두 원소마다 같은 변환 φ를 한 뒤 더하고, 그 합에 다른 변환 ρ를 하는 꼴 ρ(Σφ(x))로 적을 수 있다는 것이 그들의 정리다. 이 장의 말로는 「합과 평균」만 남기는 군의 푸리에 변환의 첫 성분이다.
등변인 층에 대해서는 선형 층 Θx가 순서 바꾸기에 등변이려면 행렬 Θ가 λI + γ11T 꼴이어야 한다는 것을 보였다. 대각선 칸은 모두 λ, 나머지 칸은 모두 γ이므로, 원소가 M개면 아무 선형 층은 숫자가 M²개인데 등변 층은 λ와 γ 두 개뿐이다. 이 두 숫자가 하는 일은 문제 9에서 군의 푸리에 변환으로 풀어 본다.
문제 7. 사계절 기온을 네 성분으로
어느 도시의 계절 평균 기온이 봄 12°C, 여름 25°C, 가을 15°C, 겨울 0°C 다(직접 정한 값). 계절은 넷이 돌며 되풀이된다. (가) 네 값에 칸 네 개짜리 이산 푸리에 변환을 하면 계수는 어떻게 되는가? 평균, 「봄 − 여름 + 가을 − 겨울」 꼴의 반년 성분, 한 해에 한 번 출렁이는 성분의 크기를 구하라. (나) 한 계절씩 당겨 [여름, 가을, 겨울, 봄] 순서로 적으면 계수는 어떻게 바뀌는가?

(가)는 계수가 52, −3 − 25i, 2, −3 + 25i예요. 4로 나누면 평균 13°C, 반년 성분 0.5°C, 한 해 성분은 화살표 길이에 2를 곱해서 12.59°C 출렁임이에요. (나)는 순서가 바뀌었으니까 계수가 다 새로 나오겠죠. 25, 15, 0, 12로 다시 계산하면 52, 25 − 3i, −2, 25 + 3i요.

두 계수 묶음의 크기를 하나씩 비교해 볼래요?

52는 같고, |−3 − 25i|와 |25 − 3i| 둘 다 25.18이고, 2와 −2도 크기가 같아요. 크기는 하나도 안 바뀌었어요.

한 계절 당기면 한 해 성분에는 i가, 반년 성분에는 −1이 곱해졌어. −3 − 25i에 i를 곱하면 25 − 3i잖아. 계절 하나 밀기를 네 번 하면 제자리니까 이건 90° 돌리기 넷과 같은 군이야.

그러면 ㄱ 그림을 돌릴 때 성분에 곱해지던 수와 비교해 봐요.

똑같아요. 그림을 90° 돌리는 것도, 계절을 한 칸 미는 것도 「네 번 하면 제자리」인 군이라서, 성분에 1, i, −1, −i가 곱해지는 것까지 같아요.

그럼 성분마다의 파워도 둘 다 안 바뀌겠네?

응. 계절은 칸이 하나씩이고 그림은 칸 묶음마다 이 계산을 한 거야.

학기 시작을 봄에서 여름으로 바꿔 달력을 다시 그려도 「여름이 덥다」는 건 안 바뀌는 거네요.
문제 8. 대칭이 있는 그림의 돌리기 스펙트럼
아래 두 그림의 돌리기 성분 파워(P0 부터 P3 까지)를 구하고, 어느 성분이 0이 되는지와 왜 그런지 말하라. (가) Z 그림은 180° 돌리면 같은 그림이고 90° 돌리면 달라진다. (나) 모서리 네 칸만 비운 굵은 십자는 90° 돌려도 같은 그림이다. (위젯 3의 「문제 8 (가)」「문제 8 (나)」로 확인해 보자.)


계산해 보니까 (가)는 3, 0, 3, 0이고 (나)는 12, 0, 0, 0이에요. Z 그림은 칸이 여섯이라 반씩 나눠 가졌네요. 왜 P1과 P3이 0인지는 모르겠어요. 우연인가요?

Z 그림을 180° 돌리면 그대로라고 했죠. 그러면 Z 그림의 P1도 180° 돌려도 그대로여야 해요. 그런데 P1은 90° 돌릴 때마다 무엇이 곱해졌죠?

i요. 180°면 두 번이니까 i² = −1이 곱해져요. 그대로이면서 −1배라니, 0일 수밖에 없네요. P3도 (−i)² = −1이라 0이고, P2는 (−1)² = 1이라 살아남아요.

(나)는 90° 돌려도 그대로니까 i, −1, −i가 곱해지는 성분이 모두 0이어야 하고, 평균 P0만 남아. 그림 전체가 돌린 넷의 평균과 같으니까 파워 12가 다 P0에 있어.

그래요. 그림이 가진 대칭이 어느 성분이 살아남을지 미리 정해요. 네모 곡선에서 주파수 1, −3, 5, … 인 화살표만 남은 것과 같은 계산이에요.

우함수의 푸리에 계수에서 사인 쪽이 다 0이 되는 것도 이거였어. 좌우 뒤집기에 −1배가 되는 성분은 좌우 대칭 함수에 못 들어가.
문제 9. 딥 세트의 등변 층이 하는 일
원소 세 개인 집합에 딥 세트의 등변 선형 층 Θ = λI + γ11ᵀ 를 λ = 0.5, γ = 0.2 로 쓴다. (가) 입력 [3, 1, 2] 의 출력을 구하라. (나) 입력을 평균 부분과 나머지로 나누어, 층이 각 부분을 몇 배 하는지 구하라. (다) 원소가 100개인 집합이면 아무 선형 층과 등변 층의 숫자 개수는 각각 몇이고, 같은 λ, γ 에서 평균 부분은 몇 배가 되는가?

(가)는 행렬을 곱하면 [2.7, 1.7, 2.2]예요. 순서를 [2, 3, 1]로 섞어 넣으면 [2.2, 2.7, 1.7]이라 출력도 같이 섞이고요. (나)는 λ가 0.5니까 다 0.5배 아닌가요?

평균 부분 [2, 2, 2]를 넣어 볼래요?

[2.2, 2.2, 2.2]가 나와요. 0.5배가 아니라 1.1배네요. 나머지 [1, −1, 0]은 [0.5, −0.5, 0]이라 0.5배고요.

11ᵀ를 곱하면 원소를 다 더해서 모든 칸에 나눠 주는 거니까… 합이 0인 나머지에는 아무것도 안 하겠네.

평균 부분에는?

원소 수 3을 곱해서 γ × 3 = 0.6을 더하고. 그래서 평균 부분은 λ + 3γ = 1.1배, 나머지는 λ = 0.5배야. 행렬의 고윳값도 1.1, 0.5, 0.5고.

순서 바꾸기 군의 푸리에 변환과 나란히 놓으면 어떻게 보여요?

성분이 「평균」과 「나머지 평면」 두 개였잖아요. 등변 층은 성분마다 숫자 하나를 곱할 수 있을 뿐이라… 숫자가 두 개예요.

나머지 평면 안에서 방향마다 다른 배율을 줄 수는 없을까요?

나머지 평면은 더 쪼개지지 않으니까 그 안에서는 방향마다 다른 배율을 줄 수 없어요.

(다)는 민준 학생이 해 볼래요?

원소 100개면 아무 선형 층이 10000개, 등변 층은 그래도 2개예요. 평균 부분 배율은 0.5 + 100 × 0.2 = 20.5배로 커지고요.

합성곱 신경망이 칸마다 같은 합성곱 커널을 써서 가중치를 아끼듯이, 딥 세트의 등변 층은 원소마다 같은 λ, γ를 써서 아끼는 거네요.