# 요약
# 개요
[[퍼셉트론]](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)
```
( 검증 필요)
## 다층 퍼셉트론