ML

역전파(BackPropagation) 이해하기

지미닝 2024. 6. 5. 16:09

인공 신경망이 순전파 과정을 진행하며 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법을 사용하여 가중치를 업데이트할까?

1. 인공 신경망의 이해(Neural Network Overview)

아래의 그림의 인공 신경망은 입력층, 은닉층, 출력층 이렇게 3개의 층을 가진다. 또한 해당 인공 신경망은 두 개의 입력과, 두 개의 은닉층 뉴런, 두 개의 출력층 뉴런을 사용한다. 은닉층과 출력층의 모든 뉴런은 활성화 함수시그모이드 함수를 사용한다.

위의 그림은 여기서 사용할 인공 신경망의 모습을 보여준다. 은닉층과 출력층 모든 뉴런에서 변수 z가 존재하는데 여기서 변수 z는 이전 층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합을 의미한다. z 우측의 |를 지나서 존재하는 변수 h또는 o는 z가 시그모이드 함수를 지난 후의 값으로 각 뉴런의 출력값을 의미한다.

역전파 예제에서는 인공 신경망에 존재하는 모든 가중치 w에 대해서 역전파를 통해 업데이트하는 것을 목표로 한다. 해당 인공 신경망은 편향b를 고려하지 않는다.

2. 순전파(Forward Propagation)

주어진 값이 위의 그림과 같을 때 순전파를 진행해보자. 파란색은 입력값이며 빨간색 숫자는 각 가중치의 값이다.

각 입력은 입력층에서 은닉층 방향으로 향하면서 각 입력에 해당하는 가중치와 곱해지고, 결과적으로 가중합으로 계산되어 은닉층 뉴런의 시그모이드 함수의 입력값이 된다. z1,z2는 시그모이드 함수의 입력으로 사용되는 각각의 값이다.


z1과 z2는 각각의 은닉층 뉴런에서 시그모이드 함수를 지나게 되는데 시그모이드 함수가 리턴하는 결과값은 은닉층 뉴런의 최종 출력값이다. 식에서는 각각 h1과 h2에 해당하며, 아래의 결과와 같다.

h1과 h2 이 두 값은 다시 출력층의 뉴런으로 향하게 되는데 이때 다시 각각의 값에 해당되는 가중치와 곱해지고, 다시 가중합 되어 출력층 뉴런의 시그모이드 함수입력값이 된다. 식에서는 각각 z3, z4에 해당한다.

z3과 z4가 출력층 뉴런에서 시그모이드 함수를 지난 값은 이 인공 신경망이 최종적으로 계산한 출력값이다. 실제 값을 예측하기 위한 값으로서 예측값으로도 부른다.

이제 예측값과 실제값의 오차를 계산하기 위한 오차 함수를 선택해야한다. 오차를 계산하기 위한 손실함수로는 평균 제곱 오차 MSE를 사용한다. 식에서는 실제값을 target이라고 표현하였으며, 순전파를 통해 나온 예측값을 output이라 표현하였다. 각 오차를 모두 더함녀 전체 오차 Etotal이 된다.

3. 역전파 1단계(BackProgataion Step 1)

순전파입력층 ➡️ 출력층인 반면 역전파출력층 ➡️ 입력층 방향으로 계산하면서 가중치를 업데이트해간다.
출력층 바로 이전의 은닉층을 N층이라고 하였을 때, 출력층과 N층 사이의 가중치를 업데이트하는 단계를 역전파 1단계, 그리고 N층과 N층의 이전층 사이의 가중치를 업데이트하는 단계를 역전파 2단계라고 한다.

역전파 1단계에서 업데이트 해야 할 가중치는 w5,w6,w7,w8 총 4개인데 원리 자체는 동일하므로 업데이트가 가능하다. 경사 하강법을 수행하려면 가중치 w5를 업데이트 하ㅏ기 위해서 미분을 해야하는데, 여기서 미분의 연쇄법칙(Chain rule)에 따라서 아래와 같이 쓸 수 있다.


위의 식에서 우변의 세 개의 각 항에 대해서 순서대로 계산해보자. 우선 첫번째 항에 대해서 계산해본다.
Etotal의 값은 아래와 같이 나왔었다.

따라서 미분한 값은 아래와 같다.

두 번째 항을 주목해야한다 o1은 시그모이드 함수의 출력값이다. 그런데 시그모이드 함수의 미분은 f(x) x (1 - f(x)) 다.이에 따라 두 번째 항을 미분한 결과는 아래와 같다.

마지막으로 세번째 항은 h1의 값과 동일하다.

우변의 모든 항을 계산하였으니 이제 값을 모두 곱해주면 아래와 같다.

이제 앞서 배웟던 경사 하강법을 통해 가중치를 업데이트 해야한다. 하이퍼파라미터에 해당하는 학습률 α는 0.5라고 가정한다.


이와 같은 원리로 나머지 가중치 값들도 계산할 수 있다.

4. 역전파 2단계(BackPropagation Step 2)


1단계를 완료했다면 이제 입력층 방향으로 이동하며 다시 계산을 이어가야한다.
현재 인공 신경망은 은닉층이 1개밖에 없으므로 이번 단계가 마지막 단계이다. 하지만, 은닉층이 더 많은 경우라면 입력층 방향으로 한 단계씩 계속해서 계산해가야 한다.

이를 계산하기 위해 미분의 연쇄 법칙에 따라서 풀어쓸 수 있다.

위의 식에서 첫째항을 다과 같이 풀어서 식을 쓸 수 있다.

위의 식의 우변의 두 항을 각각 구해보면


위와 같이 구할 수 있다. 이제 전체값을 첫 번째 가중치로 곱한 값ㅇ르 구하기 위해서 나머지 두항의 값을 구해야 한다.

결국 아래와 같이 나오게 된다.

이제 앞서 배웠던 경사하강법을 통해 가중치를 업데이트 한다.

이와 같은 원리로 다른 가중치들도 구할 수 있다.

5. 결과 확인


업데이트 된 가중치에 대해서 다시 한번 순전파를 진행하여 오차가 감소하였는지 보자.

기존의 오차가 1번의 역전파로 오차가 감소하였음을 확인할 수 있다. 인공 신경망의 학습은 오차를 최소화하는 목적으로 순전파와 역전파를 반복하는 것을 말한다.