이 단원 목차
역전파는 무엇을 계산하는가
신경망에는 수백만 개의 매개변수가 있지만 학습에 사용하는 배치 손실은 스칼라 하나일 수 있습니다. 매개변수마다 별도로 유한차분을 계산하면 거의 같은 신경망을 반복해서 실행해야 합니다. 역전파는 계산 그래프를 재사용합니다. 값을 순방향으로 구한 뒤, 손실의 민감도를 각 연산의 국소 미분을 통해 뒤로 전달합니다.
새로운 미분 법칙이 아니라 연쇄법칙을 중복 계산이 적은 순서로 적용하는 방법입니다. 역전파는 기울기를 계산하고, 최적화 알고리즘은 그 기울기로 매개변수를 바꿉니다. 두 역할을 구분하면 실험 실패가 미분 오류인지, 미분 불가능점 때문인지, 보폭이 너무 큰 탓인지 판단하기 쉬워집니다.
여기서는 표본 하나, 은닉 뉴런 하나, 매개변수 다섯 개만 사용합니다. 모든 중간값과 기울기를 손으로 따라갈 수 있도록 작게 만든 회귀 교육 모형이며, 큰 신경망의 표현 능력을 대신하는 모형은 아닙니다.
전체 모형부터 명확히 정의하기
입력 와 목표 를 고정하고 다음을 계산합니다.
| 기호 | 역할 |
|---|---|
| 은닉층의 가중치와 편향 | |
| 출력층의 가중치와 편향 | |
| 기본값은 ReLU, 비교용 tanh도 제공 | |
| 활성화 전 값, 은닉값, 예측 | |
| 부호가 있는 예측 오차 | |
| 갱신에 사용할 학습률 |
손실 앞의 는 미분식을 간단하게 만듭니다. 목표는 학습할 변수가 아닙니다. 입력 기울기도 계산하지만 갱신 버튼은 만 바꿉니다. 어떤 변수를 고정하는지 먼저 확인하세요.
순전파: 미분하기 전에 값을 저장하기
기준 예제는 , 이고
입니다. 먼저 입니다. ReLU를 통과하면 , 출력은 입니다. 오차는 이고 손실은 입니다.
| 값 | 기준 예제의 결과 |
|---|---|
이 값들이 국소 미분의 평가 지점입니다. 매개변수를 이미 갱신한 상태의 값으로 일부 미분을 계산하면 다른 계산이 됩니다. 역전파를 시작하기 전에 순전파 표를 완성하세요.
스칼라 손실에서 거꾸로 출발하기
를 중간 변수 에 대한 손실의 민감도라고 쓰겠습니다. 시작값은 입니다. 제곱 손실을 미분하면
입니다. 출력 연산 를 거꾸로 통과하면
를 얻습니다. 기준점에서는 , , 입니다. 같은 상류 오차에 각 입력 인자의 국소 미분을 곱한다는 구조를 확인하세요.
활성화 함수를 문처럼 통과하기
ReLU는 0이 아닌 곳에서
입니다. 기준점 는 양수이므로 문이 열려 있고, 입니다. 음수 영역에서는 문이 닫혀 이 경로의 일차 민감도가 0이 됩니다.
에서는 ReLU의 고전적 도함수가 없습니다. 이 실험은 계산 규약으로 을 명시적으로 선택합니다. 이것을 유일한 고전적 미분값이라고 설명하거나 모든 수치 차분이 같은 값을 반환해야 한다고 가정하면 안 됩니다.
tanh를 선택하면 를 사용합니다. 매끄러운 함수이므로 ReLU의 꼭짓점과 비교하기 좋습니다. 다만 매끄럽다는 사실이 작은 기울기를 방지하지는 않습니다. 큰 절댓값의 입력에서는 tanh도 포화되어 미분이 작아집니다.
모든 매개변수와 입력의 기울기 구하기
은닉층의 아핀 연산을 미분하면
입니다. 앞서 구한 출력층 기울기까지 선언한 순서대로 모으면
입니다. 입력 기울기는 입니다. 매개변수를 고정하고 입력을 바꿀 때 손실이 어떻게 반응하는지 나타내므로 매개변수 기울기와는 질문이 다릅니다.
공유 변수가 있는 그래프라면 모든 하류 경로에서 도착하는 기여를 더해야 합니다. 이 작은 사슬에는 복잡한 공유 매개변수가 없지만, Jacobian 단원에서 배운 누적 원칙은 큰 모형에서도 그대로 필요합니다.
같은 이전 상태에서 한 번에 갱신하기
경사하강은 다섯 매개변수를 동일한 이전 상태의 기울기로 바꿉니다.
이면 새 매개변수는 입니다. 이 값을 넣어 순전파를 다시 실행하면
입니다. 이전 손실에서 어떤 기울기 값을 빼서 추측한 결과가 아니라, 갱신 후 모형을 새로 계산한 실제 손실입니다. 가중치 하나를 먼저 바꾼 뒤 그 값으로 나머지 미분을 계산하면 다른 알고리즘이 됩니다.
실험은 수동으로 한 번씩 갱신하며 이전·새 손실을 표시합니다. 최대 50회, 저장할 매개변수 범위는 입니다. 범위를 벗어나는 후보는 수치와 이유를 보여주고 적용하지 않습니다. 값을 몰래 잘라내지는 않습니다. 이 제한은 교육용 화면의 조작 범위이지 경사하강의 수학적 전제가 아닙니다.
올바른 기울기여도 손실은 증가할 수 있다
큰 학습률 예제는 같은 기준점에서 를 사용합니다. 동시 갱신 후 매개변수는 입니다. 새 이므로 ReLU 출력은 0, 예측은 , 손실은 2입니다. 이전 손실 0.5보다 커집니다.
미분 가능하고 기울기가 0이 아닌 점에서 음의 기울기는 국소 하강 방향입니다. 임의로 큰 유한 보폭까지 개선을 보장하는 것은 아닙니다. 활성화 경계를 넘거나 여러 매개변수의 상호작용이 달라지면 일차 근사가 부정확해질 수 있습니다. 손실 증가만 보고 미분이 틀렸다고 결론 내리기 전에 보폭과 갱신 후 순전파를 확인하세요.
닫힌 ReLU도 모든 학습을 막지는 않는다
은닉 편향을 , 목표를 로 설정하고 나머지는 기준값으로 두세요. 그러면 , , 예측 0, 손실 0.5입니다.
활성화 문이 닫혀 의 기울기는 0입니다. 의 기울기도 이므로 0입니다. 하지만 출력 편향의 기울기는 입니다. 닫힌 문 뒤의 매개변수는 여전히 학습할 수 있습니다. 비활성 은닉 뉴런 하나가 신경망 전체의 모든 기울기를 0으로 만든다고 일반화하지 마세요.
유한차분 검산은 조건과 함께 읽기
각 매개변수 에 대해 나머지를 고정하고 두 손실을 다시 계산합니다.
표에는 역전파, 중앙차분, 절대 차이가 함께 나옵니다. 충분히 매끄러운 구간에서는 독립적인 검산이 되지만 절단 오차와 반올림 오차가 있습니다. 가능한 가장 작은 이 항상 좋은 선택은 아닙니다.
표는 ReLU 차분 구간이 한 가지에 머무는지도 표시합니다. 꼭짓점 예제 에서는 입니다. 선택한 역전파 규약은 은닉 가중치 기울기를 0으로 계산하지만, 의 중앙차분은 약 입니다. 양쪽 표본이 꼭짓점을 가로지르며, 일치해야 할 고전적 도함수가 없습니다. 화면은 이 상황을 별도 경고로 설명합니다. 큰 차이 하나를 자동미분 전체의 실패로 해석하지 마세요.
자동미분·수치미분·메모리의 관계
역전파는 기록한 중간값에서 기본 연산의 미분을 평가하고 합성합니다. 신경망 전체를 유한차분하는 것도, 거대한 하나의 수식을 전부 기호 전개하는 것도 아닙니다. 역방향 자동미분은 지원하는 계산 그래프에 이 패턴을 구현합니다.
역방향 계산에는 필요한 순방향 정보가 있어야 합니다. 구현에 따라 중간값을 저장하거나 일부를 다시 계산하여 메모리와 연산량을 교환할 수 있습니다. 매개변수가 많고 목적함수가 스칼라일 때 역방향 계산은 매개변수별 차분보다 효율적인 경우가 많습니다. 임의의 다중 출력 모형의 전체 Jacobian까지 공짜로 얻는다는 뜻은 아닙니다.
이 실험은 값을 추적하기 쉽도록 JavaScript의 명시적 공식을 사용합니다. 브라우저에 PyTorch를 탑재하거나 범용 자동미분 엔진을 구현한 것은 아닙니다. 실제 프레임워크의 저장 텐서와 미분 불가능 함수 처리는 PyTorch 공식 Autograd mechanics를 참고하세요.
다음 단원 전에 직접 확인하기
- 표를 보지 않고 기준 예제의 다섯 기울기를 구하세요. 각 미분에 필요한 순전파 값을 설명하세요.
- 학습률 0.01로 한 번 갱신한 뒤 순전파를 다시 계산하여 , 손실 를 확인하세요.
- 닫힌 ReLU 예제에서 왜 출력 편향만 0이 아닌 매개변수 기울기를 갖는지 설명하세요.
- tanh로 바꾸고 여러 을 비교하세요. 수치 불일치만으로 원인을 확정할 수 없는 이유를 설명하세요.
- 하나의 은닉값이 두 출력 항에 쓰인다고 가정하고 역방향 경로를 그리세요. 어느 지점에서 기여를 더해야 하나요?
이제 최적화, 공유 계산, 미분 가능한 과학 모형을 공부할 계산 기반이 마련되었습니다. 다음 선형대수 주제는 특이값분해입니다. 직사각형 행렬의 늘어남을 분석하고 저랭크 모형과 조건수로 연결합니다.
설명할 수 있나요?
실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.
선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.