본문 바로가기
프로그래밍/밑바닥부터 시작하는 딥러닝

CHAPTER2 퍼셉트론

by hyunleeM 2017. 10. 9.

1. 퍼셉트론은이란?

- 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력, 여기서 말하는 신호란 전류나 강물처럼 흐름이 있는것

- 실제 전류와 달리 퍼셉트론 신호는 흐른다/안흐른다(1/0) 의 두 가지 값을 가짐.


- 퍼셉트론의 수식화( 가준치와 편향 포함)

b : 편향(얼마나 쉽게 활성화가 되느냐) , w1,w2 :가중치(입력신호가 결과에주는 영향력, 중요도), x1,x2 : 입력

 y = 0 (b + w1x1 + w2x2 <= 0)

 y = 1 (b + w1x2 + w2x2 > 0)


2. 퍼셉트론 파이썬코드로 구현

- AND, NAND, OR은 하나의 퍼셉트론으로 가능하다

 - XOR은  NAND 와  OR의 출력을 AND의 입력으로 받아 처리하여함.(다층 퍼셉트론)

  

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(x * w) + b

    if tmp <= 0:

        return 0

    else:

        return 1


def NAND(x1, x2):

    x = np.array([x1, x2])

    w = np.array([-0.5, -0.5])

    b = 0.7

    tmp = np.sum(x * w) + 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])

    b = -0.2

    tmp = np.sum(x * w) + b

    if tmp <= 0:

        return 0

    else:

        return 1


def XOR(x1, x2):

    s1 = NAND(x1, x2)

    s2 = OR(x1, x2)

    y = AND(s1, s2)

    return y

    

print(XOR(0, 0))   

print(XOR(1, 0))

print(XOR(0, 1))

print(XOR(1, 1))


 

참고 

AND게이트 진리표

 x1

x2 

 0

 1

 0

 1

 1

 1


NAND게이트 진리표(AND의 반대)

x1 

x2 


OR게이트 진리표

 x1

x2 


XOR게이트의 진리표

x1 

x2 

s1(NAND) 

 s2(OR)

 y(s1 AND s2)

 0



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

CHAPTER1 파이썬  (0) 2017.10.09

댓글