Processing math: 100%
본문 바로가기
Machine Learning/Deep Learning

Perceptron

by devson 2024. 3. 3.

perceptron은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다.

 

아래는 2개의 입력을 받는 perceptron이다.

  • x : 입력
  • w : 가중치(weight)로 말 그대로 해당 입력이 얼마나 중요한지를 나타낸 값이다.
    • 이 값이 크면 출력에 영향을 더 크게 미친다.
  • b : 편향(bias)으로 해당 뉴런이 얼마나 쉽게 활성화될 수 있느냐를 조절하는 값이다.
    • 이 값이 크면 입력이 작더라도 활성화될 수 있다.
  • y : 출력

출력의 경우 노드에 전달된 값의 합이 0을 넘을 때 1을 출력하며, 0을 넘지 않으면 0을 출력한다.

 

그러면 이 임계값에 대해서는 아래와 같이 나타낼 수 있다.

 

y={0if w1x1+w2x2+b01if w1x1+w2x2+b>0

 

Perceptron의 한계와 MLP(multi-layer perceptron)

논리 회로를 통해 perceptron의 한계에 대해 알아보고 다층 perceptron으로 이 한계를 극복하는 것에 대해 알아보자.

 

Logic gate

perceptron을 사용하여 논리 회로를 만들 수도 있다.

AND, NAND, OR gate를 perceptron으로 만들어보자.

 

AND gate

𝓧₁ 𝓧₂ 𝑦
0 0 0
0 1 0
1 0 0
1 1 1

 

def AND(x1: int, x2: int) -> int:
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.75
sum = np.sum(w*x) + b
return 1 if 0 < sum else 0

 

NAND gate

𝓧₁ 𝓧₂ 𝑦
0 0 1
0 1 1
1 0 1
1 1 0

 

def NAND(x1: int, x2: int) -> int:
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.75
sum = np.sum(w*x) + b
return 1 if 0 < sum else 0

 

OR gate

𝓧₁ 𝓧₂ 𝑦
0 0 0
0 1 1
1 0 1
1 1 1

 

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

 

XOR gate

다른 논리회로는 perceptron으로 만들 수 있는데, XOR gate의 경우 perceptron으로 만들 수가 없다.

𝓧₁ 𝓧₂ 𝑦
0 0 0
0 1 1
1 0 1
1 1 0

 

AND, NAND, OR gate 같은 경우 아래와 같이 x1,x2 에 대해 직선(한 층의 perceptron)을 통해 출력을 구분할 수 있다.

 

하지만 XOR gate의 경우 직선을 통해 출력을 구분할 수가 없다.

즉, 한 층의 perceptron으로는 XOR gate를 구현할 수 없다.

-> 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없다

 

하지만 직선이 아니라면 출력을 구분할 수가 있게 된다.

 

MLP로 XOR gate 구현

기존의 논리 회로를 조합하여 XOR gate를 만들 수 있다.

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

 

이를 perceptron으로 표현하면 아래와 같고, 이렇게 여러 층으로 perceptron을 구성한 것을 MLP(multi-layer perceptron)이라고 한다.

 

이처럼 단층 perceptron으로는 표현하지 못했던 것을 층을 늘려서 표현할 수 있게된다.

댓글