퍼셉트론이란 여러 입력 신호를 받아 하나의 출력 신호를 보내는 것이다. 여러개의 입력신호를 받으면 고유한 가중치를 입력값에 각각 곱해 총합을 구하고, 총합이 임계값(⍬)를 넘으면 1을 출력하고(뉴런이 활성화) 임계값(⍬)를 넘지 못하면 0을 출력한다.
임계값(⍬)을 -b로 치환해 새로운 식을 만들 수 있다.
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 1
elif tmp <= 0:
return 0
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 1
elif tmp <= 0:
return 0
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.4
tmp = np.sum(x*w) + b
if tmp > 0:
return 1
elif tmp <= 0:
return 0
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
r = AND(s1, s2)
return r
재수할 때 비문학 지문으로 수도 없이 봤던,,,^^ 봐도봐도 이해가 안됐는데 왜 이해가 안됐는지 이제야 알 것 같다. 퍼셉트론의 구조는 모두 같고 가중치의 값만 변한다는게 그 당시에는 아무리 생각해도 이해가 안된거 가틈ㅎㅎ 물론 오늘도 첨에 쫌 헤매다가 이해했다. 역시 사람은 변하지 않아....