ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 퍼셉트론
    딥러닝 2020. 1. 9. 14:37

    '밑바닥부터 시작하는 딥러닝' 이라는 책을 참고하여 작성하였습니다.

     

     

    퍼셉트론은 다수의 신호를 입력받아서 하나의 신호를 출력하는 것

     

    입력이 2개인 퍼셉트론을 보도록 하자

    x는 입력값, w는 가중치, b는 편향이라고 할 때

     

    y = x1*w1 + x2*w2 + b

     

    y의 값이 1을 넘으면 1을 출력.

    못넘으면 0을 출력

     

    편향과 가중치는 다르다.

    가중치는 각 입력 신호가 결과에 영향력을 조절하는 매개변수이고

    편향은 뉴련이 얼마나 쉽게 활성화되는지 결정한다.

     

     


     

    <구현>

    논리게이트 AND, NAND, OR, XOR를 구현해보도록 하자.

     

    import numpy as np
    import matplotlib.pyplot as plt
    
    def AND(x1, x2):
        x = np.array([x1, x2])
        w = np.array([0.5, 0.5])
        b = -0.7
        tmp = np.sum(x*w) + b
        if tmp <= 0:
            return 0
        else:
            return 1
    
    def NAND(x1, x2):
        x = np.array([x1, x2])
        w = np.array([-0.5, -0.5])
        b = 0.7
        tmp = np.sum(x*w) + b
        if(tmp <= 0):
            return 0
        else:
            return 1
    
    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
        else:
            return 1
    
    def XOR(x1, x2):
        return AND(NAND(x1, x2), OR(x1, x2))
    
    m = [[0, 0], [0, 1], [1, 0], [1, 1]]
    
    for i in range(len(m)):
        print(m[i][0], m[i][1])
    
    for i in range(len(m)):
        print(XOR(m[i][0], m[i][1]))

    가중치와 임계치의 조절만으로 여러 게이트를 구현하는 것을 볼 수가 있다.

     

     

     

     

    XOR게이트에서 (0, 1), (1, 0)은 1이고 (0, 0), (1, 1)은 0이다.

    전자의 영역을 동그라미로 표현하고 후자를 세모로 표현해서 그래프로 보자.

    XOR게이트 값 표현

    같은 모양은 같은 영역안에 있어야한다.

    하지만 단층 퍼셉트론은 선형 영역을 갖기때문에 위의 값을 나눌 수가 없다.

    이것이 단층 퍼셉트론의 한계다.

    그래서 XOR는 다층 퍼셉트론으로 구현되었다.

    반응형

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

    미니배치 학습 구현하기  (0) 2020.01.16
    2층 신경망 클래스 구현하기  (0) 2020.01.16
    손실함수와 경사법  (0) 2020.01.16
    3층 신경망 구현해보기  (0) 2020.01.10
    활성화함수  (0) 2020.01.10
Designed by Tistory.