맛동산

단순 퍼셉트론 본문

파이썬/딥러닝 구현

단순 퍼셉트론

오지고지리고알파고포켓몬고 2017. 5. 12. 20:44

신호의 총합이 정해진 한계를 넘어설 때 1을 출력

-> 뉴런이 활성화한다

 

- 1 -

한계치 : 임계값(세타 기호)

0 (w1x1 + w2x2 <= 세타)

1 (w1x1 + w2x2 > 세타)

 

AND <-> NAND (AND의 매개변수 부호를 모두 반전하면 구현)

 

 

AND 회로

 
def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.99
    tmp = x1*w1 + x2*w2
    result = 0 if tmp <= theta else 1

    return result

print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))
# 이건 뭐랄까 선형회귀식의 꼴

 

- 2 -

다음과 같은 식으로 표현할 수 있음(b를 편향 bias 라고 함)

0 (-b + w1x1 + w2x2 <= 0)

1 (-b + w1x1 + w2x2 > 0)

 
def AND(x1, x2):
    #x,w,b = np.array([x1, x2]), np.array([0.5, 0.5]), -0.99
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.99
    tmp = np.sum(w*x) + b
    result = 0 if tmp <= 0 else 1

    return result

print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))

 

가중치는 중요도를 조절하는 매개변수, 편향은 뉴런이 얼마나 쉽게 활성화 하느냐를 조정하는 매개변수

 

NAND 구현

 
def NAND(x1, x2):
    #x,w,b = np.array([x1, x2]), np.array([0.5, 0.5]), -0.99
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.99
    tmp = np.sum(w*x) + b
    result = 0 if tmp <= 0 else 1

    return result

print(NAND(0,0))
print(NAND(1,0))
print(NAND(0,1))
print(NAND(1,1))

 

다층 퍼셉트론은 이따 다시

Comments