퍼셉트론의 한계로는 AND, OR, NAND와는 다르게 XOR을 표현할 수 없다.
왜 안될까?
먼저 XOR게이트가 왜 안되는지 알아보기 전에 OR게이트를 시각적으로 보여주겠다.
OR게이트를 시각화 한다면 이와같이 나온다.
자 그럼 반대로 XOR게이트를 시각화해서 보여주겠다.
XOR게이트를 시각화 한다면 아래와 같이 휘어진 선으로 나오게 된다.
퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있다.
XOR과 같은 곡선의 영역을 비선형 영역, OR과 같은 영역을 선형 영역이이라고 한다.
쉽게 말해 비선형 영역은 직선 1개로 표현할 수 없는 영역을 말한다.
반대로 선형 영역은 직선 1개로 표현할 수 있는 영역을 말한다.
다층 퍼셉트론을 활용하는 것
다층 퍼셉트론이란 층이 여러개인 퍼셉트론.
XOR의 게이트를 보면 아래와 같다.
출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cni1577&logNo=221619153912
AND, OR, NAND를 사용하여 만든 것이다.
그럼 코드는 어떻게 될까?
코드는 아래와 같으며 앞에서 사용했던 OR, AND, NAND 함수를 사용한다.
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
위의 XOR의 퍼셉트론은 AND, OR, NAND와는 다르게 층이 2층 퍼셉트론이다.
이처럼 층이 여러개인 퍼셉트론을 다층 퍼셉트론이라고 한다.