위키득계정 ↗
기술

Shampoo 옵티마이저

Shampoo 옵티마이저기술
영문
Shampoo
핵심
텐서 축별 사전조건
통계 대상
기울기의 축별 결합
관련 분야
확률적 최적화
Shampoo 옵티마이저는 가중치 텐서의 축별 구조를 활용해 기울기에 사전조건을 적용하는 최적화 방법이다. 모든 매개변수의 거대한 결합 행렬 대신 축마다 작은 행렬을 유지한다.

성분별 조절을 넘어

기울기의 각 숫자만 독립적으로 조절하면 좌표 사이의 관계를 놓칠 수 있다. Shampoo는 축별 행렬을 이용해 기울기의 방향과 크기를 조절한다. 단, 모든 매개변수 쌍의 정보를 담는 전체 사전조건자와 같은 것을 그대로 저장하는 방식은 아니다.

행렬 크기의 독립 예제

가중치가 20×30이면 매개변수는 600개다. 전체 결합 행렬은 600×600으로 360,000개 값을 갖는다. 두 축의 정방행렬만 두면 20×20+30×30=1,300개다. 실제 구현의 모든 상태나 계산량이 이 수와 같다는 뜻은 아니다.

행렬 연산의 비용

축별 통계가 전체 행렬보다 작아도 역행렬 거듭제곱 등 사전조건 계산은 단순한 성분별 나눗셈보다 복잡할 수 있다. 큰 층을 블록으로 나누거나 갱신 간격을 조절하는 구현에서는 비용과 근사 특성이 달라진다.

성능을 평가할 기준

최적화 단계 수가 줄었다는 사실만으로 실제 학습 시간이 줄었다고 결론 낼 수는 없다. 단계당 행렬 연산과 상태 메모리를 포함해 비교한다. 볼록 문제에서의 이론적 결과와 일반적인 비볼록 신경망의 경험적 성능도 구분해야 한다.

관련 문서

SOAP 옵티마이저 / Adafactor / Lion 옵티마이저 / GaLore / 경사 하강법 / 행렬