# 요약 # 개요 [[퍼셉트론]](Perceptron)은 인공 신경망(Aritificial Neural Network, ANN)의 구성 요소(unit)로서 다수의 값을 입력받아 하나의 값으로 출력하는 알고리즘입니다. Perceptron은 perception과 neuron의 합성어이며 인공 뉴런이라고도 부릅니다. 즉, 퍼셉트론은 생물학적인 신경계(Neual Network)의 기본 단위인 신경세포(=뉴런)의 동작 과정을 통계학적으로 모델링한 알고리즘입니다. 생물학 관점에서의 뉴런과 컴퓨터사이언스 관점에서 퍼셉트론의 역할과 동작 과정을 알아봅니다. # 종류 ## 단층 퍼셉트론 은닉층 없이 입력층과 출력층만 있는경우를 단층 퍼셉트론이라 부른다. AND, NAND, OR 게이트를 구현할 수 있지만 XOR 게이트는 구현하지 못한다는 한계가 있다. ### AND | INPUT | | OUTPUT | | ----- | --- | ------ | | A | B | C | | 0 | 0 | 0 | | 1 | 0 | 0 | | 0 | 1 | 0 | | 1 | 1 | 1 | ``` def AND(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 else tmp > 0: 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 ``` ## XOR ``` def XOR(x1, x2): a = OR(x1, x2) b = NAND(x1, x2) return AND(a,b) ``` ( 검증 필요) ## 다층 퍼셉트론