머신러닝

3-6 NN(Neural Network)이 아닌 집합계산 원리를 이용한 Perceptron XOR 논리 처리

coding art 2021. 7. 2. 17:05
728x90

하나의 퍼셉트론으로 XOR 논리 처리가 되지 않는다는 점은 코드 실행을 통해서 확인이 가능하였고 이미 이론적으로도 설명이 가능하였다. 이 문제를 해결하기 위해서 NN(neural Network) 방식에 의한 체계적인 해법이 이미 제시가 되어 있지만 이 문제를 보는 고정된 관점을 탈피해서 다소 다른 시각으로 XOR 논리를 퍼셉트론을 사용해 계산해 보도록 하자. NN 기법에 의한 해법 이전에 공식적으로 문제 제기를 했다고 하는 Minski Papert 교수에 의하면 여러 단의 NN을 사용하면 가능하겠지만 하나의 퍼셉트론으로는 이문제의 해답을 찾을 수 없다고 지적하였으나 이 문제를 풀 수 있는 제대로 된 대안 제시는 없었다.

 

여러 가지 대안이 있을 수 있으나 그 중의 하나를 알아보도록 하자.

그림에서 3개의 입력 값을 가지는 XOR_1 XOR_2 논리를 살펴보자. 이 둘의 합집합을 취한다면 XOR 논리가 됨을 쉽게 알 수 있을 것이다.

 

그렇다면 3개의 입력 값을 가지는 XOR_1 이나 XOR_2 에 대해서 퍼셉트론 계산이 되는지 다음과 같이 입력 데이터를 준비하여 learning rate0.005로 주어 TensorFlow 코드를 실행해 보자.

하나의 퍼셉트론을 사용하는 위 3번째 XOR 계산에서는 4개의 hypothesis 계산 값을 0.5 로 실패한 값을 출력하게 된다.

반면에 XOR_1 XOR_2 의 계산 결과는 다음과 같다.

이 계산 결과 hypothesis는 다음과 같이 정리된다.

hypothesis들을 주어진 구간에서 매스매티카로 3차원 그래픽 처리하여 살펴보기로 하자.

첫 번째는 XOR_1 문제를 두 번째는 XOR_2 문제를 푼 결과이다. 세 번째는 XOR_1 XOR_2 의 각각의 결과의 합집합을 그래픽 처리하고 threshold 0.5 에 해당하는 hypothesis 면을 넣었다. (0,1) (1,0) threshold 0.5 평면 위에 위치하고 있으며 (0,0)(1,1)threshold 0.5 평면 아래에 위치하고 있음을 알 수 있다.

 

비록 두 번 문제를 풀었으나 집합 이론에 따라서 논리적으로 합집합을 구했으므로 아무런 문제가 없다. 어차피 머신 러닝 문제는 컴퓨터 코딩을 통해서 계산하므로 if 제어문을 쓴다면 하나의 코드로 통합해서 계산하는 것도 가능하다.