반응형
퍼셉트론 - 다수의 신호를 입력받아 하나의 신호를 출력하는 것
거의 이걸 기초로 모델을 만든다.
논리회로
w1, w2,θ = 0.5, 0.5, 0.7일 때 일치
w1, w2,θ = -0.5, 1.0, 1.0일 때 일치
w1, w2,θ
보통 논리회로는 and, or, nand, xor인데 여기 xor이 없다. 나중에 없는 이유를 설명~하겠다
퍼셉트론 구성
구성하기 앞서 위에서 구성한 식에서 임계값θ를 좌항으로 이항 시켜 b로 바꾼다. b는 bias(편향)이라 부른다.
AND게이트 구성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import numpy as np
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) #이값과
b = -0.7 #이값을 바꿔주면 OR,AND가 된다.
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
if __name__ == '__main__':
for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = AND(xs[0], xs[1])
print(str(xs) + " -> " + str(y))
|
cs |
설명하자면 w1, w2는 입력값이 결과에 영향을 주는 매개변수이고
편향(b)은 뉴런(b 빼고 나머지)이 얼마나 쉽게 활성화(1로 출력되느냐)를 조절하는 매개변수이다.
결국 결과 값에 영향을 주는 매개변수들인데 어떤 식으로 영향을 주느냐에 따라 분류한 것이다.
NAND와 OR은 매개 변숫값만 바꿔주면 되므로 굳이 따로 구성하지는 않겠다.
퍼셉트론의 한계
위에서 XOR을 구성하지 않았는데 그것은 구성이 되지 않는 게 바로 퍼셉트론의 한계다.
위 같은 비선형 곡선은 퍼셉트론 식인 1차 방정식으로는 할 수가 없어서 구성할 수가 없다.
그래서.. 다층 퍼셉트론을 구성해보면 될 것 같다.(AND, OR, NAND를 이용하여)
1
2
3
4
5
|
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
|
cs |
XOR 구성한 것이다~
말로 풀어쓰면 NAND, OR에 넣은 뒤 그 값을 다시 AND에 넣으면 된다
이거 학부시절 논리회로에서 했던 건데 여기서 다 보니 감회가 새롭긴 하다.
배우면 어디서든 써먹긴 하는 것 같다.
반응형
'DATA Science > DeepLearing from scratch' 카테고리의 다른 글
신경망 학습 - 학습 알고리즘 구현 (0) | 2021.05.13 |
---|---|
신경망 학습 (2) | 2021.05.12 |
신경망 (0) | 2021.05.12 |
Matplotlib - 그래프 (0) | 2021.05.11 |
Numpy - 행렬연산 (2) | 2021.05.11 |
댓글