인공 신경망이 순전파 과정을 진행하여 예측값과 실제값의 오차를 계산하였을 떄 어떻게 역전파 과정에서 가중치를 업데이트하는지 보겠습니다.
역전파의 이해를 위해서 사용할 인공 신경망은 입력층, 은닉층, 출력층 이렇게 3개의 층을 가집니다. 또한 2개의 입력과, 2개의 은닉층 뉴런, 2개의 출력층 뉴런을 사용합니다. 은닉층과 출력층의 모든 뉴런은 활성화 함수로 시그모이드 함수를 사용합니다.

은닉층과 출력층의 모든 뉴런에서 변수 z가 존재하는데 여기서 변수 z는 이전층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합을 의미합니다. 이 값은 뉴런에서 아직 시그모이드 함수를 거치지 않은 상태입니다. 즉, 활성화 함수의 입력을 의미합니다. 변수 h와 o는 z가 시그모이드 함수를 지난 후의 값으로 각 뉴런의 출력값을 의미합니다.

주어진 값이 위의 그림과 같을 때 순전파를 진행하겠습니다. 파란색 숫자는 입력값을 의미하고 빨간색 숫자는 각 가중치 값을 의미합니다.
각 입력을 입력층에서 은닉층 방향으로 향하면서 각 입력에 해당하는 가중치와 곱해지고 결과적으로 가중합으로 계산되어 은닉층 뉴런의 시그모이드 함수의 입력값이 됩니다. z1, z2는 시그모이드 함수의 입력으로 사용되는 각각의 값에 해당됩니다.

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

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

z3, z4가 출력층 뉴런에서 시그모이드 함수를 지난 값은 인공 신경망이 최종적으로 계산한 출력값입니다. 예측값이라고 부를 수도 있습니다.

이제 해야할 일은 예측값과 실제값의 오차를 계산하기 위한 오차 함수를 선택하는 것입니다. 오차를 계산하기 위한 손실 함수로는 평균 제곱 오차(MSE)를 사용하겠습니다. 이 식에서는 실제값을 target이라고 표현하였으며 순전파를 통해 나온 예측값을 output으로 표현했습니다. 그리고 각 오차를 모두 더하면 전체 오차가 됩니다.

순전파가 입력층에서 출력층으로 향한다면 역전파는 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 합니다. 출력층 바로 이전의 은닉층을 N층이라고 했을 때 출력층과 N층 사이의 가중치를 업데이트 하는 단계를 역전파 1단계, 그리고 N층과 N층 이전층 사이의 가중치를 업데이트 하는 단계를 역전파 2단계라고 가정하겠습니다.

역전파 1단계에서 업데이트 해야 할 가중치는 W5, W6, W7, W8 총 4개입니다. 우선 W5에 대해서 먼저 업데이트를 진행하겠습니다. 경사 하강법으로 가중치 W5를 업데이트 하기 위해서 풀어야 할 식이 있습니다.


o1이라는 값은 시그모이드 함수의 출력값입니다. 시그모이드 함수의 미분은 f(x) x (1-f(x)) 이므로 다음과 같은 식을 얻을 수 있습니다.





그리고 알파 기호는 학습률인데 0.5라고 가정했습니다. 이와 같은 원리로 다른 가중치도 구할 수 있습니다.


역전파 1단계를 완료했다면 이제 입력층 방향으로 이동하며 다시 계산을 이어갑니다. 현재 인공 신경망은 은닉층이 1개밖에 없으므로 이번 단계가 역전파의 마지막 단계입니다. 그러나 은닉층이 더 많은 경우라면 더 많이 계산해야 합니다.
역전파 2단계에서 계산할 가중치는 W1, W2, W3, W4 입니다. 원리 자체는 동일합니다.







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