Hyeon Lee 2022. 12. 18. 11:43
728x90

※ 퍼셉트론이란?

- 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 것. 흐름을 만들고 정보를 앞으로 전달하는 역할

 

x1과 x2 : input 신호

y : output 신호

w1과 w2 : 가중치(weight) - 영향력 조절 요소, 클수록 강한 신호

원 : 노드(뉴런)

theta : 임계값

 

input 신호가 뉴런에 보내질 때 각각 고유한 가중치를 곱한다.

신호의 총합이 정해진 한계(임계값)를 넘어설 때만 1을 출력한다.

 

y = 0 (w1*x1 + w2*x2 ≤ theta)

      1 (w1*x1 + w2*x2 > theta)

 

#퍼셉트론 모형

import numpy as np

x = np.array([0, 1])
w = np.array([0.5, 0.5])
b = -0.7

y = np.sum(w*x) + b
print(y)

 

※ AND, NAND, OR 게이트

- 일반적인 AND연산, OR연산, XOR연산과 방식은 동일하다. 매개변수 값의 설정을 통해서 게이트를 구현한다.

- theta => -b로 치환

y = 0 (w1*x1 + w2*x2 + b ≤ 0)

      1 (w1*x1 + w2*x2 + b > 0)

 

- b : 편향(bias) -> 뉴런이 얼마나 쉽게 활성화 되느냐를 조정하는 매개변수

ex) b가 0.1이면 뉴런 활성화가 쉬운 것. b가 20.0이면 0.1에 비해 뉴런 활성화가 어려운 것.

- w : 가중치(weight) -> 각 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수

 

# AND 게이트 구현

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    temp = np.sum(w*x) + b
    if temp <= 0:
        return 0
    else:
        return 1
# NAND 게이트 구현

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    temp = np.sum(w*x) + b
    if temp <= 0:
        return 0
    else:
        return 1
# OR 게이트 구현

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

 

AND, NAND, OR 게이트의 출력 시 위와 같은 결과를 얻을 수 있었다. 편향(b), 가중치(w), input(x)의 매개변수 값을 통해서 각 연산 게이트를 만들고 퍼셉트론을 구현해 볼 수 있었다.

728x90