더북(TheBook)

이 그래프에 연쇄 법칙을 적용하여 원하는 값을 구할 수 있습니다.

grad(loss_val, w) = 1 * 1 * 2 = 2

grad(loss_val, b) = 1 * 1 = 1

Note ≣

역방향 그래프에서 관심 대상인 두 노드 ab를 연결하는 경로가 여러 개라면 모든 경로의 도함수를 더해서 grad(a, b)를 얻을 수 있습니다.

방금 수행한 것이 역전파입니다! 역전파는 연쇄 법칙을 계산 그래프에 적용한 것뿐입니다. 그 이상 아무것도 아닙니다. 역전파는 최종 손실 값에서 시작하여 아래층에서 맨 위층까지 거꾸로 거슬러 올라가 각 파라미터가 손실 값에 기여한 정도를 계산합니다. 그래서 이름이 ‘역전파’입니다. 즉, 계산 그래프에서 각 노드의 손실 기여도를 역전파합니다.

요즘에는 텐서플로와 같이 자동 미분(automatic differentiation)이 가능한 최신 프레임워크를 사용해서 신경망을 구현합니다. 자동 미분은 방금 본 계산 그래프와 같은 형태로 구현됩니다. 자동 미분은 정방향 패스를 작성하는 것 외에 다른 작업 없이 미분 가능한 텐서 연산의 어떤 조합에 대해서도 그레이디언트를 계산할 수 있습니다. 필자가 2000년대 C 언어로 처음 신경망을 만들 때는 그레이디언트를 직접 계산해야 했습니다. 지금은 최신 자동 미분 도구 덕분에 수동으로 역전파를 구현할 필요가 전혀 없습니다. 얼마나 다행인가요!

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.