최적설계 수치해석 통계 마지막 수정: 2026-08-16 04:37:52

1. 개요[편집]

K-FAC
Kronecker-Factored Approximate Curvature
제안James Martens & Roger Grosse (2015)
근사 대상피셔 정보행렬 (= 일반화 가우스-뉴턴)
1단계 근사층별 블록 대각
2단계 근사각 블록 ≈ A ⊗ G (입력 2차적률 ⊗ 출력기울기 2차적률)
핵심 항등식(A ⊗ G)−1 = A−1 ⊗ G−1
확장KFC(합성곱) · RNN판 · EKFAC · 분산 K-FAC

K-FAC(Kronecker-Factored Approximate Curvature)은 자연경사법피셔 정보행렬을 층별 블록 대각으로 자르고, 각 블록을 두 개의 작은 행렬의 크로네커 곱으로 근사해서 역행렬을 실용적으로 만드는 2차 최적화 기법이다. 마르텐스와 그로스(2015)가 제안했다.

동기는 한 문장이다. 자연경사 갱신 θθηF1L\theta \leftarrow \theta - \eta F^{-1}\nabla L 은 이론적으로 매력적이지만, 파라미터가 dd 개면 FFd×dd\times dd=108d=10^8 에서는 저장도 역행렬도 불가능하다. K-FAC은 이 F1F^{-1}두 개의 작은 역행렬로 대체한다. 층의 입력이 nn 차원, 출력이 mm 차원이면 그 층의 블록은 d=nmd_\ell = nm 크기이고 정직하게 뒤집으면 O(n3m3)O(n^3m^3) 인데, K-FAC은 O(n3+m3)O(n^3 + m^3) 으로 끝낸다. n=m=1000n=m=1000 이면 101810^{18}2×1092\times10^9 — 9자리 차이다.

자연경사가 왜 필요하고 FF 가 무엇인지는 자연경사법 문서에 있으니, 여기서는 “그 F1F^{-1} 을 실제로 어떻게 계산하느냐” 만 다룬다.

2. 크로네커 구조는 어디서 나오는가[편집]

완전연결층 하나를 보자. 입력 활성값을 aˉRn\bar{a}\in\mathbb{R}^{n}(편향을 위해 1을 붙인 것), 가중치를 WRm×nW\in\mathbb{R}^{m\times n}, 사전활성을 s=Waˉs = W\bar{a} 라 하고, 손실의 사전활성 기울기를 g=L/sRmg = \partial L/\partial s \in\mathbb{R}^{m} 라 하자. 역전파가 주는 가중치 기울기는 언제나 랭크 1이다.

LW=gaˉvec ⁣(LW)=aˉg\frac{\partial L}{\partial W} = g\,\bar{a}^\top \qquad\Longrightarrow\qquad \mathrm{vec}\!\left(\frac{\partial L}{\partial W}\right) = \bar{a}\otimes g

이 층에 해당하는 피셔 블록은 이 벡터의 2차 적률이므로

F=E[(aˉg)(aˉg)]=E[(aˉaˉ)(gg)]F_\ell = \mathbb{E}\bigl[(\bar{a}\otimes g)(\bar{a}\otimes g)^\top\bigr] = \mathbb{E}\bigl[(\bar{a}\bar{a}^\top)\otimes(gg^\top)\bigr]

여기까지는 근사가 아니라 항등식이다. 크로네커 구조는 이미 안에 들어 있었고, K-FAC이 하는 일은 기댓값을 곱 안으로 밀어 넣는 것뿐이다.

F    E[aˉaˉ]A  E[gg]GF_\ell \;\approx\; \underbrace{\mathbb{E}[\bar{a}\bar{a}^\top]}_{A}\ \otimes\ \underbrace{\mathbb{E}[gg^\top]}_{G}

이 한 걸음이 K-FAC의 유일한(그러나 결정적인) 가정이다. 말로 풀면 같은 층 안에서 입력 활성값과 출력 사전활성 기울기가 통계적으로 독립이라는 것. 당연히 참이 아니다 — 둘 다 같은 표본에서 나온 값이니까. 다만 저자들이 실증적으로 확인한 것은 이 근사가 만든 행렬이 참 피셔와 고유구조를 상당히 공유한다는 점이었고, 최적화에 필요한 것은 정확한 곡률이 아니라 쓸 만한 전처리기라는 실용적 입장이 이 근사를 정당화한다.1

3. 역행렬이 공짜가 되는 순간[편집]

크로네커 곱의 성질 두 줄이 알고리즘 전체를 만든다.

(AG)1=A1G1,(AG)vec(V)=vec(GVA)(A\otimes G)^{-1} = A^{-1}\otimes G^{-1}, \qquad (A\otimes G)\,\mathrm{vec}(V) = \mathrm{vec}\bigl(G\,V\,A\bigr)

첫 줄 덕에 nm×nmnm\times nm 행렬을 뒤집는 대신 n×nn\times nm×mm\times m 을 각각 뒤집으면 되고, 둘째 줄 덕에 그 결과를 적용하는 것도 행렬 곱 두 번으로 끝난다. 즉 자연경사 방향은

ΔW=G1(LW)A1\Delta W = G^{-1}\,\Bigl(\frac{\partial L}{\partial W}\Bigr)\,A^{-1}

이라는 놀랍도록 단순한 꼴이 된다. 기울기 행렬을 왼쪽에서 출력 방향으로, 오른쪽에서 입력 방향으로 화이트닝하는 것 — 이렇게 읽으면 K-FAC이 왜 잘 도는지 감이 온다. 층별로 입력 통계와 출력 오차 통계의 조건수를 각각 눌러 주는 것이고, 사실상 층마다 자동으로 좌·우 전처리를 거는 것과 같다.

저장량도 같은 계산이다. 가중치 nmnm 개인 층에 대해 AA(n2n^2)와 GG(m2m^2)와 그 역행렬만 들고 있으면 되므로, nmn\approx m 이면 파라미터 대비 상수 배 수준이다. 완전한 FF 를 들고 있는 것(n2m2n^2m^2)과는 비교가 안 된다.

4. 감쇠 — 논문 수식에 없지만 없으면 안 도는 것[편집]

미니배치로 추정한 A,GA, G 는 거의 항상 특이에 가깝다. 배치 크기가 AA 의 차원보다 작으면 AA 는 아예 랭크 부족이다. 그래서 레벤버그-마쿼트 방법과 같은 요령으로 F+γIF+\gamma I 를 쓰는데, 여기서 문제가 생긴다 — AG+γIA\otimes G + \gamma I 는 크로네커 곱이 아니다. 항등식이 깨지면 K-FAC의 존재 이유가 사라진다.

두 가지 표준 대응이 있다.

  • 분해된 티호노프 감쇠. 감쇠를 두 인자에 나눠 넣는다.
(A+πγIn)(G+π1γIm)\bigl(A + \pi\sqrt{\gamma}\,I_n\bigr)\otimes\bigl(G + \pi^{-1}\sqrt{\gamma}\,I_m\bigr)

전개하면 AGA\otimes GγI\gamma\,I 는 정확히 나오고, πγ(IG)\pi\sqrt{\gamma}(I\otimes G)π1γ(AI)\pi^{-1}\sqrt{\gamma}(A\otimes I) 라는 교차항이 남는다. π\pi 는 이 두 교차항의 크기를 맞춰 오차를 최소화하도록 고르며, 마르텐스-그로스는 자취 기반의 값

π=tr(A)/ntr(G)/m\pi = \sqrt{\frac{\operatorname{tr}(A)/n}{\operatorname{tr}(G)/m}}

을 제시했다. AAGG 의 스케일이 크게 다를 때(흔하다) 감쇠를 한쪽에만 몰아 주는 사고를 막는 장치다.

  • 고유기저에서 정확히 감쇠하기. A=QAΛAQAA = Q_A\Lambda_A Q_A^\top, G=QGΛGQGG = Q_G\Lambda_G Q_G^\top 로 대각화하면 AGA\otimes G 의 고유벡터가 QAQGQ_A\otimes Q_G, 고유값이 λiAλjG\lambda^A_i\lambda^G_j 다. 이 기저로 옮기면 AG+γIA\otimes G+\gamma I대각행렬이므로 성분별 나눗셈 한 번으로 정확히 역이 취해진다. 고유분해가 촐레스키 분해보다 비싸지만 감쇠 γ\gamma 를 바꿀 때마다 재분해할 필요가 없어, 감쇠를 신뢰영역 감각으로 매 스텝 조절하는 구현에서는 오히려 이쪽이 싸다.

γ\gamma 자체는 신뢰 영역 방법의 레벤버그-마쿼트식 규칙(예측 감소 대비 실제 감소의 비율)으로 자동 조절하는 것이 원 논문의 처방이다. γ\gamma 가 크면 갱신이 확률적 경사하강법에 수렴하고, 작으면 순수 자연경사가 된다.

5. 통계를 언제 갱신하고 언제 뒤집는가[편집]

K-FAC이 실전에서 감당 가능한 결정적 이유는 비용을 시간축으로 분산시킬 수 있다는 점이다.

작업비용관례적 주기
기울기 계산 (역전파)1 스텝매 스텝
A, G 지수이동평균 갱신행렬 곱 몇 번매 스텝 또는 수 스텝
역행렬·고유분해O(n³ + m³)20~100 스텝마다

A,GA,G 는 미니배치 추정이 시끄러우므로 지수이동평균으로 누적한다. 곡률은 파라미터보다 훨씬 천천히 변하므로 역행렬을 매 스텝 다시 구할 이유가 없고, 재계산 주기를 늘리면 스텝당 오버헤드가 SGD 대비 10~20% 수준까지 내려간다. 여기에 더해 마르텐스-그로스가 강조한 것이 GG 를 모형에서 표본추출한 라벨로 계산해야 한다는 점이다. 데이터 라벨을 그대로 쓰면 그것은 피셔가 아니라 경험적 피셔이며, 두 행렬은 해 근처가 아니면 다르게 행동한다.

분산 학습에서는 구조가 더 유리해진다. 통계 누적과 역행렬 계산은 기울기 계산과 독립적인 작업이라, 별도 워커에 비동기로 떠넘기고 결과만 주기적으로 브로드캐스트하면 된다. 대형 배치에서 SGD의 이점이 사라지는 구간(배치를 키워도 스텝 수가 안 줄어드는 구간)에서 2차 정보가 상대적으로 값을 한다는 것이 이 계열의 표준 논거이고, 실제로 대형 배치 이미지 분류에서 반복 수를 크게 줄인 보고들이 있다.

6. 확장 — 합성곱, 순환, 그리고 고유기저[편집]

  • KFC(합성곱). 합성곱 신경망의 층은 가중치가 공간 위치마다 공유되므로 위 유도가 그대로 안 먹힌다. 그로스-마르텐스(2016)는 공간 균질성(활성 통계가 위치에 무관)과 공간적으로 무상관인 기울기라는 추가 가정을 넣어, 패치 단위로 AA 를 만들고 채널 단위로 GG 를 만드는 방식으로 크로네커 구조를 회복시켰다. 가정이 하나 더 늘었으니 근사는 더 거칠어지지만, 실전에서는 잘 버틴다.
  • 순환망. 순환 신경망은 같은 가중치가 모든 시점에 등장하므로 층 블록이 시점에 대한 합이 되고, 크로네커 곱들의 합은 크로네커 곱이 아니다. 시점 간 통계에 추가 독립 가정을 얹어 다시 하나의 크로네커 곱으로 접는 변형이 제안됐다.
  • EKFAC. K-FAC이 준 고유기저 QAQGQ_A\otimes Q_G 는 그대로 쓰되, 그 기저에서의 고유값만 정확한 2차 적률로 다시 재는 개선판. 기저는 근사지만 스케일은 정확해지므로, 같은 비용으로 프로베니우스 노름 기준 더 좋은 근사를 준다. 이후 응용에서 사실상 기본형이 됐다.
  • 최적화 밖의 쓰임. F1F^{-1} 이 싸지면 쓸 곳이 최적화만은 아니다. 신경망의 라플라스 근사 사후분포에서 공분산이 F1F^{-1} 이므로 베이즈 딥러닝에서 바로 쓰이고, 훈련 표본의 영향도를 재는 영향 함수 계산도 헤세 역행렬-벡터 곱이 병목이라 (E)K-FAC이 표준 도구로 자리 잡았다. 대형 언어모형 규모에서 영향 함수를 실제로 돌린 연구들이 이 근사 위에 서 있다.

7. 실무 한계와 후속 계보[편집]

정직하게 적자면, K-FAC은 “SGD를 대체한 알고리즘”이 되지 못했다.

  • 메모리. 폭 4096짜리 층 하나마다 AA, GG 와 그 역(또는 고유분해)을 들고 있어야 한다. 파라미터 메모리의 몇 배가 곡률 통계로 나가고, 이는 이미 활성값 저장으로 빠듯한 대형 모형에서 아픈 비용이다.
  • 구조 궁합. 배치 정규화의 스케일·시프트 파라미터는 벡터라 크로네커 구조가 없어 별도 처리(대각 근사 등)가 필요하다. 잔차 연결트랜스포머의 어텐션은 층 간 상관을 강하게 만들어 블록 대각 가정 자체를 흔든다. 정규화 계층이 이미 값싼 계량 보정 노릇을 하고 있다는 해석까지 얹으면, 2차 정보가 가져올 몫이 줄어든다.2
  • 이득 논쟁. 반복 수는 확실히 준다. 벽시계 시간은 워크로드에 따라 갈리며, 잘 튜닝된 Adam 기준선과 비교하면 이득이 사라지거나 뒤집히는 보고도 많다. 하이퍼파라미터가 γ\gamma, 통계 EMA 계수, 재계산 주기 등으로 오히려 늘어난다는 점도 실무 채택을 막았다.

그럼에도 계보는 살아 있다. 샴푸(Shampoo)는 온라인 학습의 전체행렬 AdaGrad를 텐서 차원별 전처리기로 근사해 L1/4R1/4L^{-1/4}\,\nabla\,R^{-1/4} 꼴의 갱신을 쓰는데, 유도는 피셔가 아니라 후회 한계에서 나오지만 “기울기 행렬을 좌우에서 화이트닝한다”는 형태는 K-FAC과 같다. 이후 샴푸를 고유기저에서 재해석해 Adam과 잇는 변형, 모멘텀을 직교화해 스펙트럼 노름 기준 최급강하로 보는 계열 등이 이어졌고, 대규모 학습 벤치마크에서 이 부류가 잘 튜닝된 1차 기준선을 앞서는 결과들이 보고되고 있다. 정리하면 “곡률의 크로네커 구조를 이용한다”는 K-FAC의 착상은 살아남았고, 그것을 피셔로 유도할 필요는 없다는 것이 이후 10년의 교훈에 가깝다.3

8. 관련 문서[편집]

9. Footnotes[편집]

  1. Martens, J. & Grosse, R. (2015). “Optimizing Neural Networks with Kronecker-factored Approximate Curvature”, ICML. 원 논문은 블록 대각뿐 아니라 블록 삼중대각 근사(인접한 층 사이의 상관까지 남기는 버전)도 함께 제시했는데, 구현이 훨씬 복잡한 데 비해 이득이 애매해서 이후 문헌은 사실상 전부 블록 대각만 쓴다. 논문의 절반이 조용히 잊히는 흔한 사례.

  2. 참고로 크로네커 근사가 “층별로 좌우에서 화이트닝”이라는 사실을 알고 나면, 왜 배치 정규화나 화이트닝 초기화가 2차 최적화의 이득을 상당 부분 미리 먹어 치우는지도 같이 이해된다. 공짜로 조건수를 눌러 주는 값싼 장치가 이미 붙어 있는데 비싼 장치를 또 다는 셈.

  3. 이 바닥의 오래된 농담 — “새 옵티마이저가 SGD를 이겼다”는 논문의 절반은 SGD 쪽 학습률을 제대로 안 찾은 것이고, 나머지 절반은 벤치마크가 하나뿐인 것이다. 그래서 요즘은 튜닝 예산까지 고정한 표준 벤치마크에서 비교하는 것이 예의가 됐다. 최적화 논문에서 검증 및 확인에 해당하는 절차가 이제야 자리를 잡은 셈.