텐서 네트워크

편집 역사 토론
양자역학 계산물리 수치해석 마지막 수정: 2026-08-26 04:18:41

1. 개요[편집]

텐서 네트워크
Tensor Network
정체거대한 텐서를 작은 텐서들의 축약(contraction)으로 인수분해한 표현
표기펜로즈 도표 — 다리 = 지수, 이어진 다리 = 합
압축 손잡이결합차원 χ (bond dimension)
압축 도구특이값 분해 절단
대표 구조MPS/TT · PEPS · MERA · TTN
비용을 결정하는 것네트워크의 모양이 아니라 축약 순서

지수적으로 큰 배열을 지수적으로 크게 쓰지 않는 방법. 이게 전부다.

텐서 네트워크(tensor network)는 지수 개수가 아주 많은 하나의 거대한 텐서를, 지수를 몇 개씩만 가진 작은 텐서 여러 개의 축약(contraction, 공통 지수에 대한 합)으로 표현하는 인수분해 형식이다. 양자 다체 파동함수, 고차원 함수, 확률 그래프 모형처럼 “성분을 다 적으면 dNd^{N} 개”인 대상을 다룰 때, 그 배열을 통째로 메모리에 올리는 대신 작은 텐서들의 연결 구조로 저장한다.

숫자를 넣어 보면 왜 이런 짓을 하는지 바로 나온다. 스핀 1/2 자리 100개짜리 사슬의 파동함수는 성분이 210010302^{100}\approx 10^{30} 개다. 복소 배정밀도로 저장하려면 우주 원자 수를 걱정할 판이다. 그런데 자리마다 χ×χ\chi\times\chi 행렬 두 장씩만 두는 행렬곱 상태로 쓰면 파라미터가 100×2×χ2100\times 2\times\chi^{2}χ=200\chi=200 이어도 800만 개다. 문제는 이 압축이 언제 정당하냐인데, 그 답이 얽힘 면적법칙이다.

텐서 네트워크는 물리에서 DMRG의 사후 해석으로 자라났지만, 지금은 훨씬 넓다. 고차원 함수 근사(텐서-트레인), 양자 회로 시뮬레이션, 확률 모형의 주변화, 심층 학습 층의 압축이 모두 같은 언어로 쓰인다. 알고리즘 하나가 아니라 자료구조에 가깝다.1

2. 도표 표기법 — 다리와 연결[편집]

텐서 네트워크 논문이 수식보다 그림이 많은 데는 이유가 있다. 지수 이름을 일일이 적는 아인슈타인 합 규약은 지수가 여덟 개만 넘어가도 사람이 못 읽는다. 그래서 펜로즈 도표를 쓴다.

  • 도형 하나 = 텐서 하나. 삐져나온 다리(leg) 하나 = 지수 하나다. 다리가 0개면 스칼라, 1개면 벡터, 2개면 행렬, 3개 이상이면 그냥 텐서.
  • 두 다리를 이으면 그 지수에 대해 합한다. kAikBkj\sum_{k}A_{ik}B_{kj} 는 다리 하나로 이어진 도형 두 개다.
  • **남은 다리(열린 다리)의 개수가 결과 텐서의 계수(rank)**다. 열린 다리가 없으면 결과는 숫자 하나.

그래서 행렬곱, 대각합, 내적, 크로네커 곱(크로네커 곱)이 전부 “선을 어떻게 잇느냐”의 변주로 통일된다. 코드에서는 numpy.einsum 이나 ncon 류 함수가 이 도표를 그대로 받아 적는 인터페이스 역할을 한다.

한 가지 습관을 미리 들여 두는 게 좋다. 텐서를 행렬로 되돌리는 조작(reshape) — 다리 몇 개를 묶어 하나의 굵은 다리로 보는 것 — 이 텐서 네트워크의 거의 모든 계산에서 등장한다. 특이값 분해는 행렬에만 정의되므로, 텐서를 자르려면 먼저 다리를 두 뭉치로 갈라 행렬로 만들어야 하기 때문이다.

3. 압축의 원리 — SVD 절단과 게이지[편집]

텐서 네트워크의 압축은 마법이 아니라 저계수 근사다. 텐서 TT 의 다리를 AA 뭉치와 BB 뭉치로 갈라 행렬 T(A),(B)T_{(A),(B)} 로 보고 SVD 하면

T(A),(B)=kU(A)kskVk(B)T_{(A),(B)} = \sum_{k} U_{(A)k}\,s_{k}\,V^{\dagger}_{k(B)}

이고, 특이값 sks_{k} 를 큰 것부터 χ\chi 개만 남기면 그 자리에 결합차원 χ\chi 짜리 다리가 생긴다. 이때 버려진 오차는 에카르트-영-미르스키 정리에 따라 프로베니우스 노름 기준 최적이며, 그 크기는 버려진 특이값의 제곱합

ε=k>χsk2ksk2\varepsilon = \frac{\sum_{k>\chi} s_{k}^{2}}{\sum_{k} s_{k}^{2}}

이다. 텐서 네트워크 계산에서 “얼마나 믿을 수 있냐”를 묻는다면 답은 언제나 이 ε\varepsilon 이지 χ\chi 자체가 아니다.

여기에 반드시 붙는 조건이 게이지다. 다리 하나에 XX1X X^{-1} 을 끼워 넣고 좌우 텐서에 각각 흡수시켜도 네트워크가 나타내는 값은 변하지 않는다. 즉 표현은 유일하지 않다. 문제는 SVD 절단이 잘라 내려는 다리의 양쪽 나머지가 등척(isometry)일 때만 전역적으로 최적이라는 점이다. 그래서 루프가 없는 네트워크에서는

  • 왼쪽 텐서들을 전부 좌정규(left-canonical), 오른쪽 텐서들을 전부 우정규(right-canonical)로 만들고,
  • 자르려는 자리에만 정규화되지 않은 직교 중심(orthogonality center)을 둔다.

정준형/중심 게이지를 만들어 놓고 자른다. QR과 SVD를 사슬을 따라 훑으며 중심을 옮기는 것이 실무 코드의 기본 동작이고, 이걸 안 하고 아무 데나 자르면 오차가 통제되지 않는다.2 루프가 있는 네트워크(PEPS)에는 이런 정준형이 존재하지 않으며, 그래서 PEPS의 절단은 원리적으로 근사일 수밖에 없다.

4. 네트워크 동물원[편집]

구조기하표현 가능한 얽힘축약
MPS / TT1차원 사슬상수 (면적법칙)정확, 값싸다
TTN트리트리 절단면 기준 면적법칙정확 (루프 없음)
PEPS2차원 격자2차원 면적법칙정확 축약이 #P-난해
MERA사슬 + 스케일 방향로그 위반 log\log \ell정확, 다만 비싸다
  • MPS / 텐서-트레인(TT). 자리마다 텐서 하나를 놓고 일렬로 이은 것. 물리에서는 행렬곱 상태(matrix product state), 수치해석에서는 오셀레데츠(2011)가 정리한 텐서-트레인 분해라는 이름으로 각각 재발견됐다. 정준형이 있고, 겹침 계산이 O(Ndχ3)O(Nd\chi^{3}) 이며, DMRG 라는 압도적으로 잘 되는 최적화 알고리즘이 붙어 있다. 텐서 네트워크가 실제로 “일하는” 곳의 9할이 여기다.
  • PEPS. MPS를 2차원 격자로 올린 것. 2차원 면적법칙(SLS\sim L)을 결합차원 DD 를 상수로 두고도 표현할 수 있다는 점에서 표현력은 옳다. 문제는 축약이다. 루프가 있어 정확한 축약이 다항식 시간에 안 되고, 슈흐 등(2007)이 이 문제가 #P-난해임을 보였다. 그래서 실무는 경계 MPS, 모서리 전달행렬(CTMRG) 같은 근사 축약을 쓰고, 비용이 DD 의 높은 멱(전면 갱신에서는 열 제곱 안팎)으로 뛴다. D=8D=8 만 되어도 논문 하나가 나오는 이유.
  • MERA. 등척 텐서(coarse-graining)와 얽힘 해제자(disentangler)를 층층이 쌓아 스케일 방향으로 뻗은 네트워크. 절단면이 층을 가로지르는 개수가 log\log\ell 로 자라기 때문에, 임계계의 로그 위반 SlogS\sim \log\ell구조 자체로 담는다. 재규격화군의 실공간 그림을 텐서로 구현한 물건에 가깝고, 층수와 스케일 불변성에서 임계 지수를 직접 뽑을 수 있다. 대신 축약 비용이 χ8\chi^{8}χ9\chi^{9} 수준이라 결합차원을 못 키운다.
  • TTN(트리 텐서 네트워크). 루프가 없어 정준형과 정확 축약이 살아 있으면서, 사슬보다 절단면 구조가 유연하다. 양자화학처럼 “1차원으로 늘어놓을 자연스러운 순서가 없는” 계에서 MPS의 대안으로 쓰인다.

5. 축약 순서가 전부다[편집]

네트워크가 무엇을 표현하는지는 그림이 정하지만, 얼마나 걸리는지는 순서가 정한다. 이게 초심자가 가장 많이 데는 곳이다.

가장 작은 예가 행렬 사슬이다. A(1000×2)B(2×1000)C(1000×2)A_{(1000\times 2)}B_{(2\times 1000)}C_{(1000\times 2)}(AB)C(AB)C 로 하면 2×106+2×1062\times10^{6}+2\times10^{6} 번 곱하지만, A(BC)A(BC) 로 하면 4000+40004000+4000 번이면 끝난다. 500배 차이가 순서 하나에서 나온다. 텐서 네트워크에서는 지수 차원이 χ\chi 라 이 격차가 χ\chi 의 멱으로 벌어진다.

  • 행렬 사슬처럼 선형인 경우동적 계획법으로 최적 순서를 O(n3)O(n^{3}) 에 찾는다(행렬 연쇄 곱셈 문제).
  • 일반 네트워크는 NP-난해다. 게다가 축약 비용의 하한이 네트워크 그래프의 트리폭(treewidth) 으로 특징지어진다는 것이 마르코프-시(2008)의 결과다. 루프가 많고 뒤엉킨 그래프일수록 원리적으로 비싸다.
  • 실무는 휴리스틱. 매 단계에서 중간 텐서 크기가 가장 작아지는 쌍을 고르는 그리디, 작은 네트워크에 대한 완전 탐색/분기한정, 그리고 요즘 표준이 된 하이퍼그래프 분할 기반 방법(cotengra, opt_einsum)이 있다. 그래프 분할 알고리즘을 그대로 가져다 쓰는 셈이다.
  • 메모리와 시간의 교환. 중간 텐서가 RAM을 넘기면 순서를 바꾸거나 다리를 잘라(slicing) 여러 조각의 독립 계산으로 나눈다. 슬라이싱은 총 연산량을 늘리는 대신 완벽하게 병렬화되므로 GPU 클러스터와 궁합이 좋다.

6. 응용[편집]

  • 양자 다체 바닥상태. DMRG(MPS), PEPS 변분법, MERA. 양자 몬테카를로가 부호 문제로 못 가는 좌절 자기계·페르미온 계에서 대안 노릇을 한다. 대신 여기는 결합차원이 벽이다.
  • 시간 발전. TEBD, TDVP. 얽힘이 시간에 선형으로 자라면 χ\chi 가 지수적으로 커지므로 접근 가능한 시간이 짧다 — 알고리즘의 미숙이 아니라 물리다.
  • 양자 회로 시뮬레이션. 회로를 텐서 네트워크로 보고 진폭이나 샘플을 축약으로 계산한다. 2019년 구글의 시카모어 초전도 회로 실험이 “고전 컴퓨터로 1만 년”이라고 주장한 문제에 대해, 이후 몇 년간 텐서 네트워크 축약 기반 계산들이 그 추정을 계속 끌어내렸다. 2022년에는 GPU 수백 장 규모로 하루가 채 안 걸리는 시간에 같은 회로의 상관된 비트열 100만 개를 목표 충실도로 뽑아낸 결과가 나왔다. 회로의 깊이가 얕고 얽힘이 덜 자랐을 때 텐서 네트워크는 무섭게 강하다는 것이 교훈이었다.3
  • 고차원 함수 표현. dd 변수 함수를 각 축 nn 점으로 이산화하면 ndn^{d} 격자다 — 전형적인 차원의 저주. 이걸 텐서-트레인으로 담으면 저장이 O(dnχ2)O(dn\chi^{2}) 로 떨어지고, 덧셈·곱셈·적분·선형계 풀이를 전부 TT 형식 안에서 한다. 성분을 다 만들지 않고 몇 개만 물어봐서 TT를 짓는 크로스 근사(TT-cross)가 있어서, 함수 계산기를 블랙박스로 두고도 쓸 수 있다. 불확실성 정량화·매개변수 의존 PDE·화학 반응 속도 방정식 쪽에서 활발하다.
  • 확률 모형과 조합 계수. 그래프 모형의 분배함수 계산, 조합 문제의 해 개수 세기가 전부 텐서 축약이다. 믿음 전파는 트리에서 정확한 축약과 같은 것이고, 루프가 있으면 근사가 된다는 사정도 PEPS와 판박이다.
  • 기계학습. TT 형식으로 완전연결층 가중치를 압축하거나, 텐서 네트워크 자체를 분류기로 학습시키는 계열. 압축률은 인상적이지만 정확도-비용에서 다른 압축 기법을 압도한다고 말하기는 아직 이르다.

7. 한계[편집]

  • 표현력 ≠ 계산 가능성. PEPS는 2차원 바닥상태를 표현할 수 있지만 축약이 #P-난해다. “쓸 수 있다”와 “계산할 수 있다”는 다른 문제라는 것이 이 분야의 가장 비싼 교훈이다.
  • 얽힘이 크면 진다. 무작위 상태, 깊은 회로, 오래 발전시킨 상태는 원리적으로 압축이 안 된다. 텐서 네트워크가 잘 되는 것은 자연이 만드는 상태들이 힐베르트 공간의 아주 얇은 구석에만 산다는 사실 덕분이다.
  • 최적화가 비볼록이다. 변분 텐서 네트워크는 국소 최소에 갇힐 수 있고, PEPS처럼 정준형이 없는 경우 기울기 자체가 근사 축약에서 나오므로 수렴 판정이 까다롭다.
  • 보고 방식. χ\chi 를 자랑하는 논문은 반쯤 비어 있다. 절단오차, 축약 근사 오차, 그리고 χ\chi\to\infty 외삽이 같이 나와야 숫자가 의미를 갖는다.

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 그래서 같은 물건이 분야마다 다른 이름으로 재발견됐다. 물리의 MPS, 수치해석의 텐서-트레인, 화학의 계층 터커(Tucker) 계열, 신호처리의 CP/터커 분해가 서로 사촌이다. 학회에서 “그거 저희가 15년 전에 했는데요”가 양방향으로 오가는 흔치 않은 분야.

  2. 여기서 나오는 사고가 텐서 네트워크 입문자의 통과의례다. 정준형을 안 맞추고 자르면 오차가 특이값 제곱합보다 훨씬 크게 나오는데, 코드는 조용히 돌고 결과만 미묘하게 틀린다. 에너지가 변분 상한을 아래로 뚫는 순간이 보통 이 버그의 첫 신호다.

  3. 이 공방을 “고전이 이겼다/양자가 졌다”로 요약하면 곤란하다. 회로를 조금만 깊게 하거나 큐비트를 늘리면 축약 비용이 다시 지수적으로 튀고, 반대로 텐서 네트워크는 얕은 회로에서 계속 강할 것이다. 실제로 얻은 것은 승패가 아니라 “고전 시뮬레이션의 비용을 정직하게 재는 방법” 이었다.