생각정리

인공지능-퍼셉트론을 파이썬으로 구현해보고 다층 퍼셉트론 공부하기 본문

인공지능

인공지능-퍼셉트론을 파이썬으로 구현해보고 다층 퍼셉트론 공부하기

공부중초보에요 2022. 9. 23. 17:30
728x90

이전 게시글에서 알아봤던 AND게이트는 직관적이고 알기 쉬웠지만,

이번에는 조금 다른 관점으로 퍼셉트론에 접근해보겠습니다.

퍼셉트론을 새로운 관점으로 접근하기.

 

즉, 임계값 쎄타를 -b라는 것으로 치환하고, -b를 좌변으로 넘기면 위의 그림의 오른쪽 그림과 같아집니다.

 

근본적인 의미는 이전과 같지만, 여기에서는 이 b를 편향이라고 부릅니다. 

 

이전 관점에서 쎄타는 단순히 y의 값을 결정하는 기준값이였다면, 새로운 관점에서 본 -쎄타 즉 편향은 해당 출력 결과값이 얼마나 쉽게 1이 되느냐(= 뉴런이 활성화 되느냐)를 조정하는 매개변수로 생각해볼 수 있습니다.

 

예를들어, 편향b 가 -20이라면, 각 입력신호 * 각 가중치의 합이 20을 초과해야 뉴런을 활성화 시킬 수 있다고 이해하면 됩니다. 

(참고: 가끔 어떤 곳에서는 편향 마저도 일종의 가중치로 부르는 경우도 존재함.)

 

 

코드구현

 이 편향이라는 개념을 적용시킨 퍼셉트론으로 AND게이트를 파이썬 코드로 구현해보면 다음과 같습니다.

=>  여기서 x는 입력신호들을 의미합니다. w는 가중치이며, b는 편향입니다. 위 코드는 main함수에서 for문으로 반복해서 and게이트의 진리표에 존재하는 입력 값들을 차례대로 퍼셉트론의 입력신호로 넣어주고, 

AND함수는 입력받은 입력신호 x1,x2로부터  w1*x1 + w2*x2 + b의 값을 구해서 0이상인지 아닌지 판단해서 출력신호를 리턴합니다.  

(코드 이해에 도움되는 정보: 위 코드에서 w*x는 넘파이 배열의 곱입니다. 넘파이 배열의 곱은 배열의 크기가 같다면, 상대적으로 같은 위치에 존재하는 값들끼리 곱해진 새로운 넘파이 배열이 나옵니다. 그리고 sum함수는 넘파이 배열 안의 원소들의 합을 모두 구한 값을 돌려줍니다.)

 

이런 식으로 NAND 와 OR 등 다른 논리 게이트들도 코드로 만들 수 있습니다. 

 

 

(단일) 퍼셉트론의 한계

위에서 만든 퍼셉트론을 잘 생각해보면, 좌표평면 상에서 선형적인 직선으로 존재한다는 것을 알 수 있습니다.

예를 들어서 , 입력신호 x1과 x2를 좌표축으로 갖는 좌표평면 상에 AND게이트를 나타내보면 다음과 같습니다.

AND게이트

 

 

위와 같은 방법으로 잘 생각해보면, OR게이트도 다음과 같이 좌표평면 상에 표현 될 수 있습니다.

OR게이트

 

 

 

 그렇다면, XOR 게이트는 어떻게 그릴 수 있을까요?

=> 정답은 한개의 퍼셉트론만을 활용해서 직선으로 XOR게이트를 좌표평면 상에 그릴 수 없습니다. 

 

즉, 퍼셉트론은 직선 한개로 나눈 영역만 표현 가능하다는 단점이 존재합니다.

하지만, 퍼셉트론이 여러개 모인 다층 퍼셉트론이라면 표현 가능해집니다. 

잘 생각해보면 XOR게이트는 NAND게이트와 OR게이트를 AND게이트로 합친 게이트입니다.

 

그렇다면 XOR게이트를 아래 그림과 같이 생각해볼 수 있습니다.

위에서 AND게이트와 OR게이트를 그려봤으므로, AND의 반대인 NAND를 한번 고민해보고 아래 그림을 보시면 더 쉽게 이해가 가능할 것입니다.

 

 

 

파이썬으로 XOR게이트를 구현해보면 다음과 같습니다. 

 

XOR을 뉴런을 이용한 퍼셉트론으로 표현한 그림

 

이전 층에서의 결과가 다음층의 입력신호로 들어가는 것을 알 수 있습니다. 

이번에 알아본 것처럼, 단층 퍼셉트론으로는 표현하지 못하는 것을  다층구조로 구현할 수 있습니다. 

 

 

읽어주셔서 감사합니다. 

위 글에서 문제가 있을시 댓글 남겨주시면 빠르게 조치하겠습니다. 감사합니다.

 

참고자료)

밑바닥부터 시작하는 딥러닝-사이토고키,한빛미디어

 

728x90

'인공지능' 카테고리의 다른 글

신경망 학습  (0) 2022.09.28
인공지능 - 신경망  (1) 2022.09.23
인공지능-퍼셉트론 모델  (2) 2022.09.23
Comments