2024. 5. 2. 15:57, 딥러닝
퍼셉트론(perceptron)이란?
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력합니다
위 사진에서 x1, x2는 입력신호, w1, w2는 가중치, y는 출력 신호를 뜻합니다
각각의 원을 뉴런 또는 노드라고 불리며,
입력신호가 뉴런에 보내질때는 각각의 가중치(w1,w2)가 곱해집니다
뉴런에서 보내온 신호의 총합 (입력신호에 가중치를 곱한 값)이 한계( = 임계값(θ로 표현))을 넘어설 때만 1을 출력합니다
즉 y = 0 if ( w1x1 + w2x2 <= θ ), y = 1 if ( w1x1 + w2x2 > θ ) 로 나타낼수 있습니다
여기서 θ를 좌항에 옮기면 -θ가 되는데, 이때 -θ를 편향이라고 합니다
편향의 입력신호는 항상 1이기 때문에 위 그림과 같이 퍼셉트론에 편향을 명시해줄수도 있습니다
AND 게이트
퍼셉트론을 활용한 간단한 AND 게이트
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
AND 함수 구현
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
temp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
NAND 게이트
퍼셉트론을 활용한 간단한 NAND 게이트
x1 | x2 | y |
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
NAND 함수 구현
def NAND(x1, x2):
x = np.array([x1,x2])
y = np.array([-0.5, -0.5])
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
OR 게이트
퍼셉트론을 활용한 간단한 OR 게이트
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
OR 함수 구현
def OR(x1, x2):
x = np.array([x1,x2])
y = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
XOR 게이트
XOR 게이트는 지금까지 배운 퍼셉트론으로는 구현 할 수 없습니다!
아래와 XOR 게이트는 NAND와 OR의 출력을 AND 게이트의 입력으로 넣어서 출력해야 만들수 있기 때문입니다
XOR 함수 구현
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
위 코드처럼 층이 아래와 같이 여러개인 퍼셉트론을 다층 퍼셉트론 이라고 합니다
단층 퍼셉트론으로는 표현하지 못한 것을 층을 쌓아 더 다양한 것을 표현 할 수 있습니다
실제로 NAND 게이트만으로 컴퓨터를 만들 수 있다고 하니 놀랍지 않나요?
Comments