28.1 텐서(Tensor)의 직관적 정의와 스칼라, 벡터, 행렬과의 관계

28.1 텐서(Tensor)의 직관적 정의와 스칼라, 벡터, 행렬과의 관계

1. 텐서의 직관적 이해

텐서(tensor)는 수를 체계적으로 배열한 다차원 구조이다. 가장 직관적인 수준에서 텐서는 인덱스의 수에 의해 분류되는 수의 배열이다. 하나의 수(인덱스 0개)는 스칼라, 일렬로 나열된 수(인덱스 1개)는 벡터, 직사각형으로 배열된 수(인덱스 2개)는 행렬이다. 텐서는 이 체계를 임의의 차원으로 확장한 것으로, d개의 인덱스로 참조되는 수의 배열을 d차 텐서라 한다.

d차 텐서 \mathcal{T}의 각 원소는 d개의 인덱스 (i_1, i_2, \ldots, i_d)에 의해 지정된다.

\mathcal{T}_{i_1 i_2 \cdots i_d} \in \mathbb{R}, \quad 1 \leq i_k \leq n_k, \quad k = 1, 2, \ldots, d

여기서 n_kk번째 차원의 크기이다. 텐서의 형상(shape)은 (n_1, n_2, \ldots, n_d)로 표기하며, 전체 원소의 수는 \prod_{k=1}^{d} n_k이다.

이 정의는 딥러닝에서 사용되는 실용적 수준의 텐서 개념이다. 수학적으로 더 엄밀한 텐서의 정의는 다중선형대수학에서 다중선형 사상(multilinear map) 또는 텐서곱 공간의 원소로서 주어지나, 딥러닝의 실용적 맥락에서는 다차원 배열로서의 텐서 개념이 주로 사용된다.

2. 차수별 텐서의 계층 구조

텐서는 차수(order)에 따라 자연스러운 계층 구조를 형성한다.

0차 텐서 (스칼라): 인덱스가 없는 단일 수이다. a \in \mathbb{R}. 형상은 () 또는 스칼라로 표기한다. 예를 들어, 온도 T = 25.0, 손실 함수 값 \mathcal{L} = 0.347 등이 0차 텐서이다.

1차 텐서 (벡터): 하나의 인덱스로 원소를 참조하는 1차원 배열이다. \mathbf{v} \in \mathbb{R}^n에서 v_ii번째 원소이다. 형상은 (n,)이다.

\mathbf{v} = \begin{pmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{pmatrix}

2차 텐서 (행렬): 두 개의 인덱스로 원소를 참조하는 2차원 배열이다. \mathbf{A} \in \mathbb{R}^{m \times n}에서 a_{ij}ij열의 원소이다. 형상은 (m, n)이다.

3차 텐서: 세 개의 인덱스로 원소를 참조한다. \mathcal{T} \in \mathbb{R}^{n_1 \times n_2 \times n_3}에서 \mathcal{T}_{ijk}(i, j, k) 위치의 원소이다. 3차 텐서를 시각화하면 직육면체 형태의 수의 배열이다. 컬러 이미지가 3차 텐서의 대표적 예이다. 높이 H, 너비 W, 채널 수 C인 이미지는 형상 (H, W, C) 또는 (C, H, W)의 3차 텐서이다.

4차 이상의 텐서: 4개 이상의 인덱스를 가지며, 직접적인 기하학적 시각화는 어렵지만 수학적으로 동일한 원리가 적용된다. 딥러닝에서 미니 배치(mini-batch)는 데이터의 차수를 하나 높인다. 이미지 배치는 (B, C, H, W) 형상의 4차 텐서이고, 영상 배치는 (B, T, C, H, W) 형상의 5차 텐서이다.

3. 포함 관계와 구조적 비교

스칼라, 벡터, 행렬, 고차 텐서 사이의 관계를 다음과 같이 정리할 수 있다.

차수명칭인덱스 수형상 예시원소 수
0스칼라0()1
1벡터1(n,)n
2행렬2(m, n)mn
33차 텐서3(n_1, n_2, n_3)n_1 n_2 n_3
dd차 텐서d(n_1, \ldots, n_d)\prod_{k=1}^d n_k

이 계층에서 낮은 차수의 텐서는 높은 차수 텐서의 특수한 경우로 볼 수 있다. 스칼라는 크기 1인 벡터의 원소로, 벡터는 하나의 열을 가진 행렬로, 행렬은 하나의 “슬라이스“를 가진 3차 텐서로 이해할 수 있다.

그러나 이러한 포함 관계는 형식적인 것에 한정되며, 각 차수의 텐서는 고유한 수학적 구조를 가진다. 벡터는 선형 결합이 정의되는 벡터 공간의 원소이고, 행렬은 선형 사상의 표현이며, 고차 텐서는 다중선형 사상의 표현이다. 차수가 높아질수록 표현할 수 있는 관계의 복잡성이 증가한다.

4. 텐서의 슬라이싱과 섬유

고차 텐서에서 일부 인덱스를 고정하면 낮은 차수의 텐서를 얻는다. 이를 슬라이싱(slicing)이라 한다.

3차 텐서 \mathcal{T} \in \mathbb{R}^{n_1 \times n_2 \times n_3}에서:

  • 두 인덱스를 고정하면 1차 텐서(벡터)를 얻으며, 이를 섬유(fiber)라 한다. 모드-1 섬유 \mathcal{T}_{:jk}, 모드-2 섬유 \mathcal{T}_{i:k}, 모드-3 섬유 \mathcal{T}_{ij:}의 세 유형이 있다.
  • 하나의 인덱스를 고정하면 2차 텐서(행렬)를 얻으며, 이를 슬라이스(slice)라 한다. 수평 슬라이스 \mathcal{T}_{i::}, 측면 슬라이스 \mathcal{T}_{:j:}, 정면 슬라이스 \mathcal{T}_{::k}가 있다.

이러한 슬라이싱 개념은 행렬의 행벡터와 열벡터의 자연스러운 일반화이다. 행렬 \mathbf{A}i번째 행 \mathbf{A}_{i:}j번째 열 \mathbf{A}_{:j}는 각각 모드-2 섬유와 모드-1 섬유에 해당한다.

5. 딥러닝에서의 텐서 사용

딥러닝에서 텐서는 데이터, 매개변수, 중간 계산 결과를 저장하는 기본 자료 구조이다.

데이터 표현: 자연어 처리에서 토큰 임베딩의 배치는 (B, L, d) 형상의 3차 텐서이다. B는 배치 크기, L은 시퀀스 길이, d는 임베딩 차원이다. 컴퓨터 비전에서 이미지 배치는 (B, C, H, W) 형상의 4차 텐서이다.

매개변수 표현: 완전 연결 계층의 가중치는 2차 텐서(행렬) \mathbf{W} \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}}이고, 합성곱 계층의 커널은 4차 텐서 \mathcal{K} \in \mathbb{R}^{C_{\text{out}} \times C_{\text{in}} \times k_H \times k_W}이다. 어텐션 메커니즘의 쿼리-키-값 가중치는 각각 행렬이지만, 다중 헤드(multi-head)를 고려하면 3차 텐서 \mathcal{W} \in \mathbb{R}^{h \times d_{\text{model}} \times d_k}로 볼 수 있다.

연산과 텐서의 상호작용: 행렬 곱셈 \mathbf{Y} = \mathbf{X}\mathbf{W}^\top은 2차 텐서 간의 연산이다. 배치 행렬 곱셈 torch.bmm은 3차 텐서 간의 연산으로, 배치 차원에 대해 독립적인 행렬 곱셈을 수행한다. torch.einsum은 아인슈타인 합산 규약을 통해 임의의 텐서 축약(contraction)을 통합적으로 표현한다.

텐서 개념의 이해는 딥러닝 모델의 설계, 구현, 디버깅에 필수적이다. 차원 불일치(dimension mismatch) 오류의 해결, 메모리 사용량의 분석, 연산 효율의 최적화 모두 텐서의 형상과 구조에 대한 이해를 기반으로 한다.