📙 Fundamentals/ML&DL

퍼셉트론(Perceptron)

Lento_ 2025. 4. 10. 14:16

퍼셉트론

: 다수의 신호를 입력 받아 하나의 신호로 출력

: 복수 입력 신호 각각에 고유 가중치를 부여

 

입력이 2개인 퍼셉트론

원 모양 : 뉴런 or 노드

w : 가중치

가중치(w)란?
: 각 신호가 결과에 주는 영향력을 조절하는 매개변수
: 가중치가 클수록 해당 신호가 그만큼 더 중요함을 의미한다.

편향(b)?
: 뉴런(노드)이 얼마나 쉽게 활성화(결과로 1을 출력)하느냐를 조절하는 매개변수

 

논리 회로(진리표)

퍼셉트론 구현 (가중치,편향 포함)

1. 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

2. NAND 

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
    
    if tmp <= 0:
        return 0
    else:
        return 1

 

3. OR

def OR(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5, 0.5])
    b = -0.2 

    tmp = np.sum(w*x)+b
    
    if tmp <= 0:
        return 0
    else:
        return 1

퍼셉트론의 한계

: 퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있다. 즉, 곡선을 표현할 수 없다는 것이다.

: 그러므로 XOR 게이트 같은 경우에는 위에서 본 퍼셉트론으로는 구현하기 어렵다.

  하지만 다층 퍼셉트론(multi-layer-perceptron)을 활용하면 구현이 가능하다.

 

XOR의 퍼셉트론(다층 퍼셉트론)

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y