다중 퍼셉트론(Multilayer Perceptron)

이번 내용은 보다 복잡한 문제를 풀기 위하여 기본 뉴런 모델에 어떻게 수정을 가하여 해결할 것인지를 다중 퍼셉트론의 개념을 소개하면서 기술한다.

앞전에 우리는 평면상에 그려진 여러 점들을 하나의 직선으로 구분할 수 있는 경우와 구분할 수 없는 경우가 있다는 것을 이야기하였다. 하나의 직선으로 구분한다는 것은 지난시간에 이야기하였던 단순한 퍼셉트론 모델에 의하여 가능하다는 것을 알고 있다. 그러면 하나의 직선으로 구분할 수 없는 경우는 어떻게 할 것인가? 먼저 1개 이상의 퍼셉트론으로 가능하다. 2개의 퍼셉트론이 각각 2개의 다른 입력을 분할하고 이들로부터 출력을 또 다른 퍼셉트론의 입력으로 하여 최종 입력들이 어느 그룹에 속하는지를 결정하는 것이다. 그림1.은 이를 도식적으로 나타낸 것이다.

그림1.

이러한 시도는 처음에는 아주 좋은 방안인 것처럼 보이나 좀 생각하면 이러한 퍼셉트론의 배열은 학습을 하지 못한다는 것을 알 수 있다.  이 구조의 각 뉴런은  가중된 입력들을 합하고 이를 기준 값과 비교하여 출력을 0 아니면 1로 한다. 첫 단계에 있는 퍼셉트론은 이 네트워크에 연결된 실제 입력들을 받아들이나 , 2번째 단계에 있는 퍼셉트론들은 그들의 입력을 첫 단계 퍼셉트론의 출력으로부터 받는다. 그래서 이들 2번째 단계의 퍼셉트론들은 실제 어느 입력이 1인지 0인지 모른다. 이들은 단지 첫 단계로부터 입력만을 안다. 학습은 실제 입력과 단위사이에 연결을 좋은 결과가 나오게 강화시키는 것인데 여기서는 실제 입력은 중간단계의 뉴런들에 의해서 출력 뉴런에 직접 입력이 차단된다. 0이나 1의 2개 출력 뉴런은 어느 정도 가중치를 줄 것인가에 대한 어떤 답을 주지 않는다. 그래서 가중치를 적당하게 조정하기가 어렵다.  이런 문제는 어느 입력 가중치를 증가시키고 내려야할지를 결정할 수 없게 만든다.

계단함수를 사용함으로 서 발생되는 어려움을 해결하는 것은 계단함수를 약간 조정하여 약간 다른 비선형함수를 사용하는 것이다. 여기서 비선형함수란 하나의 직선형태가 아닌 2개 이상의 직선이나 곡선으로 된 함수를 나타내고 이것은 바로 앞 강의에서 데이터를 하나의 직선으로 구분할 수 없는 경우에 해당한다. 이렇게 되면 출력이 0, 1처럼 갑자기 출력이 나왔다 없다하지 않고 중간에 약간의 입력에 관한 정보를 줄 수 있는 중간의 경사지역을 갖게 된다. 그러면 우리는 관련된 가중치를 언제 키울지 줄여야할지를 알 수 있게 된다. 이것은 네트워크가 학습할 수 있다는 것을 뜻한다.  그림2에 가능한 2개의 기준함수를 나타내었다.

그림2.

양경우의 기준함수 모두  가중된 입력 값들의 합이 기준 값보다 훨씬 크면 출력은 1이고 반대로 훨씬 적으면 0이 될 것이다. 그러나 기준 값과 가중된 입력 값이 거의 같다면 뉴런의 출력은 두 극단 사이 즉 1과 0사이  어떤 값을 가질 것이다.  이것은 바로 뉴런으로부터 출력은 좀 더 유용하고 어떤 비공식적인  방법으로 가중된 입력과 관련시킬 수 있다는 것을 뜻한다.

우리의 새로운 뉴런 모델은 다중모델이다. 먼저 간단한 경우에 3중 모델인데 첫 단계는 입력단계, 3번째는 출력단계, 이들 사이에 있는 단계로 구성된다. 이는 그림3에 나타나있다.

그림3.

이 숨겨진 단계는 직접 입력이나 출력에 연결되어있지 않다.

--쉬어가는 간단한 문제--

어항 속에 산소 공급을 위하여 공기방울을 만들어내는 장치가 있어서 연속적으로 방울이 올라오고 있다고 하자. 어떤 부유물이 이 공기방울들이 올라오는 물속을 지나간다고 할때 이 부유물은 위로 힘을 받아 위로 비스듬히 올라갈까요? 아니면 아래로 힘을 받아 아래로 비스듬히 움직일까요? 아니면 어떤 변화도 없이 그냥 공기방울물속을 지날까요? 아르키메데스 부력의 원리를 사용하여 설명해 보시오. (아르키메데스 부력의 원리란 어떤 물체가 물속에 있을 때 그 물체의 체적의 물의 질량만큼 위로 향하는 힘 즉 부력이 물속에 있는 물체에 작용한다는 것이다.)

-------------------------

숨겨진 단계에 있는 뉴런이나 출력단계에 있는 뉴런이나 기준함수가 전처럼 계단함수가 아니고 시그모이드함수(sigmoid function)라는 것을 제외하고 같은 퍼셉트론이다. 입력 단계에 있는 뉴런은 그들이 받은 값들을 다음 단계로 재분배하는 기능을 하므로 가중된 합이나 비교를 하지 않는다.  우리는 단일 단계의 퍼셉트론을 개선하여 기준함수를 계단형 함수에서 시그모이드 함수로 바꾸었고, 숨겨진 단계를 추가했기 때문에 학습 또한 바꾸어야한다.

다중 퍼셉트론에 대한 학습은 일반적으로 일반화된 델타규칙(generalized delta rule) 혹은 뒤로 전파하는 규칙(back propagation rule)라고 부른다. 1986년 Rumelhart, McClelland, Williams에 의해 제안되었다.

다중퍼셉트론의 작동은 이들에게 어떤 패턴을 보여주고 반응을 계산한다는 점에서 단일 퍼셉트론의 작동과 비슷하다. 원하는 결과와 비교하여 가중치를 변경하여 다음번에는 더 정확한 결과를 얻어야한다. 여기서 학습은 가중치를 조정하는 방법을 제공하나  단일 퍼셉트론에서 간단한 학습법은 다중퍼셉트론에서 그대로 적용되지는 않는다. 학습은 단일 퍼셉트론보다 복잡하나 패턴이 어떻게 학습되는가를 생각함으로서 잘 이해할 수 있다. 우리가 학습이 안 된 다중 퍼셉트론에게 어떤 입력 패턴을 보이면 그것은 임의의 출력을 낼 것이다. 우리는 다중 퍼셉트론의 결과 출력과 우리가 바라는 출력과의 차이를 나타내는 오차함수를 정의할 필요가 있다. 우리는 우리가 바라는 출력을 알기 때문에 이런 타입의 학습을 지도학습(supervised learning)이라고 한다. 성공적인 학습을 위해서는 다중퍼셉트론의 패턴결과는 우리가 원하는 결과에 다가서게 해야 하는데, 즉 오차함수의 오차를 계속 줄여야하는데 이는 단계들 사이의 뉴런사이에 가중치를 조정해야한다. 뒤로 전파하는 규칙은 어떤 특정 입력에 대하여 오차 함수 값을 계산하고 다시 바로 전 단계에서 또 다른 오차함수를 계산함으로서 가중치를 계속적으로 조정한다. 마지막 출력에서 바라는 결과와 비교는 간단하여 빨리 오차를 얻을 수 있어서 가중치를 조정하는 것이 쉬우나 중간 단계의 뉴런들에 대해서는 가중치의 조정이 그렇게 확실하지 않다. 직감적으로 우리는 큰 오차를 내는 출력단계의 뉴런에 연결된 중간단계의 뉴런은 많이 가중치를 고쳐야 되고 오차가 없는 출력과 연결된 중간단계의 뉴런의 가중치는 바꾸어져서는 안 된다는 것을 생각할 수 있다.  사실 수학적 이론에 의하면 어떤 특정 단계의 뉴런의 가중치는 그것과 연결된 뉴런의 오차와 직접 비례하여 조정되어야한다고 한다.

문제1. 앞 강의에서 했던 내용을 참고하여 or를 2개 입력을 가지는 퍼셉트론의 가중치를 얼마로 할지를 결정하라.  or는 2개 입력 중 어느 하나의 입력이 1이면 출력이 1이 되는 경우를 말한다.

문제2. And를  2개 입력을 가지는 퍼셉트론의 가중치를 결정하시오. 여기서 and는 2개 입력 모두가 1이면 출력이 1이 되는 경우를 이야기한다.

문제3. And Not을 2개 입력을 가지는 퍼셉트론의 가중치를 결정하시오. 2개 입력 중 첫 번째 입력이 1이고 2번째 입력이 0인 경우를 제외하고 모든 출력이 0이 되는 경우를 이야기한다.

문제4. XOR( Exclusive Or)를 2개 입력을 가지는 퍼셉트론의 가중치를 결정하시오. 2개 입력 중 어느 하나만 1이고 나머지 입력은 0이 되는 경우만 출력이 1이 되고 나머지 출력은 0이 되는 경우를 이야기한다.