본문 바로가기

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

2장 : 퍼셉트론

2.1 퍼셉트론이란?

  • 다수의 신호를 입력으로 받아 하나의 신호를 출력
  • 신호 : 흐름을 만들고 정보를 앞으로 전달
  • 0 : 신호가 흐르지 않는다 /1: 신호가 흐른다
  • 노드(뉴런), 가중치, 임계값으로 구성
  • 임계값 : 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력 

2.2 단순한 논리 회로

X1 X2 : 입력 신호

y : 출력 신호

2.2.1 AND 게이트

두 입력이 모두 1일 때만 1 출력, 그 외에는 0 출력

 

2.2.2 NAND 게이트와 OR 게이트

NAND : 두 입력이 모두 1일 때만 0 출력, 그 외에는 1 출력

OR : 입력 신호 중 하나 이상이 1이면 출력 1

 


2.3 퍼셉트론 구현하기

2.3.2 가중치와 편향 도입

b (편향) : 뉴런이 얼마나 쉽게 활성화되느냐를 제어 (-임계값)

ex) b가 -20이면 각 입력 신호에 가중치를 곱한 값들의 합이 20을 넘지 않으면 뉴런 활성화x

import numpy as np

#AND 게이트 구현
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 0
  else:
    return 1
#NAND 게이트 구현
def NAND(x1, x2):
  x = np.array([x1, x2]) 
  w = np.array([-0.5, -0.5])  #AND와는 가중치만 다름
  b = 0.7
  tmp = np.sum(w*x) +b
  if tmp <=0:
    return 0
  else:
    return 1
#OR 게이트 구현
def OR(x1, x2):
  x = np.array([x1,x2])  
  w = np.array([0.5, 0.5])  #AND와는 가중치만 다름
  b = -0.2
  tmp = np.sum(w*x)+b
  if tmp <= 0 :
    return 0
  else:
    return 1

2.4 퍼셉트론의 한계 

2.3.1 XOR 게이트

입력값 중 한쪽이 1일 때만 1 출력 

-> 선형(단층 퍼셉트론)으로 불가능 : 비선형 

 


2.5 다층 퍼셉트론 

2.5.1 기존 게이트 조합

NAND 게이트와 OR 게이트 -> AND 게이트의 조합으로 XOR 구현 가능

10       10

01       01

00       11

 

 

2.5.2 XOR 게이트 구현

def XOR (x1, x2):
  s1 = NAND(x1, x2)
  s2 = OR (x1, x2)
  y = AND(s1, s2)
  return y
  • 다층 퍼셉트론 
    • 0층의 듀 뉴런이 입력 신호를 받아 1층의 뉴런(NAND, OR)으로 신호 보냄
    • 1층의 뉴런이 2층의 뉴런(AND)으로 신호를 보내고, 2층의 뉴런은 y 출력

2.6 NAND에서 컴퓨터까지

  • 단층 퍼셉트론은 직선형 영역만 표현 가능, 다층 퍼셉트론은 비선형 영역도 표현 가능
  • 다층 퍼셉트론은 이론상 컴퓨터 표현 가능

책 참고 : 밑바닥부터 시작하는 딥러닝 (한빛미디어)

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

6장 : 학습 관련 기술들  (0) 2023.09.15
5장 : 오차역전파법  (0) 2023.09.13
4장 : 신경망 학습  (0) 2023.09.06
3장 : 신경망  (0) 2023.09.05
1장 : 헬로 파이썬  (0) 2023.09.02