파이썬/딥러닝 구현
단순 퍼셉트론
오지고지리고알파고포켓몬고
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))
다층 퍼셉트론은 이따 다시