역전파는 신경망 학습의 심장입니다.
「출력에서 발생한 오차를 입력 쪽으로 거슬러 올라가며, 각 가중치가 그 오차에 얼마만큼 기여했는지 계산하는 알고리즘」입니다.
이 정보가 있어야 가중치를 어느 방향으로 얼마나 옮길지 결정할 수 있습니다.
직관적으로 풀어 보겠습니다.
신경망이 「고양이 사진을 받아 「개일 확률 0.9」라 잘못 답했다고 합시다.
출력에서 큰 오차가 발생했고, 그 오차의 책임은 마지막 층의 가중치들에게도, 그 앞 층의 가중치들에게도, 결국 첫 층의 가중치들에게까지 분산되어 있습니다.
역전파는 「미분의 연쇄법칙(chain rule)」이라는 고등학교 미적분의 도구를 영리하게 사용합니다.
「출력의 오차가 마지막 층 가중치에 대해 어떻게 변하는가」 → 「마지막 층 출력이 그 앞 층 가중치에 대해 어떻게 변하는가」 → ...
이런 식으로 거슬러 올라가며 한 번씩 곱해 가는 것입니다.
비유하자면 역전파는 「긴 도미노 게임에서 마지막 도미노가 잘못 쓰러진 원인을 첫 도미노까지 거슬러 추적하는 일」과 같습니다.
각 도미노의 위치 변화가 다음 도미노를 얼마나 움직이는지 알면, 첫 도미노를 얼마나 움직여야 마지막을 바로잡을 수 있는지도 알 수 있습니다.
역전파의 발견(1986, 루멜하트·힌튼·윌리엄스의 논문) 덕분에 다층 신경망의 효율적 학습이 가능해졌고, 이것이 1980년대 후반 신경망의 두 번째 봄, 그리고 2010년대 딥러닝 시대의 토대가 됐습니다.
오늘날 PyTorch·TensorFlow는 이 역전파를 자동으로 처리해 줍니다(automatic differentiation).
한 줄 요약
역전파는 출력에서 발생한 오차를 입력 쪽으로 거슬러 올라가며 각 가중치의 기여를 미분의 연쇄법칙으로 계산하는 알고리즘이며, 다층 신경망 학습의 토대입니다.
더 알아볼 것
- 연쇄법칙(chain rule)의 직관적 이해
- 자동 미분(autograd)의 작동 원리
- 역전파 vs 정방향 미분의 차이