728x90
반응형
퍼셉트론 이론과 간단 구현 - 1
https://seokii.tistory.com/54?category=1054781
지난 글에서 퍼셉트론 이론을 정리하고 퍼셉트론을 이용해서 AND 게이트를 구현했습니다.
글을 이어서 마저 정리해보도록 하겠습니다.
가중치와 편향
\begin{cases}0\left( w_{1}x_{1}+w_{2}x_{2}\leq \theta \right) \\ 1 \left( w_{1}x_{1}+w_{2}x_{2} >\theta \right) \end{cases}
지난 글에서 설명했었던 위의 식에서, \(\theta\)를 \(-b\)로 치환해 아래의 식으로 정리했습니다.
\begin{cases}0\left(b+ w_{1}x_{1}+w_{2}x_{2}\leq 0 \right) \\ 1 \left(b+w_{1}x_{1}+w_{2}x_{2} >0 \right) \end{cases}
여기서 \(b\)는 편향(bias)이라 하며 \(w_{1}, w_{2}\)는 그대로 가중치(weight)입니다.
정리하자면, 퍼셉트론은 입력 값에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다고 할 수 있습니다.
아래는 지난 글의 구현 코드에서 위의 가중치와 편향을 적용한 코드입니다.
구현 코드
import numpy as np
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
print(AND(0, 0))
print(AND(1, 0))
print(AND(0, 1))
print(AND(1, 1))
결과
0
0
0
1
이어서 NAND 게이트와 OR 게이트 구현
구현 코드
import numpy as np
def NAND(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
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
print(NAND(0,0))
print(NAND(0,1))
print(NAND(1,0))
print(NAND(1,1))
print(OR(0,0))
print(OR(0,1))
print(OR(1,0))
print(OR(1,1))
결과
1
1
1
0
0
1
1
1
728x90
반응형
'머신러닝 & 딥러닝 > 기초 이론' 카테고리의 다른 글
[머신러닝/딥러닝 기초] 7. 퍼셉트론에서 신경망으로 가는 핵심: 활성화 함수란? (0) | 2022.02.11 |
---|---|
[머신러닝/딥러닝 기초] 6. 퍼셉트론의 한계와 다층 퍼셉트론(multi-layer perceptr) (0) | 2022.02.09 |
[머신러닝/딥러닝 기초] 4. 퍼셉트론(Perceptron) 이론과 간단 구현 - 1 (0) | 2022.02.09 |
[머신러닝/딥러닝 기초] 3. 머신러닝을 하면서 주의해야 할 6가지 (0) | 2022.02.09 |
[머신러닝/딥러닝 기초] 2. 머신러닝 시스템의 종류 (0) | 2022.02.08 |
댓글