7.10 대칭과 군 표현

실습 · 연습문제 2개

점구름의 불변 특징 설계하기 invariant-features

평면 위의 점 NN개 X∈RN×2\mathbf{X} \in \mathbb{R}^{N \times 2}로 이루어진 점구름에서, 다음 세 변환에 모두 불변인 특징 벡터를 만든다.

  • 회전: xn↦Rxn\mathbf{x}_n \mapsto \mathbf{R}\mathbf{x}_n (R∈SO(2)\mathbf{R} \in SO(2))
  • 평행이동: xn↦xn+t\mathbf{x}_n \mapsto \mathbf{x}_n + \mathbf{t}
  • 원소 순서 바꾸기: 행의 치환

함수 invariant_features(X)를 완성해 1차원 NumPy 배열을 반환한다. 길이는 NN에만 의존해야 한다(같은 NN이면 같은 길이).

테스트는 다음을 확인한다.

  • 무작위 회전·평행이동·치환을 함께 적용해도 특징이 같다.
  • 모양이 다른 점구름은 특징이 다르다. 모든 점을 1.5배 늘린 점구름, 점 하나를 옮긴 점구름과 구별되어야 한다. 상수 벡터나 점의 개수처럼 "아무것도 구별하지 못하는 불변량"은 통과하지 못한다.

힌트: 회전과 평행이동에 불변인 가장 기본적인 양은 두 점 사이의 거리다. 순서에 불변으로 만들려면 순서에 의존하지 않는 방식으로 모은다(정렬, 합, 히스토그램 등). 무게중심을 빼는 것만으로는 회전 불변이 되지 않는다.

참고: 정렬한 쌍별 거리는 일반적인 점구름을 잘 구별하지만, 모든 경우에 완전한 불변량은 아니다. 서로 합동이 아닌데 쌍별 거리의 모음이 같은 특수한 점 배치가 존재한다. 반사(거울상)도 거리를 바꾸지 않으므로, 이 특징은 거울상 쌍을 구별하지 못한다.

순열 등변 층 만들고 검증하기 perm-equivariant-layer

집합(점구름, 분자의 원자들, 입자들)은 원소의 순서에 의미가 없다. 원소 NN개의 특징을 행으로 쌓은 행렬 H∈RN×Din\mathbf{H} \in \mathbb{R}^{N \times D_{\text{in}}}에 대해, 순서를 바꾸는 치환 행렬 P\mathbf{P}를 적용하면 출력의 행도 똑같이 바뀌어야 한다.

f(PH)=P f(H).f(\mathbf{P}\mathbf{H}) = \mathbf{P}\,f(\mathbf{H}).

다음 층은 이 성질(순열 등변성)을 만족한다.

f(H)=HWself+1N hˉ⊤Wpool+1Nb⊤,hˉ=1N∑n=1Nhn.f(\mathbf{H}) = \mathbf{H}\mathbf{W}_{\text{self}} + \mathbf{1}_N\,\bar{\mathbf{h}}^\top\mathbf{W}_{\text{pool}} + \mathbf{1}_N\mathbf{b}^\top, \qquad \bar{\mathbf{h}} = \frac{1}{N}\sum_{n=1}^{N}\mathbf{h}_n.

첫 항은 원소마다 같은 가중치를 따로 적용하고, 둘째 항은 집합 전체의 평균을 모든 원소에 똑같이 더한다.

함수 equivariant_layer(H, W_self, W_pool, b)를 완성한다. 입력에는 batch 축이 있다.

인자 shape
H (B, N, D_in)
W_self (D_in, D_out)
W_pool (D_in, D_out)
b (D_out,)

반환값의 shape은 (B, N, D_out)이다.

테스트는 다음을 확인한다.

  • 위 식과 같은 값을 낸다.
  • batch 항목마다 원소 순서를 무작위로 바꿔도 출력이 같은 방식으로 바뀐다(등변).
  • 평균은 batch 항목마다, 원소 축으로 낸다. batch 축이나 feature 축으로 평균을 내면 등변성 또는 batch 독립성이 깨진다.
  • 같은 가중치로 원소 수가 다른 집합(N=3N = 3, N=10N = 10)을 처리한다.
  • 출력을 원소 축으로 합하면 순서에 불변인 집합 표현이 된다.

힌트: H.mean(axis=?, keepdims=True)의 shape이 (B, 1, D_in)이 되도록 축을 고른다. 행렬 곱 @은 마지막 두 축에 작용하고 앞 축은 broadcasting된다(7.7장).