28.2 텐서의 차수(Order)와 계수(Rank)의 정의 및 구분

28.2 텐서의 차수(Order)와 계수(Rank)의 정의 및 구분

1. 텐서의 차수(Order)

텐서의 차수(order), 또는 모드(mode) 수는 텐서의 원소를 참조하는 데 필요한 인덱스의 개수이다. d차 텐서(order-d tensor)는 d개의 인덱스 (i_1, i_2, \ldots, i_d)로 원소를 지정한다. 차수를 차원(dimension)이나 방향(way)이라 부르기도 하나, 벡터 공간의 차원(dimension)과 혼동을 피하기 위하여 차수(order) 또는 모드(mode)라는 용어를 사용하는 것이 바람직하다.

차수 d대상표기인덱스 수
0스칼라a0
1벡터v_i1
2행렬A_{ij}2
33차 텐서\mathcal{T}_{ijk}3
dd차 텐서\mathcal{T}_{i_1 i_2 \cdots i_d}d

텐서의 형상(shape) (n_1, n_2, \ldots, n_d)은 각 모드의 크기를 나타내며, 전체 원소 수는 \prod_{k=1}^{d} n_k이다. 딥러닝 프레임워크에서 tensor.ndim 또는 len(tensor.shape)이 차수에 해당한다.

각 모드는 독립적인 인덱싱 방향을 나타낸다. 예를 들어, (B, C, H, W) 형상의 4차 텐서에서 모드 1은 배치(batch), 모드 2는 채널(channel), 모드 3은 높이(height), 모드 4는 너비(width)를 나타낸다. 각 모드는 해당 방향의 벡터 공간과 연결되며, 이는 텐서가 여러 벡터 공간의 텐서곱 공간의 원소라는 수학적 해석과 일치한다.

2. 텐서의 계수(Rank)

텐서의 계수(rank)는 차수와 전혀 다른 개념이며, 행렬의 계수(matrix rank)와도 구별되어야 한다. 텐서 계수는 텐서를 순위-1 텐서(rank-1 tensor)들의 합으로 표현할 때 필요한 최소 항의 수이다.

순위-1 텐서의 정의: d차 텐서 \mathcal{T} \in \mathbb{R}^{n_1 \times n_2 \times \cdots \times n_d}가 순위-1이라 함은, d개의 벡터 \mathbf{a}^{(1)} \in \mathbb{R}^{n_1}, \ldots, \mathbf{a}^{(d)} \in \mathbb{R}^{n_d}의 외적(outer product)으로 표현되는 것이다.

\mathcal{T}_{i_1 i_2 \cdots i_d} = a^{(1)}_{i_1} a^{(2)}_{i_2} \cdots a^{(d)}_{i_d}

이를 \mathcal{T} = \mathbf{a}^{(1)} \circ \mathbf{a}^{(2)} \circ \cdots \circ \mathbf{a}^{(d)}로 표기한다. 여기서 \circ는 외적(outer product)이다.

텐서 계수의 정의: 텐서 \mathcal{T}의 계수(rank) R은 다음을 만족하는 최소 정수이다.

\mathcal{T} = \sum_{r=1}^{R} \mathbf{a}_r^{(1)} \circ \mathbf{a}_r^{(2)} \circ \cdots \circ \mathbf{a}_r^{(d)}

행렬(2차 텐서)의 경우 텐서 계수는 행렬 계수(matrix rank)와 일치한다. 순위-1 행렬은 \mathbf{A} = \mathbf{u}\mathbf{v}^\top이며, 행렬을 순위-1 행렬의 합으로 표현하는 최소 항의 수가 행렬 계수이다.

3. 차수와 계수의 구분

차수와 계수는 텐서의 서로 다른 측면을 나타내므로 명확히 구분해야 한다.

차수(Order): 텐서의 구조적 차원이다. 인덱스의 수로 결정되며, 텐서의 형상으로부터 즉시 파악된다. 항상 비음수 정수이다.

계수(Rank): 텐서의 복잡도를 나타내는 내재적 성질이다. 순위-1 분해에 필요한 최소 항의 수이며, 일반적으로 계산하기 어렵다.

구체적 예를 통해 차이를 명확히 하자. 3 \times 3 단위 행렬 \mathbf{I}_3은 차수 2이고 계수 3이다. 3 \times 3 영 행렬 \mathbf{O}는 차수 2이고 계수 0이다. 순위-1 행렬 \mathbf{u}\mathbf{v}^\top1000 \times 1000 크기일지라도 차수 2이고 계수 1이다.

3차 이상의 텐서에서 계수의 성질은 행렬과 크게 다르다.

NP-난해성: 3차 이상 텐서의 계수를 결정하는 문제는 NP-난해(NP-hard)이다. 이는 Hastad (1990)에 의해 증명되었으며, 행렬 계수가 다항 시간에 계산 가능한 것과 대조적이다.

최대 계수: n \times n \times n 텐서의 최대 가능 계수는 \lceil n^3 / (3n - 2) \rceil 이상이다. 이는 행렬의 최대 계수 \min(m, n)보다 훨씬 클 수 있다.

실수 계수와 복소 계수의 불일치: 3차 이상에서 실수체 위의 텐서 계수와 복소수체 위의 텐서 계수가 다를 수 있다. 이러한 현상은 행렬에서는 발생하지 않는다.

4. 다중선형 계수(Multilinear Rank)

텐서 계수 외에 다중선형 계수(multilinear rank) 또는 모드-k 계수의 개념이 있다. d차 텐서 \mathcal{T}의 모드-k 계수는 모드-k 행렬화(matricization) \mathbf{T}_{(k)}의 행렬 계수이다.

r_k = \text{rank}(\mathbf{T}_{(k)}), \quad k = 1, 2, \ldots, d

여기서 모드-k 행렬화 \mathbf{T}_{(k)} \in \mathbb{R}^{n_k \times (n_1 \cdots n_{k-1} n_{k+1} \cdots n_d)}k번째 모드의 섬유들을 열벡터로 배열한 행렬이다.

다중선형 계수 (r_1, r_2, \ldots, r_d)는 텐서 계수보다 계산이 용이하며, 터커 분해(Tucker decomposition)의 핵심 텐서 크기를 결정한다. 일반적으로 r_k \leq R (R은 텐서 계수)이 성립하나, 등호는 보장되지 않는다.

5. 딥러닝에서의 차수와 계수

딥러닝에서 텐서의 차수는 데이터와 모델의 구조를 설계하는 핵심 요소이다. 차수의 증가는 표현할 수 있는 관계의 복잡성을 높이지만, 원소 수가 차원 크기의 곱으로 폭발적으로 증가하므로(차원의 저주, curse of dimensionality), 효율적 표현과 연산이 중요해진다.

텐서의 계수 개념은 모델 압축과 효율적 추론에 활용된다. 가중치 텐서를 저순위로 근사하는 CP 분해나 터커 분해는 매개변수 수와 연산량을 크게 줄일 수 있다. 예를 들어, 합성곱 커널 \mathcal{K} \in \mathbb{R}^{C_{\text{out}} \times C_{\text{in}} \times k \times k}를 순위 R의 CP 분해로 근사하면, 원소 수가 C_{\text{out}} C_{\text{in}} k^2에서 R(C_{\text{out}} + C_{\text{in}} + 2k)로 감소한다. 이러한 저순위 근사는 모바일 기기와 같은 자원 제한 환경에서의 추론 효율화에 실용적으로 중요하다.