성분별 조절을 넘어
기울기의 각 숫자만 독립적으로 조절하면 좌표 사이의 관계를 놓칠 수 있다. Shampoo는 축별 행렬을 이용해 기울기의 방향과 크기를 조절한다. 단, 모든 매개변수 쌍의 정보를 담는 전체 사전조건자와 같은 것을 그대로 저장하는 방식은 아니다.
행렬 크기의 독립 예제
가중치가 20×30이면 매개변수는 600개다. 전체 결합 행렬은 600×600으로 360,000개 값을 갖는다. 두 축의 정방행렬만 두면 20×20+30×30=1,300개다. 실제 구현의 모든 상태나 계산량이 이 수와 같다는 뜻은 아니다.
행렬 연산의 비용
축별 통계가 전체 행렬보다 작아도 역행렬 거듭제곱 등 사전조건 계산은 단순한 성분별 나눗셈보다 복잡할 수 있다. 큰 층을 블록으로 나누거나 갱신 간격을 조절하는 구현에서는 비용과 근사 특성이 달라진다.
성능을 평가할 기준
최적화 단계 수가 줄었다는 사실만으로 실제 학습 시간이 줄었다고 결론 낼 수는 없다. 단계당 행렬 연산과 상태 메모리를 포함해 비교한다. 볼록 문제에서의 이론적 결과와 일반적인 비볼록 신경망의 경험적 성능도 구분해야 한다.
관련 문서
SOAP 옵티마이저 / Adafactor / Lion 옵티마이저 / GaLore / 경사 하강법 / 행렬