ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. 퍼셉트론(Perceptron)
    AI/딥러닝 2019. 7. 12. 02:56

    퍼셉트론, 최초의 인공신경망입니다. 유서 깊네요.

    선형 분류할 때 사용됩니다.

    계속 사용했던 성적 데이터입니다. 이런 식으로 선형 분류해주는 게 Perceptron입니다. 방식은 이전에 봐온 것과 매우 유사합니다.

    w1*x1 + w2*x2 + w3*x3+....+wn*xn을 계산합니다. 이때 나온 결괏값이 특정 threshold를 넘으면 1, 아니면 0으로 체크합니다.

    X = (x1, x2, x3,... xn) (Input vector), W = (w1, w2, w3,..., wn) (Weight vector), t = threshold(임계점)라고 하겠습니다.

    우리가 원하는 것은 X·W > t 이면 1, 아니면 0으로 만드는 것입니다. 편의를 위해 t를 왼쪽으로 넘기면 다음과 같은 수식을 얻을 수 있습니다.

    X·W - t·1 > 0.

    이때, -t를 n+1번째 Weight, 1을 n+1번째 Input으로 생각한다면, X = (x1, x2,..., xn, 1), W = (w1, w2,..., wn, -t)로 둘 다 n+1차원의 벡터로 바꿀 수 있습니다. 다시 식을 고치면 X·W > 0 가 됩니다.

    이런 식으로 분류를 해주는 셈입니다. 다만, 선형적으로 나눌 수 있을 때만 가능했습니다. XOR문제로 AI Winter가 다가왔습니다.


    Multi-Layer Perceptron

    그림 1. 퍼셉트론 하나만으론 어떻게 해도 선형 분류가 되지 않음.           그림2.퍼셉트론 두개로 분류 성공

    XOR은 두 항이 모두 0이거나, 1로 같을 때만 1, 다르면 0인 논리 연산자입니다.

    좌표상에서 이처럼 표시되기 때문에(빨간색 : 1, 파란색 : 0) 더 이상 단일 퍼셉트론으론 선형 분류를 할 수 없었습니다.

    해결방법은 퍼셉트론을 여러 개 쌓는 것이었습니다.

    XOR Input, Output을 표로 정리하면 다음과 같습니다.

    y x1 x2
    1 0 0
    0 0 1
    0 1 0
    1 1 1

    이제 인공신경망을 그려봅니다. 

    Multi-Layer Perceptron의 신경망 구조를 그림으로 그려봤습니다. 여기서 화살표에 쓰인 숫자는 가중치 weight를 의미합니다. 그리고 1이 추가돼 3개의 input인데, 1은 바로 위에서 threshold를 넘겼을 때 발생한 1입니다. 그리고 각 층에선 활성 함수로 sigmoid를 사용할 겁니다.

    Layer 1 : Input shape = [1, 3] Weight shape = [3, 2] Output shape = [1, 2]

    Layer 2 : Input shape = [1, 3] Weight shape = [3, 1] Output shape = [1, 1]

    이제 위 Table의 Input을 차례로 넣어보겠습니다.

    Layer 1

    g1 weight = (2, -2, 0) g2 weight = (1, 3, -1)
    g1 = x1*w11 + x2*w12 + x3*w13
    g2 = x1*w21 + x2*w22 + x3*w23

    Layer 2

     

    f weight = (3, -2, -1)
    f = g1*w1 + g2*w2 + g3*w3
    x1 x2 g1 g2 f y
    0 0 (2*0) + (-2*0) +(0*1) = 0 sigmoid(0)  = 0.5 (1*0) + (3*0) + (-1*1) = -1        sigmoid(-1)  = 0.269 (3*0.5) + (-2*0.269) + (-1*1) = -0.038 sigmoid(-0.038) = 0.491 1
    0 1 (2*0) + (-2*1) + (0*1) = -2 sigmoid(-2) = 0.119 (1*0) + (3*1) + (-1*1) = 2          sigmoid(2)  = 0.881 (3*0.119) + (-2*0.881) + (-1*1)  = -2.405    sigmoid(-2.405) = 0.083 0
    1 0 (2*1) + (-2*0) + (0*1) = 2 sigmoid(2)  = 0.881 (1*1) + (3*0) + (-1*1) = 0         sigmoid(0)  = 0.5 (3*0.881) + (-2*0.5) + (-1*1) = 0.643 sigmoid(0.643) = 0.655 0
    1 1 (2*1) + (-2*1) +  (0*1) = 0 sigmoid(0)  = 0.5 (1*1) + (3*1) + (-1*1) = 3          sigmoid(3)  = 0.953 (3*0.5) + (-2*0.953) + (-1*1) = -1.406 sigmoid(-1.406) = 0.197 1

     이것을 정리하는 이유는, 다음에 할 것이 역전파(Backpropagation)이기 때문입니다. 힘들다 (틀린 점이 있다면 지적해주세요,,)

    반응형

    'AI > 딥러닝' 카테고리의 다른 글

    8. 경사 하강법 종류  (0) 2019.07.14
    7. 역전파(Back propagation)  (0) 2019.07.14
    5. Sotfmax, Cross Entropy  (0) 2019.07.11
    4. 로지스틱 회귀(Logistic Regression)  (0) 2019.07.11
    3. 다변량 선형 회귀(Multivariate Linear Regression)  (0) 2019.07.11

    댓글

Designed by Tistory.