딥러닝

퍼셉트론 선형분류기

temporubato108 2024. 11. 19. 19:22

퍼셉트론 선형분류기

- 사람의 신경계가 '뉴런-신경망-지능'을 이루듯이, 딥러닝에서도 '퍼셉트론-인공신경망-인공지능'을 이룬다.

 

 

'AND gate, OR gate, NAND gate, NOR gate'는 선형 분류기로 구현 가능하다.

이를 선형 분류를 위하여 퍼셉트론 하나를 사용했다고 하여 '단층 퍼셉트론'이라고 한다.

 

[1] AND Gate: C = activation(1*A + 1*B - 1.5)

[2] OR gate : C = activation(1*A + 1*B - 0.4)

[3] NAND gate : C = activation(-1*A - 1*B + 1.3)

[4] NOR gate : C = activation(-1*A - 1*B + 0.8)

 

이를 통해 0,1 데이터를 계산하던 논리 회로에서 확장하여 선형 분류기로서 데이터를 분류할 수 있게 되었다.

 

 

def AND_gate(x1, x2):
    x = np.array([x1, x2])
    weight = np.array([0.5,0.5])
    bias = -0.7
    y = np.matmul(x, weight) + bias
    return Step_Function(y)
    
def OR_gate(x1, x2):
    x = np.array([x1, x2])
    weight = np.array([0.5,0.5])
    bias = -0.3
    y = np.matmul(x, weight) + bias
    return Step_Function(y)
    
def Step_Function(y):
    return 1 if y>=0 else 0

위는 ANDgate와 ORgate를 구현한 파이썬 코드이다.

위의 함수에 np.array(([0,0], [0,1], [1,0], [1,1]))를 사용하여 input 데이터를 차례로 입력해주면 값이 출력된다.

AND, OR 입출력표

 

 

마찬가지로 아래는 NANDgate와 NORgate를 구현한 파이썬 코드이다.

def NAND_gate(x1, x2):
    x = np.array([x1,x2])
    weight = np.array([-0.5,-0.5])
    bias = 0.7
    y = np.matmul(x, weight) + bias
    return Step_Function(y)
    
def NOR_gate(x1, x2):
    x = np.array([x1,x2])
    weight = np.array([-0.5, -0.5])
    bias = 0.3
    y = np.matmul(x, weight) + bias
    return Step_Function(y) 
    
def Step_Function(y):
    return 1 if y>=0 else 0

NAND, NOR 입출력표

 

'딥러닝' 카테고리의 다른 글

비선형 데이터 분류(XORgate)  (0) 2024.11.20
인공신경망과 퍼셉트론  (0) 2024.11.18