퍼셉트론(perceptron) : 신경망(딥러닝)의 기원이 되는 알고리즘. 퍼셉트론의 구조를 배우는 것은 신경망과 딥러닝으로 나아가는데 중요한 아이디어를 배우는 일이다.
다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 이 때 신호는 전류나 강물처럼 흐름이 있는 것.
신호도 흐름을 만들고 정보를 앞으로 전달.
가지는 값 : 흐른다/안 흐른다(1 혹은 0). 1 : 신호가 흐른다, 0 : 신호가 흐르지 않는다.
X1, X2는 입력신호, Y는 출력신호, W1, W2는 가중치. 그림의 원은 뉴런(노드). 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다(W1X1, W2X2). 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력(이를 ‘뉴런이 활성화한다’라고 표현). 그 한계를 임계값이라 하고 기호로 나타낸다.
퍼셉트론은 복수의 입력신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용. 즉 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 것을 뜻한다.
: 입력이 둘이고 출력은 하나. 두 입력이 모두 1일 때만 1을 출력, 나머지는 0 출력
진리표 :
X1 | X2 | Y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
퍼셉트론(W1, W2, THETA) : (0.5, 0.5, 0.7), (0.5, 0.5, 0.8), (1.0, 1.0, 1.0)
def AND2(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
NAND : Not AND. AND의 출력을 뒤집은 것. 모두 1일때만 0, 나머지는 0 출력.
퍼셉트론 : (-0.5, -0.5, -0.7). AND의 부호 반전.
OR : 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로.
OR 진리표 :
X1 | X2 | Y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
퍼셉트론의 구조는 AND, NAND, OR 게이트 모두에서 같다. 다른 것은 매개변수(가중치, 임계값)의 값. 퍼셉트론의 매개변수의 값만 적절히 조정하여 AND, NAND, OR로 변신
b를 편향, w1, w2는 가중치. 식 2.2 관점에서 보자면 퍼셉트론은 입력신호에 가중치를 곱한 값과 편향을 합하여 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다.
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
x1, x2 중 하나만 1일 때만 1을 출력한다.
진리표 :
X1 | X2 | Y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
퍼셉트론은 직선으로 나뉜 두 영역을 만든다.
XOR게이트는 직선 하나로 두 영역을 나눌 수 없다. 즉, 비선형 영역으로는 나눌 수 있다.
다층 퍼셉트론 : 층이 여러 개인 퍼셉트론
XOR은 AND, NAND, OR의 조합으로 만들어 낼 수 있다.
X1 | X2 | S1 | S2 | Y |
---|---|---|---|---|
0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 |
NAND의 출력을 S1, OR의 출력을 S2로 한다.
def XOR(x1, x2):
s1=NAND(x1, x2)
s2=OR(x1, x2)
y=AND2(s1, s2)
return y
그림 2-13
XOR은 다층 구조의 네트워크, 0층에서 1층으로 신호가 전달, 이어서 1층에서 2층으로 신호가 전달.
① 0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보낸다.
② 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 이 입력 신호를 바탕으로 Y를 출력
다층 퍼셉트론으로 복잡한 회로를 만들 수 있는데, 컴퓨터마저 표현할 수 있다.