이 강의의 목표는 신경망을 작은 계산들의 연결로 보고, 역전파가 어떻게 미분을 뒤에서 앞으로 전달하는지 아주 기초부터 이해하는 것입니다.
먼저 오늘의 핵심 식을 봅니다.
∂w∂L=∂y∂L∂w∂y
이 식을 외우기 전에, 식 안의 말과 기호를 먼저 하나씩 풀어야 합니다.
| 말 |
뜻 |
| 신경망 |
작은 함수들을 층으로 쌓은 모델 |
| 뉴런 |
가중합과 비선형 변환을 하는 단위 |
| 계산그래프 |
계산 순서를 화살표로 나타낸 그림 |
| 손실 L |
예측이 정답과 얼마나 다른지를 하나의 숫자로 나타낸 값 |
| 가중치 w |
입력에 곱해지는, 학습으로 조정되는 수 |
| 역전파 |
미분을 뒤에서 앞으로 전달하는 알고리즘 |
수학에서 어려운 부분은 계산보다 읽기입니다. 뜻을 모르고 계산하면 공식이 암호처럼 보입니다.
공장 조립 라인에서 마지막 제품에 문제가 있으면, 어느 단계가 얼마나 영향을 줬는지 거꾸로 추적해야 합니다. 역전파도 마지막에 나온 손실에서 시작해, 앞 단계의 계산으로 원인을 거꾸로 추적합니다.
이제 핵심 식에 실제 기호를 넣어 읽어 봅니다.
∂w∂L=∂y∂L∂w∂y
- ∂w∂L: 가중치 w를 아주 조금 바꿀 때 손실 L이 얼마나 바뀌는가.
- ∂y∂L: 출력 y를 아주 조금 바꿀 때 손실 L이 얼마나 바뀌는가.
- ∂w∂y: 가중치 w를 아주 조금 바꿀 때 출력 y가 얼마나 바뀌는가.
핵심은 이것입니다. 손실 L은 가중치 w에 직접 매달려 있지 않고, 중간에 있는 출력 y를 거쳐서만 w와 연결됩니다.
w⟶y⟶L
그래서 w가 L에 주는 영향은 "w가 y에 주는 영향"과 "y가 L에 주는 영향"을 곱한 것입니다. 이것이 바로 연쇄법칙입니다.
신경망에는 가중치가 수백만 개 있습니다. 이 가중치 하나하나가 손실을 얼마나 바꾸는지 알아야, 손실이 줄어드는 방향으로 가중치를 조금씩 고칠 수 있습니다.
만약 가중치마다 손실을 처음부터 다시 계산해서 기울기를 구한다면, 계산량이 감당할 수 없이 커집니다. 그런데 연쇄법칙을 쓰면, 뒤 층에서 이미 구한 ∂y∂L를 앞 층이 그대로 받아서 자기 몫만 곱하면 됩니다. 즉 한 번의 뒤로 가는 계산으로 모든 가중치의 기울기를 얻습니다. 역전파가 필요한 이유가 바로 이것입니다.
손실 L이 출력 y의 함수이고, 출력 y가 가중치 w의 함수라고 합시다.
y=y(w),L=L(y)
가중치를 w에서 w+Δw로 아주 조금 바꾸면, 출력이 다음만큼 바뀝니다.
Δy≈∂w∂yΔw
그리고 출력이 Δy만큼 바뀌면, 손실이 다음만큼 바뀝니다.
ΔL≈∂y∂LΔy
두 식을 이어 붙이면
ΔL≈∂y∂L∂w∂yΔw
입니다. 양변을 Δw로 나누고 아주 작게 보내면
∂w∂L=∂y∂L∂w∂y
가 됩니다. 중간 변수가 여러 개면 같은 방법을 반복해서 곱을 늘리면 됩니다.
∂w∂L=∂y∂L∂a∂y∂z∂a∂w∂z
작은 신경망을 하나 정합니다. 입력은 x=1이고, 두 층으로 되어 있습니다.
1층(은닉층):
z1=w1x+b1,a1=ReLU(z1)=max(0,z1)
2층(출력층):
y=w2a1+b2
손실(제곱오차):
L=21(y−t)2
가중치와 정답을 다음처럼 둡니다.
w1=2,b1=0,w2=3,b2=1,t=5
z1=2⋅1+0=2,a1=ReLU(2)=2
y=3⋅2+1=7
L=21(7−5)2=21⋅4=2
먼저 출력에서 손실의 기울기를 구합니다.
∂y∂L=y−t=7−5=2
출력층 가중치 w2로 갑니다. ∂w2∂y=a1=2이므로
∂w2∂L=∂y∂L∂w2∂y=2⋅2=4
입력층 가중치 w1은 y→a1→z1→w1을 거칩니다. 각 조각은
∂a1∂y=w2=3,∂z1∂a1=1 (∵z1>0),∂w1∂z1=x=1
이므로 연쇄법칙으로 곱합니다.
∂w1∂L=∂y∂L∂a1∂y∂z1∂a1∂w1∂z1=2⋅3⋅1⋅1=6
학습률을 η=0.1로 두고 기울기 반대 방향으로 한 스텝 갑니다.
w2←3−0.1⋅4=2.6
w1←2−0.1⋅6=1.4
바뀐 가중치로 다시 순전파하면 z1=1.4, a1=1.4, y=2.6⋅1.4+1=4.64, L=21(4.64−5)2≈0.065가 되어 손실이 2에서 크게 줄어듭니다. 한 스텝의 역전파가 실제로 손실을 낮춘 것입니다.
방금 예제에서 ReLU를 뺀다고 합시다. 그러면 두 층은 다음처럼 됩니다.
a1=W1x,y=W2a1
a1을 대입하면
y=W2(W1x)=(W2W1)x
입니다. 여기서 W2W1은 또 하나의 행렬입니다. 그것을 W=W2W1이라고 두면
y=Wx
가 됩니다. 즉 층을 두 개 쌓아도 결국 하나의 선형변환과 완전히 같습니다. 아무리 많은 선형 층을 쌓아도
y=Wn⋯W2W1x=Wx
가 되어 표현력이 한 층과 다르지 않습니다.
그래서 층 사이에 ReLU나 시그모이드 같은 비선형함수를 넣습니다.
a1=ReLU(W1x),y=W2a1
이렇게 하면 y를 x의 하나의 행렬곱으로 합칠 수 없습니다. 비선형성이 있어야 곡선 형태의 복잡한 결정경계를 만들 수 있고, 층을 깊게 쌓는 의미가 생깁니다.
- 신경망은 작은 계산들을 화살표로 이은 계산그래프다.
- 손실 L은 가중치 w에 직접 붙지 않고, 중간 출력 y를 거쳐 연결된다.
- 그래서 w가 손실에 주는 영향은 조각들의 곱, 즉 연쇄법칙으로 구한다.
- 역전파는 뒤 층에서 구한 기울기를 앞 층이 받아 자기 몫만 곱해 전달하는 절차다.
- 2층 신경망도 순전파로 y와 L을 구하고, 역전파로 각 가중치의 기울기를 구해 한 스텝 갱신할 수 있다.
- 비선형함수가 없으면 여러 층이 하나의 선형변환으로 합쳐져 층을 쌓는 의미가 사라진다.
- 핵심 식은 다음과 같습니다.
∂w∂L=∂y∂L∂w∂y
- 손실 L이 가중치 w에 직접 연결되지 않는데, 왜 두 미분의 곱으로 기울기를 구할 수 있는지 설명할 수 있는가?
- 위 2층 예제에서 학습률을 0.5로 바꾸면 w1, w2는 각각 얼마가 되는가?
- ReLU를 빼면 왜 y=Wx 하나로 합쳐지는지 식으로 보일 수 있는가?