이번에는 2개의 출력 노드를 가지는 그림을 보겠습니다.
결과값의 오차
i1 -> 계층1(1) -> (w1.1)-> 계층2(1) -> o1 e1
-> (w1.2)
-> (w1.2)
i2 -> 계층1(2) -> (w2.2) -> 계층2(2) ->o2 e2
2개의 출력 노드 모두 오차를 가질 수 있습니다. 특히 우리가 아직 네트워크를 학습시키지 않은 경우에는 거으 ㅣ무조건 오차를 가지고 있겠죠. 그러므로 2개의 오차 모두 가중치를 어떻게 업데이트해야 할지에 대한 정보를 줘야 합니다. 우리는 앞에서 했던 대로 출력 노드의오차를 앞 단의 각 가중치에 비례해 나누어 주는 접근 방법을 활용할 수 있습니다.
출력노드가 여러 개라고 해서 변하는 것은 아무것도 없습니다. 그저 첫 번째 출력 노드에서 했던 작업을 두 번째 출력 노드에서 동일하게 반복하면 되는 것입니ㅏㄷ. 어떻게 이렇게 간단할 수 있냐고요? 그 이유는 하나의 출력 노드로의 연결은 다른 출력 노드로의 연결과 완전 별개이기 때문입니다. 각각의 연결 간에 는 전혀 의존 관계가 존재하지 않는다느 ㄴ말입니다.
앞의 그림을 다시 한번 보면 첫 번째 출력 노드의 오차를 e1이라고 표기했습니다. 이 초차는 학습데이터 t1에 의해 제공된 실제 값과 우리가 계산한 ㅜㅊㄹ력 값 o1사이의 차이를 의미합니다. 다시 말해 e1 = t1 -01입니다. 그리고 두 번째 출력 노드에서의 오차는 e2라고 표기해습니다.
그림을 자세히 보면 e1은 w11과 w21의 가중치의 값에 비례해서 나눠어 연결된 노드로 전달됩니다. 이와 유사하게 e2는 w12와 w22의 값에 비례해 나뉩니다.
좀 더 이해가 쉽도록 이를 수식으로 표현해 보겠습니다. 오차 e1은 w11과 w21의 업데이트에 영향을 주게 됩니다. 그러므로 w11을 업데이트 하기 위해 사용되는 e1의 일부는 다음과 같이 표현 가능합니다.
w11 / (w11 + w21)
그리고 w21을 업데이트 하기 위해 사용되는 e1의 일부는 다음과 같이 표현할 수 있습니다.
w21 /( w21 + w11)
이러한 수식의 의미는 결국 무엇일까요? 오차 e1은 나뉘어 전달될 때, 작은 가중치를 가지는 연결 노드보다 큰 가중치를 가지는 연결 노드에 더 많이 전달된다는 것입니다.
만약 w11 = 6이고 w21 = 3이라는 값을 가진다고 하면 w11은 w21보다2배 큽니다. 이때 w11을 업데이트하기 위해 전달되는 오차 e1의 일부는 6 / (6 +3) =6 /9 = 2/3 가 됩니다. 그럼 1/3이 남는데요. 실제로 오차 e1에서 w21을 업데이트 하기 위해 전달되는 부분은 3/ (6 +3) = 3/ 9 = 1/3입니다.
만약 가중치가 같다면 1/2씩 전달되게 될 것입니다. 예를 들어 w11 = 4, w21 = 4라면 약쪽으로 나눠어 전달되는 오차는 2개 모두 4 /( 4+4) = 4/8 = 1/2이 될 것 입니다.
지금까지 공부한 내용을 정리해보겠ㅅ브니다. 우리는 오차를 이용해서 네트워크 내의 매개변수들의 값(가중치)을 조정해나간다는 사실을 알게 되었습니다. 최종 출력 계층으로부터 그 직전 계층으로 가는 연결 노드으 ㅣ가중치를 업데이트하는 방식을 살펴봤는데 여러개의 출력 노드가 있는 경우에도 그 각각으 ㅣ출력노드를 개별적으로 처리하면 될 뿐, 복잡해질 것이 전혀 없다는 사실을 알게 되었습니다.
그렇다면 2개 보다 더 많은 꼐층을 가지는 신경망에서는 어떻게 하면 될까요? 다시 말해 최종 출력 계층에 인접하는 계층이 아니라, 멀리 떨어져 있는 꼐층과 관련된 가중치는 어떻게 업데이트를 해야 할 까요? 이데 대해서는 다음장에서 살펴보겠습니다.
댓글 없음:
댓글 쓰기