Deep Learning/밑바닥부터 시작하는 딥러닝

DL - #2, 퍼셉트론

KimTory 2022. 2. 4. 01:56

▶ 퍼셉트론

  • 다수의 신호를 입력으로 받아서 하나의 신호를 출력함
  • 뉴런에서 보낸 신호의 총합이 정해진 한계(임계값)를 넘어설 때만 1을 출력함(이 때 뉴런이 활성화된다고 함)
  • AND 게이트
    • 입력이 둘이고 출력은 하나인 논리 회로임
    • 두 개의 입력이 모두 1일 때만 1을 출력
  • NAND 게이트
    • Not AND를 의미함
    • 즉, AND 게이트의 출력을 뒤집은 것
    • 마찬가지로 입력이 둘이고 출력은 하나인 논리 회로임
    • 두 개의 입력이 모두 1인 경우에만 0을 출력하고, 나머지 경우는 모두 0을 출력
  • OR 게이트
    • 마찬가지로 입력이 둘이고 출력은 하나인 논리 회로임
    • 입력 신호 중, 하나 이상이 1이면 출력이 1이 됨
import numpy as np

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

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5]) # AND와는 가중치(w와 b)만 다르다.
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1
    
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5]) # AND와는 가중치(w와 b)만 다르다.
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1


여기서 중요한 점은 퍼셉트론의 구조는 AND, NAND, OR 게이트 모두에서 똑같다는 것이다.

 

위 세 가지 게이트에서 다른 것은 매개변수(가중치와 임계값) 뿐이다. (여기서 임계값을 "편향"이라고 볼 수 있다)

 

즉, 퍼셉트론에서는 "가중치" "편향"을 매개변수로 설정하고, 이 값들만 적절히 조정해서 AND, NAND, OR로 변하는 것이다.

 

  • XOR 게이트
    • 배타적(즉, 자기 외에는 거부) 논리합이라는 논리 회로임
    • 두 개의 입력 중, 한 쪽이 1일 때만 1을 출력
    • XOR 게이트는 직선 하나로 나누기가 불가능함 (즉, 단층 퍼셉트론으로는 표현이 불가능)

      import numpy as np
      import matplotlib.pyplot as plt
      import matplotlib
      
      x1 = np.arange(-1, 3, 0.1)
      x2 = -x1 + 0.5
      
      plt.axvline(x=0, color = 'b')  # draw x =0 axes
      plt.axhline(y=0, color = 'b')   # draw y =0 axes
      
      # 그래프 그리기
      plt.plot(x1, x2, label="or")
      plt.xlabel("X1") # x축 이름
      plt.ylabel("X2") # y축 이름
      plt.legend()
      
      plt.fill_between(x1, x2, -3, color='grey', alpha='0.5')
      
      plt.scatter([0],[0],marker='o',color='r')
      plt.scatter([1,0,1],[0,1,1],marker='^',color='r')
      plt.show()​

정리하면 단층 퍼셉트론은 직선형 영역만 표현할 수 있지만, 다층 퍼셉트론을 사용하면 비선형 영역도 표현할 수 있다.

'Deep Learning > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글

DL - #5-1, 오차역전파법  (0) 2022.02.04
DL - #4 -2, 신경망 학습  (0) 2022.02.04
DL - #4 -1, 신경망 학습  (0) 2022.02.04
DL - #3, 신경망  (0) 2022.02.04
DL - 퍼셉트론 정리  (0) 2022.01.27