28.12 아인슈타인 합산 규약(Einstein Summation Convention)의 정의와 적용

28.12 아인슈타인 합산 규약(Einstein Summation Convention)의 정의와 적용

1. 도입 배경과 역사

1.1 텐서 표기의 복잡성 문제

텐서 해석학에서 다루는 표현식은 다수의 지표(index)에 대한 합산을 포함한다. 벡터의 내적, 행렬 곱셈, 텐서의 축약(contraction) 등 거의 모든 텐서 연산이 반복되는 합 기호 \sum의 사용을 요구하며, 고차 텐서를 다루는 일반 상대성 이론과 미분 기하학에서 이는 표기의 가독성을 심각하게 저해한다.

1.2 아인슈타인의 도입

알베르트 아인슈타인(Albert Einstein)은 1916년 일반 상대성 이론에 관한 논문 “Die Grundlage der allgemeinen Relativitätstheorie“에서 합산 기호를 생략하는 표기 규약을 도입하였다. 이 규약은 단일 항(monomial) 내에서 동일한 지표가 두 번 반복되면 자동으로 그 지표에 대한 합산이 수행되는 것으로 약속한다. 이후 이 표기법은 미분 기하학, 이론 물리학, 연속체 역학, 그리고 현대의 수치 계산 라이브러리에 이르기까지 광범위하게 채택되었다.

2. 형식적 정의

2.1 기본 규약

아인슈타인 합산 규약(Einstein summation convention)의 기본 규칙은 다음과 같이 진술된다: 단일 항 내에서 동일한 문자가 한 번은 위 첨자(반변, contravariant)로, 다른 한 번은 아래 첨자(공변, covariant)로 등장하면, 그 지표는 허용된 모든 값에 대해 합산된다.

예를 들어, 표현식 y^i = A^i{}_j x^j는 다음을 의미한다:

y^i = \sum_{j=1}^{n} A^i{}_j x^j, \quad i = 1, 2, \ldots, n

2.2 더미 지표와 자유 지표

규약 하에서 지표는 두 종류로 구분된다:

  • 더미 지표(dummy index) 또는 수축 지표(contracted index): 동일 항 내에서 두 번 반복되는 지표로, 합산이 적용된다. 위의 예에서 j가 이에 해당한다.
  • 자유 지표(free index): 한 번만 등장하는 지표로, 방정식의 좌변과 우변에 동일하게 나타나야 한다. 위의 예에서 i가 이에 해당한다.

자유 지표의 개수는 표현식의 결과 텐서의 계수(rank)를 결정한다. 자유 지표가 0개이면 스칼라, 1개이면 벡터, 2개이면 2계 텐서이다.

2.3 더미 지표의 임의성

더미 지표의 문자 선택은 임의적이다. a_i b^ia_j b^j는 동일한 표현식을 나타낸다. 이 임의성은 복잡한 식의 대수적 조작에서 지표의 재명명을 통해 충돌을 회피하는 데 활용된다.

3. 핵심 적용 사례

3.1 벡터와 행렬 연산

벡터 내적: 메트릭 텐서 g_{ij}를 가지는 공간에서 두 벡터 \mathbf{u}, \mathbf{v}의 내적은:

\mathbf{u} \cdot \mathbf{v} = g_{ij} u^i v^j

유클리드 공간에서는 g_{ij} = \delta_{ij} (크로네커 델타)이므로 \mathbf{u} \cdot \mathbf{v} = u^i v_i로 단순화된다.

행렬-벡터 곱: \mathbf{y} = \mathbf{A}\mathbf{x}y^i = A^i{}_j x^j로 표기된다.

행렬 곱셈: \mathbf{C} = \mathbf{A}\mathbf{B}C^i{}_j = A^i{}_k B^k{}_j로 표기된다. 더미 지표 k에 대한 합산이 행렬 곱의 합산에 정확히 대응한다.

삼중 행렬곱: \mathbf{D} = \mathbf{A}\mathbf{B}\mathbf{C}D^i{}_l = A^i{}_j B^j{}_k C^k{}_l로 표기된다.

3.2 자취와 이차 형식

행렬의 자취(trace): \text{tr}(\mathbf{A}) = A^i{}_i로 표기된다. 동일한 지표가 위와 아래에 모두 등장하므로 자동 합산이 적용된다.

이차 형식(quadratic form): Q(\mathbf{x}) = \mathbf{x}^T \mathbf{M} \mathbf{x}Q = M_{ij} x^i x^j로 표기된다.

3.3 메트릭 텐서와 지표 조작

메트릭 텐서 g_{ij}와 그 역 g^{ij}g^{ik} g_{kj} = \delta^i{}_j를 만족한다. 메트릭 텐서는 지표를 올리거나 내리는 데 사용된다:

  • 지표 내리기: v_i = g_{ij} v^j
  • 지표 올리기: v^i = g^{ij} v_j

3.4 미분 기하학적 양

리치 텐서: 리만 곡률 텐서 R^\rho{}_{\sigma\mu\nu}로부터의 축약:

R_{\sigma\nu} = R^\rho{}_{\sigma\rho\nu}

스칼라 곡률: R = g^{\sigma\nu} R_{\sigma\nu}

이러한 표기는 합산 기호 없이 고차 텐서의 복잡한 축약을 간결하게 표현한다.

4. 규약의 제약 조건

4.1 지표 균형의 원칙

규약의 올바른 적용을 위해 다음의 조건이 준수되어야 한다:

조건 1 (반복의 한도): 단일 항 내에서 동일한 지표가 정확히 두 번까지만 등장해야 한다. a^i b_i c_i와 같이 세 번 등장하는 표기는 정의되지 않는다. 이를 회피하려면 지표 문자를 다르게 선택해야 한다.

조건 2 (자유 지표의 일관성): 방정식의 좌변과 우변의 자유 지표 집합이 동일해야 한다. y^i = A^j{}_k x^k와 같이 좌변의 i가 우변에 나타나지 않거나, 우변에만 자유 지표 j가 존재하는 경우 식은 잘못된 것이다.

조건 3 (반변-공변 균형): 엄밀한 형태의 규약에서 합산되는 두 지표 중 하나는 위 첨자, 다른 하나는 아래 첨자여야 한다. 이 조건은 텐서의 변환 법칙에 의한 일관성을 보장하며, 식이 좌표 변환에 대해 텐서적 의미를 가지도록 한다.

4.2 유클리드 공간에서의 완화

유클리드 공간에서 메트릭이 \delta_{ij}이면 반변과 공변의 구분이 사라지므로, 두 지표가 모두 아래 첨자인 a_i b_i와 같은 표기가 흔히 사용된다. 그러나 일반적 곡면이나 민코프스키 시공간에서는 이러한 표기가 텐서적으로 부적절하며, 지표 균형을 엄격히 준수해야 한다.

5. 수치 계산 라이브러리에서의 구현

5.1 einsum 함수

아인슈타인 합산 규약은 현대의 수치 계산 및 딥러닝 라이브러리에서 일반화된 텐서 연산 인터페이스로 구현되어 있다. NumPy의 numpy.einsum, PyTorch의 torch.einsum, TensorFlow의 tf.einsum, JAX의 jax.numpy.einsum 등이 대표적이다.

이러한 함수는 문자열 형태의 지표 패턴을 인자로 받아 임의의 다중 텐서 수축을 단일 호출로 수행한다:

  • 행렬 곱: einsum("ik,kj->ij", A, B)
  • 배치 행렬 곱: einsum("bik,bkj->bij", A, B)
  • 트랜스포머 주의 점수: einsum("bhid,bhjd->bhij", Q, K)

5.2 최적 수축 순서

다중 텐서의 수축에서 연산 순서에 따라 계산 복잡도가 크게 달라진다. opt_einsum과 같은 라이브러리는 동적 계획법(dynamic programming)을 통해 최적 수축 순서를 탐색하여, 큰 중간 텐서의 생성을 회피하고 전체 부동소수점 연산 수(FLOPs)를 최소화한다.

6. 결론

아인슈타인 합산 규약은 텐서 표현식에서 합산 기호를 생략함으로써 수식의 가독성을 크게 개선하는 표기 체계이다. 더미 지표와 자유 지표의 명확한 구분, 반복 지표에 대한 자동 합산, 그리고 반변-공변 균형의 원칙은 이 규약이 단순한 표기상의 편의를 넘어 텐서의 좌표 변환 일관성을 보장하는 형식적 도구임을 보여준다. 이 규약은 일반 상대성 이론에서 출발하여 현대 딥러닝 프레임워크의 핵심 연산 추상화로 자리 잡았으며, 복잡한 다차원 텐서 연산을 간결하고 오류 없이 표현하는 표준이다.