연쇄법칙이 출력 기울기를 앞 층 가중치로 흘려보냅니다 | DAKER 커뮤니티
순전파가 값을 앞에서 뒤로 흘린다면, 역전파는 기울기를 뒤에서 앞으로 흘립니다. 핵심 도구는 연쇄법칙입니다. 합성 함수의 미분은 국소 미분의 곱이라는 한 문장입니다. 이 글은 그 한 장면을 그림처럼 고정해, loss.backward()가 무엇을 하는지 설명합니다.

간단한 경로를 봅니다. x → z = Wx → y = σ(z) → L(y, t). 손실 L이 y에 대해 얼마나 민감한지(∂L/∂y)를 알면, y가 z에 대해 민감한 정도(∂y/∂z)를 곱해 ∂L/∂z 를 얻습니다. 다시 z가 W에 대해 민감한 정도를 곱해 ∂L/∂W 를 얻습니다. 각 연산은 자기 국소 미분만 알면 되고, 프레임워크가 계산 그래프를 따라 곱셈으로 이어 줍니다.
연쇄법칙은 곱으로 이어지는 민감도입니다
일변수로 말하면 dL/dW = (dL/dy)·(dy/dz)·(dz/dW) 입니다. 다변수·텐서로 확장되면 야코비안이 등장하지만, 빌더용 직관은 같습니다. 위쪽(손실에 가까운 쪽)에서 내려온 기울기에, 이 연산의 국소 기울기를 곱해 아래쪽으로 전달합니다. 덧셈 노드는 기울기를 그대로 복제해 갈라 보내고, 곱셈 노드는 상대쪽 값으로 스케일합니다. 이 규칙만으로도 대부분의 층을 해석할 수 있습니다.
자동미분은 그 규칙을 그래프에 기계적으로 적용합니다. 순전파 때 중간 값을 저장해 두고, 역전파 때 그 값을 재사용합니다. 그래서 메모리가 늘어납니다. 체크포인팅은 일부 중간 값을 버려 메모리를 줄이고, 필요할 때 다시 계산하는 타협입니다. 수학이 바뀌는 것이 아니라, 저장과 재계산의 엔지니어링입니다.
한 층의 국소 미분만 알면 됩니다
선형층 z = Wx에 대해, x 쪽으로 가는 기울기는 Wᵀ 를 곱하는 형태로 나타납니다. W 쪽으로 가는 기울기는 입력 x와 위쪽에서 내려온 기울기의 외적·행렬곱 형태로 쌓입니다. ReLU는 순전파에서 양수였던 자리는 기울기를 통과시키고, 0이었던 자리는 막습니다. 시그모이드는 σ(z)·(1−σ(z))를 곱합니다. 끝이 포화되면 이 값이 작아져 앞 층으로 신호가 약해집니다.
이 국소 규칙이 모듈화되어 있기에, 새 층을 만들어도 backward만 올바르게 정의하면 전체 학습에 연결됩니다. 커스텀 CUDA 커널을 짤 때도, 결국 순전파 식과 그에 대응하는 국소 역전파 식을 짝으로 둡니다. 수학적으로 거창해 보이는 역전파가, 엔지니어링에서는 인터페이스 규약에 가깝습니다.

기울기가 사라지거나 폭주하는 이유
연쇄법칙는 곱셈입니다. 1보다 작은 수를 여러 번 곱하면 값은 급격히 작아집니다. 깊은 망에서 시그모이드·탄에이치가 겹치면 기울기 소실이 납니다. 반대로 1보다 큰 스케일이 반복되면 폭주합니다. 잔차 연결은 항등 경로를 남겨 기울기가 더 쉽게 흐르게 합니다. 정규화는 스케일을 안정화합니다. 초기화는 시작 시점의 분산을 맞춰 곱셈이 한쪽으로 치우치지 않게 합니다.
기울기 클리핑은 폭주가 이미 보일 때 이동량을 제한하는 응급 장치입니다. 원인을 없애지는 않지만, RNN·강화학습·큰 학습률 구간에서 훈련을 버티게 합니다. 로그에 층별 기울기 노름을 남기면, 어느 층에서 신호가 죽는지 바로 보입니다. 앞 층만 죽고 뒤 층만 살아 있으면 소실 패턴입니다. 모든 층이 동시에 폭발하면 학습률·손실 스케일 후보입니다.
빌더가 backward를 디버깅하는 법
먼저 손실이 스칼라인지 확인합니다. 벡터 손실을 그대로 backward하면 의도치 않은 합·평균이 섞입니다. 다음으로 requires_grad 경로가 끊어지지 않았는지 봅니다. 잘못된 detach·넘파이 변환·정수 캐스팅이 그래프를 끊습니다. 동결된 파라미터는 의도적 차단입니다. 실수로 헤더만 학습하거나, 반대로 전부 학습하는 실수를 여기서 잡습니다.
작은 네트워크에서 수치미분과 자동미분을 비교하는 기울기 검사는 여전히 유효합니다. 커스텀 연산·복잡한 마스킹·혼합 정밀도에서 특히 유용합니다. 혼합 정밀도는 빠른 행렬곱을 위해 낮은 비트를 쓰지만, 손실 스케일링으로 작은 기울기가 사라지지 않게 보호합니다. 수학의 연쇄법칙는 같고, 수치 표현만 조심하는 것입니다.
어텐션·정규화에서도 같은 그림입니다
어텐션은 소프트맥스와 가중합이 들어간 계산 그래프일 뿐입니다. 역전파는 그 그래프를 따라 기울기를 Q·K·V·입력으로 배분합니다. 레이어 정규화는 평균·분산 통계를 쓰므로, 그 통계에 대한 미분까지 포함해 기울기가 흐릅니다. 복잡하게 보여도, 원리는 국소 미분의 연쇄입니다. 논문을 읽을 때 새 모듈이 나오면 ‘순전파 식 → 어디에 비선형이 있나 → 기울기가 어떤 경로로 분기하나’ 순서로 스케치하면 읽기가 빨라집니다.
정지 기울기(stop gradient) 연산은 의도적으로 어떤 경로의 역전파를 막습니다. BYOL·모멘텀 인코더·일부 GAN 설계에서 선생님 쪽을 고정할 때 씁니다. 이는 연쇄법칙를 부정하는 것이 아니라, 학습할 좌표축을 고르는 설계입니다. 앞글의 동결·LoRA와 같은 계열의 선택입니다.
계산 그래프를 손으로 한 번 그려 봅니다
종이 왼쪽에 입력, 오른쪽으로 연산 상자를 놓고, 상자마다 순전파 식과 국소 역전파 규칙을 한 줄씩 적습니다. 예: 곱셈 상자 a*b 는 순전파 ab, a로 가는 기울기는 위 기울기×b, b로 가는 기울기는 위 기울기×a. 덧셈은 위 기울기를 양쪽에 그대로 복제합니다. 이 연습은 한 시간이면 충분하고, 이후 프레임워크를 블랙박스로만 보는 시간을 크게 줄입니다.
다중 경로가 합쳐지는 지점에서는 기울기가 더해집니다. 잔차 연결 y = x + F(x) 에서 x로 가는 기울기는 위 기울기 + F 경로를 통해 돌아온 기울기입니다. 항등 항 덕분에 위 기울기가 최소한 그대로 전달됩니다. 깊게 쌓아도 학습이 가능한 이유가 수식 한 줄에 들어 있습니다. 논문을 읽을 때 skip connection이 보이면, 기울기 고속도로라고 읽으면 됩니다.
시리즈를 한 줄로 잇습니다
벡터와 행렬이 값을 옮기고, 활성화가 그 옮김을 꺾어 표현력을 만들고, 손실이 확률적 목표로 틀린 확신을 벌하며, 기울기가 내려갈 방향을 가리키고, 역전파가 그 방향을 모든 가중치에 배분합니다. 다섯 글은 같은 기계의 다섯 단면입니다. 코드를 읽을 때 어느 단면을 보고 있는지 이름만 붙여도, 디버깅 속도가 달라집니다.
DAKER 커뮤니티의 잡담 보드에 남기는 이유는, 대회와 해커톤 현장이 결국 이 다섯 단면 위에서 돌아가기 때문입니다. 새 모델을 가져와도 첫 질문은 바뀌지 않습니다. 어떤 텐서가 어떤 연산으로 흐르고, 손실이 무엇을 벌주며, 기울기가 어디로 돌아오는가. 그 질문을 한국어로 선명하게 잡는 것이 이 시리즈의 목표였습니다.
순전파 저장 값이 역전파의 연료입니다
많은 국소 미분은 순전파 때 본 값을 필요로 합니다. ReLU는 어느 자리가 양수였는지, 곱셈은 상대 피연산자 값, 배치 정규화는 배치 통계가 필요합니다. 그래서 학습 모드에서는 중간 활성화를 메모리에 남깁니다. 추론만 할 때는 그 저장이 필요 없어 메모리가 줄어듭니다. OOM이 학습에서만 난다면, 배치·시퀀스 길이·체크포인팅·활성화 체크포인트를 우선 의심하는 이유가 여기 있습니다.
재계산과 저장의 균형은 하드웨어 예산의 문제입니다. 수학적 기울기 자체는 같습니다. 빌더가 할 일은 같은 연쇄법칙를 어떤 비용으로 실행할지 고르는 일입니다. 큰 모델을 파인튜닝할 때 그레이디언트 체크포인팅을 켜는 결정은, 역전파를 포기하는 결정이 아니라 연료 보관 방식을 바꾸는 결정입니다.
오늘 빌더가 가져갈 체크리스트
- 역전파는 연쇄법칙으로 국소 기울기를 곱해 뒤로 보냅니다.
- 각 연산은 자기 국소 미분만 알면 전체에 연결됩니다.
- 선형층의 입력 쪽 기울기는 전치 행렬과 관련됩니다.
- ReLU는 순전파에서 꺼진 자리의 기울기를 막습니다.
- 소실·폭주는 곱셈이 반복되며 스케일이 무너지는 현상입니다.
- 잔차·정규화·초기화·클리핑은 그 스케일을 지키는 장치입니다.
- 그래프가 끊기면 기울기가 안 흐르므로 detach 경로를 점검합니다.
- 수치미분 검산은 커스텀 연산에서 특히 가치가 있습니다.
- 새 모듈도 순전파 식과 기울기 분기만 스케치하면 읽기가 빨라집니다.
- 이 시리즈의 다섯 글은 벡터·기울기·확률·비선형·역전파를 한 줄로 잇습니다.
이 글이 아닌 것
이 글은 자동미분 엔진 구현 튜토리얼이 아닙니다. 빌더가 학습을 해석할 때 필요한 한 장면만 다룹니다.
이 글은 모든 층의 야코비안 유도서를 대체하지 않습니다. 규칙의 형태만 고정합니다.
한 줄로 줄이면 이렇습니다. 연쇄법칙이 출력 기울기를 앞 층 가중치로 흘려보냅니다. backward는 그 흘림의 실행 버튼입니다.