위키득계정 ↗
기술

가역 잔차 신경망

가역 잔차 신경망기술
영문
Reversible Residual Network
약칭
RevNet
핵심
출력에서 입력 활성값 재구성
목적
학습 활성값 메모리 절감
가역 잔차 신경망은 뒤쪽 출력에서 앞쪽 활성값을 복원하도록 구성한 잔차 신경망이다. 역전파를 위해 대부분 층의 활성값을 계속 저장하는 부담을 줄인다.

복원 가능한 블록

입력을 두 부분으로 나누고 한 부분을 이용해 다른 부분을 갱신하는 구조를 사용할 수 있다. 예를 들어 y₁=x₁+F(x₂), y₂=x₂+G(y₁)라면 x₂=y₂-G(y₁)를 구하고 이어 x₁=y₁-F(x₂)를 복원한다. F와 G 자체의 역함수가 필요한 것은 아니다.

복원의 독립 예제

x₁=2, x₂=3이고 F(u)=2u, G(v)=v/2라고 하자. 출력은 y₁=8, y₂=7이다. 출력에서 x₂=7-8/2=3, x₁=8-2×3=2를 얻는다. 작은 스칼라 예이며 실제 모형의 층 구성 전체를 나타내지는 않는다.

구조의 제약

일반 잔차 연결을 썼다고 모든 층이 자동으로 가역이 되는 것은 아니다. 차원을 줄이는 연산 등 복원 불가능한 부분은 별도로 저장하거나 처리해야 한다. 복원 계산을 수행하므로 활성값 메모리 절감이 추가 연산 비용 없이 얻어지는 것도 아니다.

수치와 메모리

정확한 산술에서의 복원식과 부동소수점 실행은 구분해야 한다. 반복적인 복원에서 수치 오차가 쌓일 수 있으며 난수 및 상태 관리도 중요하다. 활성값 저장량의 깊이 의존성이 줄어도 가중치와 옵티마이저 상태의 크기는 여전히 남는다.

관련 문서

활성값 체크포인팅 / 역전파 / GPipe / ZeRO 학습 메모리 최적화 / 언어 모형 / 트랜스포머