텐서(Tensor)와 행렬의 차이점 분석

텐서(Tensor)와 행렬(Matrix)는 모두 다차원 배열 구조를 가지며, 수학, 물리학, 그리고 특히 딥러닝에서 자주 사용되는 개념입니다. 하지만 이 둘은 차원, 표현 방식, 그리고 연산 방식에서 중요한 차이가 있습니다. 이 글에서는 텐서와 행렬의 정의, 차이점, 연산 구조, 그리고 활용 사례를 비교 분석합니다.

1. 정의 비교

1-1. 행렬(Matrix)

2차원 배열 구조로, 숫자들이 행과 열로 구성된 형태입니다:

\[ A = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \]

  • 차원: 2차원 (행 × 열)
  • 기본 연산: 곱셈, 전치, 역행렬, 행렬식 등

1-2. 텐서(Tensor)

텐서는 0차원(스칼라), 1차원(벡터), 2차원(행렬), 그 이상의 모든 다차원 배열을 포함하는 일반화된 구조입니다.

  • 차원: n차원 (n ≥ 0)
  • 예: 스칼라(0D), 벡터(1D), 행렬(2D), 3D 텐서 등
  • 형태 예시: 이미지(batch, height, width, channel) → 4D 텐서

2. 차원의 관점에서의 차이

차원설명
0D\( x = 3 \)스칼라
1D\( \vec{x} = [1, 2, 3] \)벡터
2D행렬표 형태
3D 이상텐서다차원 배열 (예: 시계열, 이미지, 동영상 등)

3. 연산적 차이

  • 행렬 연산: 주로 2차원에 제한 (예: 행렬 곱)
  • 텐서 연산: 축(axis)을 기준으로 다양한 차원 간 연산 가능

예시: 텐서 축 기반 연산


import numpy as np

T = np.random.rand(3, 4, 5)
mean_across_axis_0 = np.mean(T, axis=0)   # (4, 5)

텐서 곱 (Tensor contraction)

\[ C_{ijk} = \sum_l A_{ijl} \cdot B_{lk} \]

4. 표현력 차이

  • 행렬은 이차원 관계(입력-출력)만 표현
  • 텐서는 시간, 채널, 배치 등 고차원 관계 표현 가능

5. 딥러닝에서의 활용

5-1. 입력 데이터

  • 1D: 시계열
  • 2D: 표형 데이터
  • 3D: 이미지 (height × width × channel)
  • 4D: 배치 처리 (batch × height × width × channel)

5-2. 파라미터

각 층의 가중치는 고차원 텐서로 저장되며, 합성곱(Convolution), RNN, Transformer 등에서 모두 사용

6. Numpy/PyTorch/TensorFlow 구현 예

Numpy 3차원 텐서 생성


import numpy as np
T = np.random.rand(2, 3, 4)  # shape = (2, 3, 4)

PyTorch 텐서


import torch
T = torch.randn(64, 3, 28, 28)  # batch of 64 RGB images

결론

행렬은 2차원 배열의 특수한 경우이며, 텐서는 이를 포함하는 더 일반적인 개념입니다.

행렬은 수치 해석과 선형대수의 핵심 개체이고, 텐서는 고차원 데이터 표현과 계산을 위한 현대적인 수학 구조입니다. 딥러닝에서는 텐서를 통해 데이터를 구조화하고 GPU에서 효율적으로 연산합니다.

따라서, 텐서와 행렬의 차이를 이해하는 것은 수학, 머신러닝, 딥러닝의 기초 개념을 정확히 잡는 데 필수적입니다.