[AI] 퍼셉트론(Perceptron) - 논리연산자 구현(2)
퍼셉트론 - 임계값을 좌변으로 이동
- 가중치와 임계값을 학습을 통해서 수정할 수 있도록 수식을 변경.
- beta를 -b(bias : 편향) 치환하여 좌변으로 이동.
- 편향은 뉴런이 얼마나 쉽게 활성화 하는냐를 조절하는 매개변수
numpy 라이브러리를 이용하여 AND, NAND, OR, XOR GATE 구현
import numpy as np
def AND(x1, x2) :
x = np.array([x1, x2]) # 입력 값
w = np.array([0.5, 0.5]) # 가중치
b = -0.7 # 편향
u = np.sum(x*w) + b # u = x1w1 + x2w2 + b
if u <=0 :
return 0
elif u > 0 :
return 1
def NAND(x1, x2) :
x = np.array([x1, x2]) # 입력 값
w = np.array([-0.5, -0.5]) # 가중치
b = 0.7 # 편향
u = np.sum(x*w) + b # u = x1w1 + x2w2 + b
if u <=0 :
return 0
elif u > 0 :
return 1
def OR(x1, x2) :
x = np.array([x1, x2]) # 입력 값
w = np.array([0.5, 0.5]) # 가중치
b = -0.2 # 편향
u = np.sum(x*w) + b # u = x1w1 + x2w2 + b
if u <=0 :
return 0
elif u > 0 :
return 1
# 멀티 퍼셉트론
def XOR(x1, x2) :
p1 = NAND(x1, x2)
p2 = OR(x1, x2)
y = AND(p1, p2)
return y
if __name__ == '__main__' :
for xs in [(0,0), (0,1), (1,0), (1,1)] :
y_and = AND(xs[0], xs[1])
y_nand = NAND(xs[0], xs[1])
y_or = OR(xs[0], xs[1])
y_xor = XOR(xs[0], xs[1])
print(str(xs) + ' -> ' + str(y_and) + " " + str(y_nand) + " " + str(y_or) + " " + str(y_xor))
활성화 함수 (Activation Function)
- Heaviside 함수 또는 계단 함수
-
Sigmoid 함수
- 계단함수에서 Sigmoid 함수로 변경 => 머신러닝이 학습을 할때, 미분을 통해 학습을 함.
- 계단함수는 미분하는 것이 무의미.
댓글남기기