28.26 텐서 분해(Tensor Decomposition)의 개요와 목적
텐서 분해는 고차 텐서를 보다 단순한 저차 구성 요소들의 조합으로 표현하여, 원본 데이터의 구조적 정보를 손실 없이 또는 최소한의 근사 오차로 압축하는 수학적 기법이다. 이는 2차 텐서인 행렬에 대한 특이값 분해(SVD)나 고유값 분해의 자연스러운 일반화로 간주될 수 있으며, 신호 처리, 화학 계량학, 심리 측정, 추천 시스템, 그리고 최근에는 딥러닝 모델의 파라미터 압축에 이르기까지 광범위한 분야에서 활용된다. 본 절에서는 텐서 분해의 필요성, 주요 접근법의 분류, 수학적 목적 함수, 그리고 딥러닝에서의 응용 의의를 다룬다.
1. 텐서 분해의 필요성
n차 텐서 \mathcal{T} \in \mathbb{R}^{d_1 \times d_2 \times \cdots \times d_n}의 원소 수는 N = \prod_{k=1}^{n} d_k이며, 차수가 증가함에 따라 지수적으로 증가한다. 이러한 현상을 차원의 저주(curse of dimensionality)라 하며, 고차 텐서를 직접 저장하거나 연산하는 것은 메모리와 계산 자원의 관점에서 비현실적이다. 예를 들어 10차 텐서가 각 차원의 크기가 100인 경우, 전체 원소 수는 10^{20}이 되어 저장조차 불가능하다. 텐서 분해는 원본 텐서에 내재한 저계수(low-rank) 또는 저복잡도 구조를 이용하여, 파라미터 수를 다항식 수준으로 줄이면서도 원본 정보를 충실히 표현할 수 있게 한다.
2. 주요 접근법의 분류
텐서 분해는 목표로 하는 구조에 따라 여러 범주로 분류된다. 대표적인 세 가지 접근법은 다음과 같다.
첫째, CP 분해(CANDECOMP/PARAFAC Decomposition)는 텐서를 유한 개의 랭크-1 텐서의 합으로 표현하며, 가장 직관적인 일반화이다. 공식은 다음과 같다.
\mathcal{T} \approx \sum_{r=1}^{R} \mathbf{a}_r^{(1)} \otimes \mathbf{a}_r^{(2)} \otimes \cdots \otimes \mathbf{a}_r^{(n)}
여기서 R은 분해 랭크이고, \mathbf{a}_r^{(k)} \in \mathbb{R}^{d_k}는 각 모드의 성분 벡터이다.
둘째, 터커 분해(Tucker Decomposition)는 핵심 텐서(core tensor) \mathcal{G}와 각 모드에 대한 인자 행렬(factor matrix)들의 다중선형 곱으로 표현한다.
\mathcal{T} \approx \mathcal{G} \times_1 U^{(1)} \times_2 U^{(2)} \cdots \times_n U^{(n)}
여기서 \times_k는 모드-k 곱이다. 터커 분해는 CP 분해를 포함하는 더 일반적인 모델로, 각 모드별 다중 랭크(multilinear rank)를 허용한다.
셋째, 텐서 트레인(Tensor Train) 분해는 고차 텐서를 연속된 3차 텐서들의 연쇄 축약으로 표현한다.
\mathcal{T}_{i_1 i_2 \cdots i_n} = G^{(1)}_{i_1}\, G^{(2)}_{i_2}\, \cdots\, G^{(n)}_{i_n}
여기서 각 G^{(k)}는 경계 텐서를 제외하면 3차 텐서이다. 이 외에도 계층적 터커(HT), 텐서 링(Tensor Ring) 등의 변형이 존재한다.
3. 분해 모델의 비교
| 분해 방법 | 파라미터 수 | 표현력 | 특징 |
|---|---|---|---|
| CP 분해 | O(nRd) | 랭크-1 합 | 유일성(특정 조건 하에서) |
| 터커 분해 | O(R^n + nRd) | 다중선형 랭크 | 핵심 텐서 포함 |
| 텐서 트레인 | O(nR^2 d) | 선형 체인 | 고차 확장성 우수 |
| 계층적 터커 | O(nR^3 + nRd) | 트리 구조 | 이론적 엄밀성 |
표에서 d = \max_k d_k는 모드의 최대 크기이고, R은 대표 랭크이다. CP는 파라미터가 가장 적지만 근사 품질은 상대적으로 제한되며, 터커는 R^n 항으로 인해 차수가 높을 때 비효율적이다. 텐서 트레인은 차수 n에 대해 선형적으로 확장되어 고차 텐서 분해에 가장 적합하다.
4. 최적화 목적 함수
대부분의 텐서 분해는 다음과 같은 최소 제곱 오차 목적 함수를 통해 정의된다.
\min_{\text{parameters}}\ \left\lVert \mathcal{T} - \tilde{\mathcal{T}}(\text{parameters}) \right\rVert_F^2
여기서 \lVert \cdot \rVert_F는 프로베니우스 노름(Frobenius norm)으로, 텐서의 모든 원소에 대한 제곱합의 제곱근으로 정의된다.
\lVert \mathcal{T} \rVert_F = \sqrt{\sum_{i_1, i_2, \ldots, i_n} \vert \mathcal{T}_{i_1 i_2 \cdots i_n} \vert^2}
특이값 분해와 달리 고차 텐서 분해는 일반적으로 닫힌 형태의 해가 존재하지 않으며, 교대 최소 제곱법(Alternating Least Squares, ALS), 경사 하강법, 또는 고차 특이값 분해(HOSVD) 등의 반복적 알고리즘을 사용해 해를 구한다.
5. 텐서 분해의 목적과 응용
텐서 분해는 네 가지 주요 목적을 가진다. 첫째, 데이터 압축과 메모리 절감이다. 저랭크 근사는 원본 대비 수십 배에서 수천 배까지 메모리 사용량을 줄일 수 있다. 둘째, 잠재 구조의 발견이다. 각 성분 벡터나 핵심 텐서는 데이터에 내재한 잠재 요인(latent factor)으로 해석될 수 있다. 셋째, 노이즈 제거와 정규화이다. 저랭크 근사는 데이터에 포함된 잡음을 자연스럽게 제거하는 효과를 갖는다. 넷째, 계산 가속이다. 저랭크 표현 하에서는 텐서 연산의 계산 복잡도가 현저히 감소한다. 딥러닝에서는 완전 연결 계층의 가중치 행렬, 합성곱 커널, 그리고 임베딩 테이블의 압축에 텐서 분해가 적용되어, 모델 크기와 추론 속도를 동시에 개선한다. 또한 대규모 언어 모델의 어텐션 가중치나 MLP 블록에 저랭크 적응(Low-Rank Adaptation) 기법이 적용되며, 이는 파라미터 효율적 미세 조정(parameter-efficient fine-tuning)의 핵심 기반이다.