ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 퍼셉트론(perceptron)
    잡다한 것들 2020. 11. 6. 23:17
    반응형

    출처: wikipedia.org
    https://commons.wikimedia.org/wiki/File:Perceptron_moj.png

    퍼셉트론(perceptron)

    • 인공신경망의 한 종류
    • 1957년에 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트 (Frank Rosenblatt)에 의해 고안되었다.
    • 각 노드의 '입력값'과 '가중값'의 곱을 모두 합한 값이 '임계값'보다 크면 결과값으로 1을 출력한다. 그렇지 않으면 결과값으로 0 (또는 -1)을 출력한다.
    • 입력값을 x1, x2라 하고, 가중값을 w1, w2라 하고, 임계값을 theta라 하면 다음과 같은 함수를 만들수 있다.
    def perceptron(x1, x2):
        w1, w2, theta = .4, .4, .7
        return 0 if x1 * w1 + x2 * w2 <= theta else 1
    
    
    print(perceptron(0, 0), perceptron(0, 1), perceptron(1, 0), perceptron(1, 1))
    

     

    퍼셉트론은 1차 방정식

    • x1을 x, x2를 y로 두면 나머지는 상수항들.
    • 중학교 때 배운 1차 방정식으로 표현하면 y = ax + b의 형태로 바꿀 수 있다.
    • 그래프를 그리자. (그래프는 생략.)
    • 이 그래프의 위는 1, 이 그래프의 아래는 0이 되는 선형 분류기가 퍼셉트론의 정체인 것을 알 수 있다. 

    https://en.wikipedia.org/wiki/Perceptron

    퍼셉트론으로 논리연산자 만들기

    AND

    x1 x2 y
    0 0 0
    0 1 0
    1 0 0
    1 1 1
    def AND(x1, x2):
        w1, w2, theta = .4, .4, .7
        return 0 if x1 * w1 + x2 * w2 <= theta else 1
    
    
    print(AND(0, 0), AND(0, 1), AND(1, 0), AND(1, 1))  # 0 0 0 1

    OR

    def OR(x1, x2):
        w1, w2, theta = .4, .4, .3
        return 0 if x1 * w1 + x2 * w2 <= theta else 1
    
    
    print(OR(0, 0), OR(0, 1), OR(1, 0), OR(1, 1))
    

    NAND

    def NAND(x1, x2):
        w1, w2, theta = -.4, -.4, -.6
        return 0 if x1 * w1 + x2 * w2 <= theta else 1
    
    
    print(NAND(0, 0), NAND(0, 1), NAND(1, 0), NAND(1, 1))
    

    XOR

    • XOR은 단층 퍼셉트론으론 풀 수 없다.
    • 퍼셉트론은 선형분류기
    • XOR은 비선형 문제. 
    • 하지만 다층으로 비선형 문제도 풀 수 있다. 

    출처: wikipedia.org

    def XOR(x1, x2):
        return AND(NAND(x1, x2), OR(x1, x2))
    
    
    print(XOR(0, 0), XOR(0, 1), XOR(1, 0), XOR(1, 1))

    출처: wikipedia.org

     

    def XOR(x1, x2):
        h1 = NAND(x1, x2)
        return NAND(NAND(x1, h1), NAND(h1, x2))
    
    print(XOR(0, 0), XOR(0, 1), XOR(1, 0), XOR(1, 1))

    NAND 만으로도 XOR 회로를 만들 수 있다. 

    반응형
Designed by Tistory.