[딥러닝]/[밑바닥부터 시작하는 딥러닝]

밑바닥부터 시작하는 딥러닝 1 - 2 퍼셉트론

딥러닝 도전기 2021. 6. 24. 01:33
퍼셉트론은 딥러닝의 기원이 되는 알고리즘입니다. 따라서 퍼셉트론을 공부하는 것은 신경망과 딥러닝으로 나아가는 데 중요한 아이디어를 배우는 일입니다.

입력이 2개인 퍼셉트론

퍼셉트론을 수식으로 나타내면 다음과 같습니다.

$y= \begin{cases} 0, & (w_{1}x_{1}+w_{2}x_{2} \le \theta) \\ 1, & (w_{1}x_{1}+w_{2}x_{2} > \theta)\end{cases}$

여기서 $x_1, x_2$는 입력 신호, $y$는 출력 신호, $w_1, w_2$는 가중치를 나타냅니다.

수식을 보면 알 수 있듯, 가중치는 해당 노드의 중요도를 나타냅니다.

 

위 식에 편향을 추가해보겠습니다.

$y= \begin{cases} 0, & (w_{1}x_{1}+w_{2}x_{2}+b \le 0) \\ 1, & (w_{1}x_{1}+w_{2}x_{2} +b> 0)\end{cases}$

두 식을 관찰해보면 $\theta = -b$ 임을 알 수 있습니다.

편향은 노드(뉴런)이 얼마나 쉽게 활성화되느냐를 조정하는 변수입니다.

 


퍼셉트론을 이용한 AND게이트 구현

import numpy as np

def AND(x1x2):

    x = np.array([x1, x2])

    w = np.array([0.50.5])

    b = -0.7

    tmp = np.sum(w*x) + b

    if tmp <= 0:

        return 0

    else:

        return 1

print(AND(00))                            #0

print(AND(01))                            #0

print(AND(10))                            #0

print(AND(11))                            #1

 

 


구현한 AND게이트에서 가중치값만 변경하면 NAND 게이트와 OR게이트를 구현할 수 있습니다. 하지만 단일 퍼셉트론으로는 XOR게이트를 구현하는 데에는 문제가 있습니다.

XOR게이트를 구현하기 위해서 다층 퍼셉트론이 사용됩니다.

 

XOR게이트는 다음 그림과 같이 NAND, OR, AND게이트의 조합으로 만들 수 있습니다. 

 XOR게이트

위의 회로를 코드로 나타내면 다음과 같습니다.

 

def XOR(x1x2):

    y1 = NAND(x1, x2) 

    y2 = OR(x1, x2) 

    return AND(y1, y2)

 

결론
퍼셉트론으로 AND, OR등의 논리 회로를 나타낼 수 있다.
단일 퍼셉트론으로는 XOR게이트를 나타낼 수 없지만 AND, NAND, OR게이트를 이용한 다층 퍼셉트론을 이용해서 XOR게이트를 나타낼 수 있다. → 다층 퍼셉트론은 비선형 영역을 나타낼 수 있다.

 

반응형