2.1퍼셉트론(perceptron)이란? 다수의 신호를 입력으로 하나의 신호를 출력한다.
왼쪽의 그림은 입력으로 2개의 신호를 받은 퍼셉트론의 예이다.
x는 입력 신호, y는 출력 신호, w(weight)는 가중치를 뜻한다.
그림의 원을 뉴런 또는 노드라고 부른다.
입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다.
(w1x1, w2x2)
뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력한다.(이를 '뉴런이 활성화한다'라고 표현하기도 한다)
그 한계를 임계각이라고 하며, 세타(Θ) 로 표현한다.
이 퍼셉트론의 동작 원리를 수식으로 나타내면 이렇다.
퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다. 즉, 가중치가 수록 해당 신호가 그만큼 더 중요함을 뜻한다.
2.2 단순한 논리 회로
AND, NAND, OR 게이트 (x1,x2,y)
NAND -> x1, x2가 둘다 1일때만 0, 나머지 경우는 1 (NOT AND, ~AND)
2.3 퍼셉트론 구현하기
AND Gate
def AND(x1,x2):
w1, w2, theta = 0.5,0.5,0.7
tmp = x1*w1 + x2*w2
if tmp<=theta:
return 0
elif tmp > theta:
return 1
AND(0,0)
AND(1,0)
AND(0,1)
AND(1,1)
가중치와 편향 도입 : 세타(Θ)를 -b로 치환하면 b를 편향(bias)라고 한다.
퍼셉트론은 입력신호에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다.
bias.py( 가중치와 편향 도입 예제)
import numpy as np
x = np.array([0,1])
w = np.array([0.5,0.5])
b = -0.7
print(w*x)
print(np.sum(w*x))
print(np.sum(w*x)+b)
가중치와 편향을 구현한 AND, NAND, OR 게이트 구현하기
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 x1
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 x1
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 x1
2.4 퍼셉트론의 한계
XOR 게이트: 배타적 논리합 논리회로, x1과 x2중 한쪽이 1일때만 y가 1을 출력한다. (*배타적: 자기 이외에는 거부)
선형 영역 : 직선의 영역
비선형 영역: 곡선의 영역
2.5 다층 퍼셉트론이 출동한다면
퍼셉트론으론 XOR게이트를 표현할 수 없다.
왜? -> 직선 하나(선형)로 x1,x2의 영역을 나눌 수 없기 때문.
해결 방법: 층을 쌓아 다층 퍼셉트론(multi-layer perceptron)을 만든다.
AND,NAND,OR 게이트를 조합하는 방법
def XOR(x1,x2):
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y = AND(s1,s2)
return y
0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보낸다.
1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 y를 출력한다.
단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘려 구현할 수 있다.
다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다.
'공부 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝1 - Chap6. 학습 관련 기술들 (3) | 2024.11.29 |
---|---|
밑바닥부터 시작하는 딥러닝1 - Chap5. 오차역전파법 (1) | 2024.11.27 |
밑바닥부터 시작하는 딥러닝1 - Chap4. 신경망 학습 (2) | 2024.11.20 |
밑바닥부터 시작하는 딥러닝1 - Chap3. 신경망 (1) | 2024.11.20 |
밑바닥부터 시작하는 딥러닝1 - Chap1. 헬로 파이썬 (1) | 2024.11.19 |