[DL1] 퍼셉트론 정의, 구현, 한계점

sosimeow·2022년 2월 14일
0

ML/DL

목록 보기
1/9
post-thumbnail

밑바닥부터 시작하는 딥러닝을 벨로그에 복습겸 정리해두려 한다




0. 퍼셉트론이란?



퍼셉트론 알고리즘은 Frank Rosenblatt이 1957년에 고안한 알고리즘으로
딥러닝의 기원이 된다

퍼셉트론은 다수의 신호를 입력받아 하나의 신호를 출력한다
퍼셉트론의 출력 신호는 흐른다 / 안 흐른다 2가지 값이다


이 책에서 퍼셉트론은 정확히 '인공뉴런' 혹은 '단순 퍼셉트론'을 의미한다

위 그림의 원은 뉴런 혹은 노드라고 부른다




입력신호인 x에 각자 고유한 가중치 w가 곱해져서, 뉴런에 보내지게 된다.

뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력한다.
(1을 출력하는것은 뉴런이 활성화한다고 표현한다.)

또 정해진 한계를 임계값이라 하며 theta(세타) 기호로 나타낸다.





이러한 퍼셉트론의 동작원리를 나타내는 fomula이다.

여기서 입력 신호에 부여되는 고유한 가중치 w는
각 신호가 결과에 영향을 주는 영향력조절하는 요소로 작용한다







1. 퍼셉트론을 활용한 논리 회로


AND 게이트 와 OR 게이트는 진리표는 지겹도록 보았으니 NAND 게이트 진리표만 살펴보기로 한다.

NANDNot AND를 의미하며, AND게이트의 출력을 뒤집은 것이 그 동작이다.

진리표를 보면 입력신호가 모두 1일 때만 제외하고 출력이 모두 1이다.


NAND게이트를 퍼셉트론으로 구현하려면,
진리표에 맞는 적당한 가중치(w) 설정이 필요하다.
즉 입력신호 (x1, x2) 에 (w1, w2)를 곱했을 때 해당 진리표를 만족시켜야 한다.

그러한 가중치의 예가 무엇인지를 직접 생각해보는게 퍼셉트론을 가장 쉽게 이해하는 방법인듯 하다.



1.1 AND 구현

AND 게이트를 Python으로 구현한 것이다.

이는 위에서 살펴 본 fomula와 동일하게 작동됨을 알 수 있다.





위의 fomula는 기존의 theta를 -b 로 치환한 것으로,
여기서 b를 편향(bias)라 한다.

그럼 바뀐 식을 바탕으로 재구현 해보자.



크게 바뀐 것은 theta를 -b로 치환 한것,
가중치와 입력신호 계산을 numpy로 한 것 정도이다.

numpy와 행렬 계산에 익숙하지 않다면, 먼저 공부해야 한다.


편향은 '한쪽으로 치우쳐 균형을 깬다.'라는 의미를 가지며
구글에 흔히있는 과녁판으로 된 설명(분산&편향)을 찾아보면 이해가 쉽다.




1.2 OR 구현

바로 위에서 구현한 AND 게이트와 편향만이 다르다.

사실 OR 게이트를 구현하기 위해 가중치, 편향 모두를 바꿀 수 있고,
많은 경우의 수 중에 하나가 해당 경우이다.


OR이기 때문에 (0,0) 인 경우만 0을 출력하도록 편향을 -0.2로 설정하였다.
지금의 가중치에서는 편향이 -1, -0.25 등 -0.5보다 큰 음수이면 상관이 없다.




1.3 NAND 구현


가중치가 음수가 되었고, 편향은 0.6으로 하였다.

(1,1)일 때만 출력이 0이므로 0.5 < b <= 1 범위의 수로 설정할 수 있다
그 중 0.6을 선택한 것이다.







2. 퍼셉트론의 한계


2.1 XOR 게이트


XOR 게이트 즉 배타적 논리합은
입력신호 중 하나만 1일 때 1을 출력한다.(배타적은 자기 외는 거부)


위의 사진은 집합이 3개 일때, 배타적 논리합을 다이어그램으로 나타낸 것이다.


퍼셉트론의 한계를 얘기하기 위해
가장 먼저 XOR 게이트를 얘기하는 것은, 쉽게 짐작가능 하듯
퍼셉트론으로 이를 구현하지 못하기 때문이다.



앞으 3가지 사례는 진리표를 바탕으로 쉽게 구현할 수 있었다(몇 번의 대입만 해보더라도)




진리표만 봐서는 정말 구현이 안되는지 확신하기 어려운데, 그럴 땐 x,y좌표에 x를 점으로 찍어보면 된다.

위의 사진이 그것을 표현한 것인데,
XOR은 AND, OR 과는 달리 직선 하나로 다른 출력을 나눠낼 수 없다.
사진의 동그라미와 별표를 0과 1로 생각할 수 있다.


퍼셉트론이 직선으로 영역을 구분하는 이유는
위에서 보았던 퍼셉트론의 fomula를 통해 하나의 직선으로 2개의 영역을 나누는 것을 확인할 수 있다.


즉 퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있는 한계가 있다.




지금까지 퍼셉트론에 대한 내용을 읽으면서, 나름대로 이해한 과정과
책과는 다른 약간의 예시도 넣으며 정리해 보았다

다음 게시물은 이에 이어 XOR 게이트를 퍼셉트론으로 구현하는 것을 할 예정이다. 🐂




사진출처
출처1
출처2
출처3
출처4
출처5
출처6

profile
데이터 엔지니어 ing

0개의 댓글