본문 바로가기
딥러닝

03. 퍼셉트론의 한계와 다층 퍼셉트론

by Go! Jake 2021. 4. 29.

02. 단순한 논리회로와 퍼셉트론 구현하기

  2.4 퍼셉트론의 한계

  2.4.1 XOR 게이트

XOR 게이트는 배타적 논리합이라는 논리 회로이다.

[그림 2-5] XOR 게이트의 진리표

 

[그림 2-6] OR 게이트

먼저 퍼셉트론이 시각화된 OR 게이트를 살펴 보자. 원 (0,0)과 나머지 삼각형 점에 대해 Linear separation이 가능하다.

직선에 따라 0을 출력하는 영역과 1을 출력하는 영역이 나뉘게 된다. 

 

XOR 게이트

XOR 게이트는 원과 삼각형을 직선 하나로 나뉠 수가 없다.

 

  2.4.2 선형과 비선형

[그림 2-8] 곡선으로 나눌 수 있다.

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

[그림 2-8]과 같은 곡선의 영역을 비선형 영역, 직선의 영역을 선형 영역이라고 한다.

선형, 비선형은 기계학습 분야에서 자주 쓰이며 [그림 2-6]과 [그림 2-8]과 같은 이미지를 떠올리면 된다.

 

  2.5 다층 퍼셉트론

  2.5.1 기존 게이트 조합하기

XOR 게이트를 만드는 방법은 여러 가지가 있으며, 위에서는 AND, NAND, OR 게이트를 조합하였다.

'다층 퍼셉트론'을 사용하여 XOR를 표현할 수 있다.

[그림 2-11] 조합된 XOR 게이트

 

[그림 2-12] XOR 게이트의 진리표

 

  2.5.2 XOR 게이트 구현하기

import numpy as np
def AND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([0.5,0.5])
    b=-0.7
    tmp=np.sum(w*x)+b
    if tmp>0:
        return 1
    else:
        return 0

def NAND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([-0.5,-0.5])
    b=0.7
    tmp=np.sum(w*x)+b
    if tmp>0:
        return 1
    else:
        return 0

def OR(x1,x2):
    x=np.array([x1,x2])
    w=np.array([0.7,0.7])
    b=-0.5
    tmp=np.sum(w*x)+b
    if tmp>0:
        return 1
    else:
        return 0

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

 

input and output

print(XOR(0,0))
print(XOR(0,1))
print(XOR(1,0))
print(XOR(1,1))


0 # 0 출력
1 # 1 출력
1 # 1 출력
0 # 0 출력

 

[그림 2-13] XOR의 퍼셉트론

AND, OR 퍼셉트론은 형태가 단층인데 반해, XOR은 2층 퍼셉트론이 된다. 이처럼 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라고 한다. 0층에서 1층으로 신호가 전달되고, 이어서 1층에서 2층으로 신호가 전달된다.

 

 

  2.7 정리

  • 퍼셉트론은 입출력을 갖춘 알고리즘이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.
  • 퍼셉트론에서는 '가중치'와 '편향'을 매개변수로 사용한다.
  • 퍼셉트론으로 AND, OR 게이트 등의 논리 회로를 표현할 수 있다.
  • XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없다.
  • 2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.
  • 단층 퍼셉트론은 직선형 영역만 표현할 수 있고, 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.
  • 다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다. (블로그엔 따로 정리하지 않았습니다.)

 

- 다음 글: 04. 딥러닝 신경망(Neural Network) - 활성화 함수, 계단 함수, 시그모이드 함수, ReLU의 모든 것

 

 

댓글