역전파가 답하는 질문
순전파를 돌려 손실값을 얻었어. 이제 이런 질문에 답해야 해. "이 망의 가중치 하나를 아주 조금 움직이면 손실은 얼마나 달라질까?" 가중치는 수십억 개일 수도 있지. 각 가중치에 대한 그 변화율이 기울기야. 기울기만 알면 경사하강법으로 모든 가중치를 손실이 줄어드는 쪽으로 고칠 수 있어.
가장 단순한 방법은 가중치를 하나씩 건드려 보며 기울기를 따로 계산하는 거야. 하지만 가중치가 개면 순전파를 번 더 해야 해. 수십억 개짜리 망에서는 사실상 끝나지 않는 계산이지.
역전파의 묘수
역전파는 망을 한 번 더 거꾸로 훑으며 모든 기울기를 계산해. 수학적 근거는 Calculus 트랙에서 본 연쇄법칙이야. 구현의 핵심은 순전파에서 중간값을 저장해 두고, 뒤에서부터 국소 야코비안을 차례로 곱하는 거고.
번째 층의 가중치 를 보면:
도함수가 사슬처럼 이어지지. 역전파는 중간 도함수를 각각 한 번 계산한 뒤 여러 가중치 계산에 재사용해.
책임을 거꾸로 나누기
역전파를 책임 분배라고 생각해 봐. 손실값이 "과녁에서 이만큼 빗나갔어"라고 알려 주면, 역전파는 망을 거꾸로 걸으며 각 층에 "이 빗나감에 얼마나 기여했어?"라고 물어. 각 층은 자기 가중치와 위에서 흘러온 기울기를 바탕으로 답하고, 연쇄법칙으로 계산한 책임을 앞선 층에 넘겨.
끝까지 거슬러 가면 모든 가중치가 자기 몫의 오차를 알게 돼. 그 몫과 반대 방향으로 가중치를 조정하면 다음 순전파는 과녁에 더 가까워지는 거야.