퍼셉트론(perceptron)의 개념과 논리게이트 구현

1. 퍼셉트론이란?


퍼셉트론(Perceptron) : 다수의 신호를 받아 하나의 신호(0 또는 1)로 출력하는것을 말한다.



위의 원은 뉴런(neuron) 혹은 노드(node)라 하고 $w_1, w_2$를 가중치라 한다.
입력 신호가 뉴런에 보내지면 가중치를 곱하여 이 총합이 특정한 임계값(threshold value)보다 클때만 1을 출력하게 된다.

이를 수식으로 나타내면 다음과 같다.

$$y = \begin{cases} 0 & \left(x_1w_1 + x_2w_2 \le \theta\right) \\ 1 & \left(x_1w_1 + x_2w_2 > \theta\right) \end{cases}$$

위 식을 보면 가중치가 클수록 그 임력 신호의 영향력이 커지므로 결과값에 중요한 영향일수록 가중치가 커짐을 알 수 있다.


2. 퍼셉트론 구현(AND 게이트)




위는 AND 게이트의 진리표이다.

이를 퍼셉트론으로 표현하기 위해 $w_1, w_2, \theta$ 의 값을 정해보자.

임의로 (0.5, 0.5, 0.8)일때 만족함을 알 수 있다.

이를 python을 통해 구현하면 다음과 같다.

def AND(x1x2):
    w1, w2, theta = 0.50.50.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1

이를 실행시켜 확인해보면 다음과 같다.

>>> AND(0, 0)
0
>>> AND(1, 0)
0
>>> AND(0, 1)
0
>>> AND(1, 1)
1

이때 임계값 $\theta$를 $-b$로 치환하여 생각할 수도 있다.

식을 수정하면 다음과 같다.

$$y = \begin{cases} 0 & \left( x_1w_1 + x_2w_2 + b \le 0 \right) \\ 1 & \left( x_1w_1 + x_2w_2 + b > 0 \right) \end{cases}$$

여기서 $b$를 편향(bias)라 한다.

수식을 해석하자면 입력 신호와 가중치의 곱의 총합에 편향을 더한 값이 0보다 클 경우에만 1을 출력한다.

이 편향을 입력으로 생각하여 처리 과정을 그림으로 나타내면 다음과 같다.




3. 선형 영역과 비선형 영역


위 그림은 AND 게이트의 선형 영역을 직관적으로 표현한 그래프이다.
빨간색 점은 0을 출력하고 초록색 점은 1을 출력한다.

$w_1, w_2, b = 0.5, 0.5, -0.7$로 설정하였다.

위와 같이 선형으로 영역이 구분된 경우 선형영역, 곡선으로 구분된 경우 비선형 영역이라 한다.

비선형의 예시로는 XOR 게이트가 있다.


위의 경우에는 선형으로 구분이 불가능하므로 다층 퍼셉트론 개념을 이용하여 곡선으로 구분하여야 한다.

Comments