1. 신경망 예시
예를 들어, 2개의 은닉층(hidden layers)이 있는 신경망을 생각해 봅시다.
- 입력층: x (입력 벡터)
- 은닉층 1: h1
- 은닉층 2: h2
- 출력층: y
그리고 각 층은 선형 변환을 하고 활성화 함수(activation function)를 통과한다고 가정합니다. 여기서는 ReLU를 사용하겠습니다.
신경망 구조:
- h1=ReLU(W1x+b1) (은닉층 1)
- h2=ReLU(W2h1+b2) (은닉층 2)
- y=W3h2+b3 (출력층)
여기서 각 층의 가중치 W와 편향 b는 학습되는 파라미터입니다.
이제 손실 함수 L에 대해 역전파를 통해 그래디언트를 계산해 보겠습니다.
2. 역전파 과정 (Backpropagation)
(1) 손실 함수 L에 대한 출력층의 그래디언트
먼저, 출력층에서 손실 함수에 대해 출력 y의 그래디언트를 구합니다.
예를 들어, 손실 함수가 MSE(평균 제곱 오차)일 경우,
L=21(ytrue−y)2
출력에 대한 손실의 미분은 다음과 같습니다:
∂y∂L=−(ytrue−y)
(2) 은닉층 2의 그래디언트
출력 y에 대한 그래디언트를 은닉층 2의 가중치 W3에 대해 미분합니다:
∂h2∂L=∂y∂L⋅∂h2∂y
여기서:
∂h2∂y=W3
따라서:
∂h2∂L=−(ytrue−y)⋅W3
이 값은 은닉층 2의 출력 h2에 대한 그래디언트입니다.
(3) 은닉층 1의 그래디언트
ReLU 함수의 미분은 다음과 같습니다:
∂z∂ReLU(z)={1,0,if z>0if z≤0
은닉층 2에서 전달된 그래디언트에 ReLU의 미분값을 곱합니다:
∂h1∂L=∂h2∂L⋅∂h1∂h2⋅∂h1∂ReLU(W2h1+b2)
즉,
∂h1∂L=−(ytrue−y)⋅W3⋅W2⋅ReLU′(W2h1+b2)
(4) 가중치와 편향에 대한 그래디언트 계산
가중치 W2 와 편향 b2 에 대한 그래디언트:
∂W2∂L=∂h2∂L⋅∂W2∂h2
∂b2∂L=∂h2∂L⋅∂b2∂h2
가중치 W1 와 편향 b1 에 대한 그래디언트:
∂W1∂L=∂h1∂L⋅∂W1∂h1
∂b1∂L=∂h1∂L⋅∂b1∂h1
3. 역전파 흐름 정리
- 출력층에서 ∂y∂L를 구합니다.
- 은닉층 2로 그래디언트를 전파하고, ∂h2∂L를 계산합니다.
- 은닉층 1로 그래디언트를 전파하고, ∂h1∂L을 계산합니다.
- 마지막으로 가중치와 편향에 대한 그래디언트를 구하여 파라미터들을 업데이트합니다.
4. 결론
- 역전파에서는 출력에서 입력으로 그래디언트가 전달됩니다.
- 출력층에서 시작하여 은닉층을 거쳐 입력층으로 그래디언트가 전파됩니다.
- 이 과정에서 체인 룰을 사용하여 각 층의 가중치와 편향에 대한 그래디언트를 계산하고, 이를 통해 네트워크를 학습시킵니다.
- 입력 x의 그래디언트도 계산되지만, 이는 보통 학습에 직접 사용되지 않고, 다른 목적 (예: 적대적 공격, 특징 시각화 등)에서 활용됩니다.