본문 바로가기

Programming/[Data Science]

[ML] 퍼셉트론(Perceptron)

반응형

파이토치를 공부하며 기초 이론 부분을 다시 보고 있는데, 많은 도움이 되는 것 같다.

02. 퍼셉트론(Perceptron)

1. 퍼셉트론(Perceptron)

퍼셉트론(Perceptron)은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망으로 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘이다.

뉴런

perceptron

  • x는 입력값을 의미하며, W는 가중치, y는 출력값을 의미
  • 실제 신경 세포 뉴런에서의 신호를 전달하는 축삭돌기의 역할을 퍼셉트론에선 가중치가 대신함
  • 각각의 인공 뉴런에서 보내진 입력값 x는 각각의 가중치 W와 함께 종작치 인공 뉴런에 전달됨
  • 입력값이 가중치와 곱해져서 인공 뉴런에 보내지고, 각 곱의 전체 합이 임계치(threshold)를 넘으면 종착지에 있는 인공 뉴런은 출력 신호로서 1을 출력, 그렇지 않을 경우에는 0을 출력
    img
  • 이러한 함수를 계단 함수 (Step function)라고 하며, 아래는 그래프는 계단 함수의 하나의 예를 보여줌
    step function

이 때 계단 함수에 사용된 이 임계치 값을 수식으로 표현할 때 보통 세타(θ)로 표현합니다.

threshold

이렇게 뉴런에서 출력값을 변경시키는 함수를 활성화 함수(Activation Function)라고 함, 시그모이드 함수나 소프트맥스 함수 또한 활성화 함수 중 하나

2. 단층 퍼셉트론(Single-Layer Perceptron)

percep

단층 퍼셉트론을 이용하면 AND,NAND,OR 게이트를 쉽게 구현할 수 있음
게이트 연산에 쓰이는 것은 두개의 입력값과 하나의 출력값.
예를 들어 AND 게이트의 경우에 두 개의 입력 값이 모두 1인 경우에만 출력값이 1이 나오는 구조

percep

다음은 위 표의 AND게이트를 위한 매개변수 값을 가진 단층 퍼셉트론의 식을 파이썬으로 구현한 것이다.

def AND_gate(x1, x2):
    w1=0.5
    w2=0.5
    b=-0.7
    result = x1*w1 + x2*w2 + b
    if result <= 0:
        return 0
    else:
        return 1
AND_gate(0, 0), AND_gate(0, 1), AND_gate(1, 0), AND_gate(1, 1)
(0, 0, 0, 1)

table

다음은 두 개의 입력값이 1인 경우에만 출력값이 0, 나머지 입력값에 대해서는 1이 나오는 NAND 게이트를 구현한 것이다.

def NAND_gate(x1, x2):
    w1=-0.5
    w2=-0.5
    b=0.7
    result = x1*w1 + x2*w2 + b
    if result <= 0:
        return 0
    else:
        return 1
NAND_gate(0, 0), NAND_gate(0, 1), NAND_gate(1, 0), NAND_gate(1, 1)
(1, 1, 1, 0)

OR

다음은 각 가중치와 편향을 [0.6, 0.6, -0.5]를 선택하면 OR 게이트를 충족

def OR_gate(x1, x2):
    w1=0.6
    w2=0.6
    b=-0.5
    result = x1*w1 + x2*w2 + b
    if result <= 0:
        return 0
    else:
        return 1
OR_gate(0, 0), OR_gate(0, 1), OR_gate(1, 0), OR_gate(1, 1)
(0, 1, 1, 1)

이와 같이 단층 퍼셉트론은 AND, NAND, OR 게이트를 구현할 수 있지만 XOR 게이트는 구현이 불가능하다.
단층 퍼셉트론은 직선 하나로 두 영역을 나눌 수 있는 문제에 대해서만 구현이 가능하기 때문 (w1x1 + w2x2 + b 는 좌표평면에서 1차 함수)

and

or

위 두 그림과 같이 AND, OR, NAND 게이트의 경우 하나의 직선으로 구간이 나눠지는 것을 확인할 수 있음

XOR

XOR

하지만 XOR 게이트의 경우 한개의 직선으로 검은 점 구간과 하얀 점 구간을 나눌 수 없고 곡선을 사용하여 나눌 수 있음

3. 다층 퍼셉트론(MultiLayer Perceptron, MLP)

XOR 게이트는 기존의 AND, NAND, OR 게이트를 조합하면 만들 수 있다. 퍼셉트론 관점에서 말하면, 층을 더 쌓으면 만들 수 있다. 다층 퍼셉트론과 단층 퍼셉트론의 차이는 단층 퍼셉트론은 입력층과 출력층만 존재하지만, 다층 퍼셉트론은 중간에 층을 더 추가하였다는 점 이렇게 입력층과 출력층 사이에 존재하는 층을 은닉층(hidden layer)라고 함 다층 퍼셉트론은 줄여서 MLP라고도 부름

mlp

  • AND, NAND, OR 게이트를 조합해 XOR 게이트를 구현한 다층 퍼셉트론의 예
  • XOR 게이트의 경우 은닉층 1개만으로 구현할 수 있지만, 다층 퍼셉트론은 본래 은닉층이 1개 이상인 퍼셉트론을 의미
  • XOR 보다 더욱 복잡한 문제를 해결하기 위해 다층 퍼셉트론은 중간에 수많은 은닉층을 추가할 수 있음

DNN

  • 위와 같이 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN) 이라고 함
  • 기계가 가중치를 스스로 찾아내도록 자동화시켜야 하는데, 이것이 머신러닝에서 말하는 학습(training) 단계에 해당
  • 손실 함수(Loss function)옵티마이저(Optimizer)를 사용
  • 학습을 시키는 인공 신경망이 심층 신경망일 경우 이를 심층 신경망을 학습시킨다 하여, 딥 러닝(Deep Learning) 이라고 함

출처 : Pytorch로 시작하는 딥 러닝 입문

Pytorch

반응형