본문 바로가기

DATA STUDY/밑바닥부터 시작하는 딥러닝

밑시딥 - 퍼셉트론의 한계

 

퍼셉트론은 AND, NAND, OR 게이트를 훌륭하게 해결했습니다.

 

그렇다면 XOR 게이트는 어떨까요?

 

XOR게이트 배타적 논리합이라는 논리회로입니다. x1과 x2 중 하나가 1일때만 1을 출력합니다.

 

<XOR 게이트의 진리표>

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 0

 

위 진리표를 구현할 수 있는 매개변수를 퍼셉트론을 통해 구할수있을까요?

 

답은 불가능하다입니다.

 

wikidocs.net/24958

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

해당 링크에 가보시면 그래프상에서 직선으로 점을 구분하고 있을겁니다.

 

간단히 설명을 하자면 퍼셉트론은 직선(선형)으로 점을 구분할 순 있지만 곡선(비선형)으로는 구분이 불가하기 때문에 XOR 게이트 구현이 불가능하다는 설명입니다.

그렇다면 퍼셉트론으로 XOR 게이트는 구현이 정말 불가능할까요?

 

'단층' 퍼셉트론으로는 불가하지만 '다층' 퍼셉트론으로는 가능합니다.

 

 

지금까지 봤던 퍼셉트론은 입력층과 출력층만 존재했습니다. 입력층과 출력층 사이에 층을 추가하면 그게 바로 다층 퍼셉트론이 됩니다. 중간에 추가한 층을 '은닉층'이라고 부릅니다.

 

 

<출처 = 위키피디아>
<출처 = 위키피디아>
<출처  = 위키피디아>

이런식으로 AND, NAND, OR 게이트를 잘 조합하면 XOR 게이트를 구현할 수 있습니다.

 

가장 아래 있는 NAND, OR, AND 게이트를 이용한 XOR 게이트를 파이썬으로 구현해보겠습니다.

 

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

 

생각보다 간단하죠?

 

이미 정의해둔 함수들을 사용하기만 하면 됩니다.

 

 

 

그래서 결론적으로 이런 형태의 퍼셉트론을 구현해봤습니다. 전에 보던 x1, x2 그리고 y로 구성되던 퍼셉트론에서 s1, s2가 추가된 형태이죠?

 

여기에서 생각해봐야할 것은

퍼셉트론의 층을 하나 더 쌓았더니 구현할 수 있는 범위가 늘어났다는 것입니다.

과연 층을 계속해서 쌓아가면 더욱 다양한 기능을 구현 할 수 있을까요?

 

저도 아직 모릅니다. 같이 알아가봐요

 

 

+

needjarvis.tistory.com/181

 

퍼셉트론(Perceptron) -3 (인공지능의 1차 겨울)

저번 포스팅에는 퍼셉트론으로 구현이 가능한 논리 게이트(논리 회로)에 대해서 포스팅을 하였다. 왜 논리 게이트에 대해서 포스팅을 했느냐면, 바로 XOR에 대한 문제점 때문이다. 로센블래트와

needjarvis.tistory.com

퍼셉트론이 어떻게 발전해왔는지 약간 뒷이야기(?)를 설명해주고 있습니다. 관심 있으신 분은 한번 확인해보세요 :D