Deep Learning from Scratch1 - Ch2 퍼셉트론 논리회로 정리

1 minute read

퍼셉트론(Perceptron)

  • 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 알고리즘
  • 복수의 입력신호 각각에 고유한 가중치를 부여하여 출력을 결정한다.

입력이 2개인 퍼셉트론

수식으로 표현

(뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때 1을 출력, 그 임계값을 θ(세타)로 표현)

논리회로 표현

AND 게이트

진리표

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

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
    elif tmp > 0:
        return 1

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
    elif tmp > 0:
        return 1
  • AND, NAND, OR 게이트 모두 퍼셉트론의 구조는 동일하고, 가중치에 따라 출력이 달라지는 형태이다.
  • 위 세가지 게이트의 공통점은 xy좌표계로 표현할 때 출력이 1인 영역과 0인 영역이 직선 하나로 구분된다는 점이다.
  • 하지만, XOR게이트의 경우 진리표를 xy좌표계로 표현할 때 하나의 직선으로 구분할 수 없다.
  • 이때, 다층퍼셉트론의 개념이 등장한다.

다층 퍼셉트론

  • 퍼셉트론을 층을 쌓아 만든 구조

XOR 게이트

진리표

다층 퍼셉트론 구현을 위해 변형된 진리표

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y
  • 단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘림으로써 구현할 수 있게 되었다.

[참고자료]

  • 밑바닥부터 시작하는 딥러닝

Leave a comment