AI 모델(딥러닝 기초)/1. 퍼셉트론
1. 퍼셉트론(2)
Hyeon Lee
2022. 12. 20. 15:21
728x90
지난 시간 퍼셉트론에 대해서 공부했다.
오늘은 지난 시간 공부한 퍼셉트론과 퍼셉트론의 한계점을 어떻게 극복하는지에 대해 알아보고자 한다.
※ 퍼셉트론의 한계
지난번에는 NAND, AND, OR 게이트에 대해서 알아보았다. 이번에는 XOR 게이트에 대해 알아보자.
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
XOR 게이트는 x1과 x2가 같으면 0을, 다르면 1을 출력하는 논리연산이다.
XOR 게이트를 매개변수를 활용하여 출력시키려 해보았을 때, 위치를 좌표에서 나타내어 보자.
O : 0을 출력, ㅁ : 1을 출력
이처럼 1차식이 아닌 비선형의 곡선을 통해서만 구역을 나눌 수 있다.
이것이 바로 단층퍼셉트론의 한계점이다. 단층퍼셉트론은 1차식의 형태를 띄고 있으므로 오로지 선형적으로 표현될 수 있는 게이트에서만 적용이 가능했다.
Solution : 이러한 문제점의 해결책은 다층퍼셉트론의 사용이다.
※ 다층퍼셉트론을 사용한 XOR 게이트 구현
이와 같은 그림으로 형성된다. 여기서 input 과정은 0층, NAND,OR 작업을 한 후 s1, s2가 존재하는 지점을 1층, AND 작업 후 y가 존재하는 output과정을 2층이라고 부른다. 그래서 이 퍼셉트론은 '2층 퍼셉트론'이라고 부른다.
import numpy as np
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
temp = np.sum(w*x) + b
if temp <= 0:
return 0
else:
return 1
def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.7
temp = np.sum(w*x) + b
if temp <= 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
temp = np.sum(w*x) + b
if temp <= 0:
return 0
else:
return 1
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
지난 시간의 AND, OR, NAND 게이트 함수를 재귀적으로 사용하여 XOR 함수를 구현할 수 있었다.
결과 역시 잘 나오는 것을 확인할 수 있다. 이렇듯 단층퍼셉트론으로 표현하지 못하는 경우에는 층을 하나 늘려 구현을 할 수 있다.
728x90