Section 1순방향, 그리고 역방향
순방향 신경망이 입력 x를 받아 출력 ŷ를 낼 때, 정보는 네트워크를 통해 순방향으로 흐른다. 입력 x는 각 층의 은닉 유닛으로 전파되어 마침내 ŷ를 만든다. 이것을 순방향 전파(forward propagation)라 한다. 훈련 중에는 순방향 전파가 스칼라 비용 J(θ)를 낼 때까지 계속된다.
역전파 알고리즘(back-propagation, Rumelhart et al., 1986)은 비용으로부터의 정보가 기울기를 계산하기 위해 네트워크를 거꾸로 흐르게 한다. 기울기에 대한 분석적 표현을 적는 일은 간단하지만, 그것을 수치적으로 평가하는 일은 계산적으로 비쌀 수 있다 — 역전파는 간단하고 저렴한 절차로 이를 해낸다.
학습에서 가장 자주 필요한 기울기는 매개변수에 대한 비용의 기울기 ∇θJ(θ)이다. 네트워크를 통해 정보를 전파해 도함수를 계산한다는 아이디어는 매우 일반적이며, 여기서는 f가 단일 출력을 갖는 가장 흔한 경우로 설명을 한정한다.
Section 2계산 그래프
역전파를 정확히 설명하려면 계산 그래프(computational graph) 언어가 필요하다. 그래프의 각 노드는 변수를 — 스칼라, 벡터, 행렬, 텐서 — 나타낸다. 연산(operation)은 하나 이상의 변수에 대한 간단한 함수다. 변수 y가 변수 x에 연산을 적용해 계산되면, x에서 y로 향하는 방향 에지를 그린다.
예측 ŷ = σ(xᵀw + b)는 여러 연산의 합성이다 — 곱셈으로 u⁽¹⁾ = xᵀw, 덧셈으로 u⁽²⁾ = u⁽¹⁾ + b, 시그모이드로 ŷ = σ(u⁽²⁾). 대수식에서 이름이 없던 중간 표현식도 그래프에서는 노드로서 이름 u⁽ⁱ⁾을 갖는다.
아래 첫 스테이지에서 이 작은 그래프를 따라, 순전파가 입력에서 비용까지 값을 채우는 과정을 본다.
Section 3미적분의 연쇄 법칙
미적분의 연쇄 법칙(확률의 연쇄 법칙과 혼동하지 말 것)은, 도함수가 알려진 다른 함수들을 합성해 만든 함수의 도함수를 계산하는 데 쓰인다. 역전파는 매우 효율적인 특정 연산 순서로 연쇄 법칙을 계산하는 알고리즘이다.
y = g(x)이고 z = f(g(x)) = f(y)인 스칼라 경우, 연쇄 법칙은 다음과 같다.
이를 벡터로 일반화하면, x ∈ ℝᵐ, y ∈ ℝⁿ, y = g(x), z = f(y)에 대해 다음이 성립한다.
Section 4기울기가 거꾸로 흐른다
먼저 단일 스칼라 u⁽ⁿ⁾(예: 한 훈련 예시의 손실)을 계산하는 그래프를 생각하자. 우리는 입력 노드 u⁽¹⁾, …, u⁽ⁿⁱ⁾에 대한 기울기 — 즉 모든 i에 대해 ∂u⁽ⁿ⁾/∂u⁽ⁱ⁾ — 를 원한다. 경사 하강에 적용할 때 u⁽ⁿ⁾은 비용이고, 입력 노드들은 모델의 매개변수다.
역전파는 출력에서 grad_table[u⁽ⁿ⁾] ← 1로 시작해, 그래프를 역순으로 거슬러 각 노드의 기울기를 채운다. 아래 스테이지에서 손실에서 출발한 기울기가 계산 그래프를 거꾸로 흘러 입력 매개변수까지 도달하는 전 과정을 본다.
# 순전파(Algorithm 6.1)를 실행해 네트워크의 활성화를 얻는다. # grad_table: 계산된 도함수를 저장하는 자료 구조. grad_table[u⁽ⁿ⁾] ← 1 for j = n−1 down to 1 do # 저장된 값을 써서 ∂u⁽ⁿ⁾/∂u⁽ʲ⁾ 를 계산한다: grad_table[u⁽ʲ⁾] ← sum( grad_table[u⁽ⁱ⁾] · (∂u⁽ⁱ⁾/∂u⁽ʲ⁾) for i in {i : j ∈ Pa(u⁽ⁱ⁾)} ) end for return { grad_table[u⁽ⁱ⁾] for i = 1 .. nᵢ }
Section 5반복 부분식을 피하다
왜 역전파가 효율적인가. 기울기에 대한 전체 표현식 안에서, 많은 부분 표현식(subexpression)이 여러 번 반복될 수 있다. 같은 함수 f를 체인의 각 단계에 적용하는 경우 — x=f(w), y=f(x), z=f(y) — 를 보자.
= f′(f(f(w))) · f′(f(w)) · f′(w) (6.52)
역전파(식 6.51 방식)는 그래프의 노드당 하나의 야코비안 곱 순서로 수행되며, 노드 u⁽ʲ⁾에서 u⁽ⁱ⁾로 가는 각 에지를 정확히 한 번씩만 방문한다. 따라서 반복 부분식의 기하급수적 폭발을 피한다. 역전파를 수행하는 데 드는 계산량은 그래프의 에지 수에 선형으로 비례하며, 이는 순방향 전파와 같은 차수다 — 각 에지마다 편도함수 하나를 구하고, 곱셈 하나와 덧셈 하나를 할 뿐이다.