앞써 6장에서 우리는 하나로 이루어진 퍼셉트론의 한계점, XOR문제를 살펴보았다.
이 문제를 해결하기 위해 많은 공학자들이 많은 시간 오랜 고민, 일명 인공지능 암흑기를 겪었다고 전해진다.
과연 공학자들은 이 문제를 어떻게 해결할 수 있었을까?
이번엔 그 해결법인 다층 퍼셉트론의 등장 배경과 더불어 기본 설계와 구성에 대해 공부해보았다.
XOR 문제 해결하기 실습 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
다층 퍼셉트론으로 XOR 문제 해결하기 (By. 은닉층)
import numpy as np
# 가중치(w)와 바이어스(b)
w11 = np.array([-2,-2])
w12 = np.array([2,2])
w2 = np.array([1,1])
b1 = 3
b2 = -1
b3 = -1
# 퍼셉트론
def MLP(x,w,b):
y = np.sum(w*x)+b
if y<= 0:
return 0
else:
return 1
# NAND 게이트
def NAND(x1,x2):
return MLP(np.array([x1,x2]),w11,b1)
# OR 게이트
def OR(x1,x2):
return MLP(np.array([x1,x2]),w12,b2)
# AND 게이트
def AND(x1,x2):
return MLP(np.array([x1,x2]),w2,b3)
# XOR 게이트
def XOR(x1,x2):
return AND(NAND(x1,x2),OR(x1,x2))
# x1, x2 값을 번갈아 대입해 최종값 출력
if __name__ == '__main__':
for x in [(0,0),(1,0),(0,1),(1,1)]:
y = XOR(x[0],x[1])
print("입력 값: "+ str(x) + " 출력 값: "+str(y))
|
cs |
'AI & Data Analysis > 인공지능 스터디' 카테고리의 다른 글
[모두의 딥러닝] #9장: 신경망에서 딥러닝으로 (0) | 2022.01.22 |
---|---|
[모두의 딥러닝] #8장: 오차는 다운! 정확도는 업! 오차역전파 (1) | 2022.01.22 |
[모두의 딥러닝] #6장: 가장 작은 인공신경망 단위, 퍼셉트론 (0) | 2022.01.22 |
[모두의 딥러닝] #5장: 참 거짓 판단 장치, 로지스틱 회귀 (0) | 2022.01.19 |
[모두의 딥러닝] #4장: 오차 수정하기 : 경사하강법 (0) | 2022.01.13 |