AND 논리 회로
def AND(x1, x2) :
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta :
return 0
elif tmp > theta :
return 1
- x1과 x2를 인수로 받는 함수 AND
- 매개변수 x1, x2, theta 는 함수 안에서 초기화하고, 가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환, 그 외에는 0을 반환
AND(0, 0) # 0을 출력
AND(1, 0) # 0을 출력
AND(0, 1) # 0을 출력
AND(1, 1) # 1을 출력
** 편향을 이용한 방식으로 구현해보기
def AND(x1, x2) :
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 0 :
return 0
else :
return 1
- theta 가 -b가 되었음
- w1, w2는 각 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수
- 편향은 뉴런이 얼마나 쉽게 활성화 (결과로 1을 출력)하느냐를 조정하는 매개변수
- b가 -0.1 이면 각 입력 신호에 가중치를 곱한 값들의 합이 0.1을 초과할 때만 뉴런이 활성화
- 반면 b가 -20.0 이면 각 입력 신호에 가중치를 곱한 값들의 합이 20.0을 넘지 않으면 뉴런은 활성화하지 않음
- 즉, 편향의 값은 뉴런이 얼마나 쉽게 활성화되는지 결정
NAND 게이트 구현
def NAND(x1, x2) :
x = np.array([x1, x2])
w = np.array([-0.5, -0.5]) # AND와는 가중치(w와 b)만 다름
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0 :
return 0
else :
return 1
OR 게이트 구현
def OR(x1, x2) :
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else :
return 1
- AND, NAND, OR 게이트는 모두 같은 구조의 퍼셉트론이고, 차이는 가중치와 매개변수의 값 뿐
- 실제로 파이썬으로 작성한 NAND와 OR 게이트의 코드에서도 AND 와 다른 곳은 가중치와 편향 값 설정하는 부분뿐
Reference
- 밑바닥부터 시작하는 딥러닝
'Deep Learning' 카테고리의 다른 글
신경망과 활성화 함수 (activation function) (0) | 2022.05.29 |
---|---|
XOR 게이트 (배타적 논리합, 논리회로, 파이썬으로 구현해보기) (0) | 2022.05.29 |
딥러닝 주요 알고리즘 1 - 딥러닝 기초 이론 (2) 역전파 알고리즘, 훈련 (0) | 2021.12.13 |
딥러닝 주요 알고리즘 1 - 딥러닝 기초 이론 (1) 확률적 경사 하강법(Stochastic gradient descent, SGD) (0) | 2021.12.11 |
Abstraction & Reasoning in AI systems : (5) Program synthesis + Deep learning (0) | 2021.01.30 |
댓글