zenn.skin 무료버전 배포중!
자세히보기

DataScience

[ML] 퍼셉트론 (Perceptron)

koosco! 2022. 10. 29. 12:04

1. 퍼셉트론(Perceptron)

퍼셉트론은 신경망의 기원이 되는 알고리즘입니다. 퍼셉트론의 구조를 배워야 신경망과 딥러닝의 아이디어를 이해할 수 있습니다.

퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력하는 역할을 합니다.

이 때 퍼셉트론은 0 또는 1의 출력을 가질 수 있습니다.

2개의 입력을 갖는 perceptron

위 그림에서 x1, x2, y는 뉴런(노드)라고 부르며, x1과 x2는 입력 신호, y는 출력 신호가 됩니다.

입력 신호가 다음 뉴런에 보내질 때는 일정한 가중치가 곱해집니다. 출력 신호는 입력 신호에 들어온 신호의 합이 일정한 값(역치, 임계값)을 넘는 경우에만 1을 출력합니다.

theta는 임계값을 나타낸다

2. 퍼셉트론을 이용한 논리 회로의 표현

이 퍼셉트론을 사용하면 AND, OR, NAND와 같은 논리 게이트를 표현할 수 있습니다.

출력 y가 1일 때는 삼각형, 0일 때는 o로 표현된다고 할 때 각각을 그래프에 나타내고 퍼셉트론을 이용한 선형 결정경계(두 레이블을 구분하는 경계선)를 나타낼 수 있습니다.

1) AND 게이트

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

x1과 x2를 축으로 하는 그래프를 표현하면 아래와 같습니다.

퍼셉트론은 x1, x2에 대한 그래프로 나타낼 수 있습니다.

위 그래프에서 0인 출력과 1인 출력을 퍼셉트론이 나타내는 그래프를 이용해 분리해낼 수 있습니다.

둘을 분리하는 그래프는 하나가 아니라 여러 개 있을 수 있습니다.

(w1, w2, theta) = (0.5, 0.5, 0.7)인 경우를 예로 확인해보겠습니다.

2) NAND

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

3) OR

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

 

3. 퍼셉트론의 구현

퍼셉트론은 입력값들의 가중치 합으로 표현할 수 있고, 입력 신호들의 합이 임계값(theta)를 넘을 때 출력값을 출력합니다.

def AND(x1, x2):
  w1, w2, theta = 0.5, 0.5, 0.7
  tmp = w1 * x1 + w2 * x2
  return 1 if tmp > theta else 0
  
print(0, 0) # 0
print(1, 0) # 0
print(0, 1) # 0
print(1, 1) # 1

임계값을 0.7로 설정하였는데 식을 한 쪽으로 정리하여 임계값을 0으로 만들고, 기존에 있던 임계값을 편향(bias)으로 나타낼 수 있습니다.

편향을 고려한 퍼셉트론의 식을 다시 구현하면 아래와 같습니다.

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
  
  return 1 if tmp > 0 else 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
  
  return 1 if tmp > 0 else 0
  
def OR(x1, x2):
  x = np.array([x1, x2])
  w = np.array([0.5, 0.5])
  b = -0.3
  tmp = np.sum(w * x) + b
  
  return 1 if tmp > 0 else 0

4. 퍼셉트론의 한계

하지만 퍼셉트론은 선형 결정경계를 갖기 때문에 출력값의 결정경계를 표현하는 데 한계가 있습니다.

퍼셉트론의 한계를 나타내는 가장 대표적인 경우는 XOR Gate입니다.

1과 0이 위와 같이 나타날 때 하나의 직선으로는 둘을 완전히 구분할 수 없습니다.

퍼셉트론의 장점은 하나 이상의 퍼셉트론을 이용해 결정경계를 나타낼 수 있다는 점입니다.

두 개 이상의 퍼셉트론을 사용한 알고리즘을 다층 퍼셉트론이라 합니다.

다음에는 다층 퍼셉트론에 대해 정리해보겠습니다.

'DataScience'의 다른글

  • 현재글 [ML] 퍼셉트론 (Perceptron)

관련글