Search

2. 퍼셉트론(Perceptron)

인공 신경망(딥러닝) 분야의 초창기 알고리즘 (by Frank Rosenblatt, 1957) @Jihyun Choi @여준 윤 @Hyun Ahn
퍼셉트론은 머신러닝 분야의 신경망의 초창기 알고리즘에 해당된다(출처: Deep Marketer)

2.1 퍼셉트론이란?

인공 신경망(Artificial Neural Networks): 사람의 지능을 구현하는 뇌신경 구조와 신호 전달 체계를 모형화
퍼셉트론(Perceptron): 사람의 뇌신경을 구성하는 가장 기본 요소인 뉴런 단위의 신호 처리 과정을 모형화
퍼셉트론은 다수의 입력 신호(예: x1,x2)x_1, x_2)를 입력으로 받아 하나의 출력 신호(예: yy)를 생성
1: ‘신호가 흐른다’
0: ‘신호가 흐르지 않는다’
원(circle): 뉴런 또는 노드
가중치(w1,w2w_1,w_2): 입력 신호의 세기를 조절하는 역할
퍼셉트론의 기본 구조: 입력 신호(x1, x2), 가중치(w1, w2), 출력 신호(y)
출력 신호(yy): 뉴런에서 전달한 신호의 총합이 정해진 한계를 넘을 때 1을 출력함
이를 “뉴런이 활성화(activate)한다.” 라고 표현
정해진 한계 = 임계값(threshold, θ\theta)
y={0(w1x1+w2x2θ)1(w1x1+w2x2>θ)y=\begin{cases} 0 & (w_1x_1+w_2x_2 \leq \theta)\\ 1 & (w_1x_1+w_2x_2\gt \theta) \end{cases}
가중치의 역할이 중요함. 가중치가 크다 → 해당 입력 신호가 중요함

2.2 단순한 논리 회로

2.2.1 AND 게이트
입력된 두 개의 신호가 모두 1일 때, 1의 신호 값을 출력
나머지 경우는 모두 0의 신호 값을 출력
퍼셉트론으로 AND 게이트 구현하기: w1,w2,θw_1, w_2, \theta 를 결정
x1
x2
y
0
0
0
0
1
0
1
0
0
1
1
1
[Ex] 퍼셉트론으로 AND 게이트를 구현하기 위해 매개변수 값들의 예를 제시하라.
w1=0.5,w2=0.5,θ=0.9\therefore w_1=0.5, w_2=0.5, \theta=0.9 즉, (0.5,0.5,0.9)(0.5,0.5,0.9)
x1,x2=0x_1,x_2=0 일 때, 0<0.90<0.9 이므로 00을 출력
x1=0,x2=1x_1=0, x_2=1 일 때, 0.5<0.90.5 < 0.9 이므로 00을 출력
x1=1,x2=0x_1=1, x_2=0 일 때, 0.5<0.90.5 < 0.9 이므로 00을 출력
x1=1,x2=1x_1=1, x_2=1 일 때, 0.5+0.5>0.90.5+0.5 > 0.9 이므로 11을 출력
2.2.2 NAND 게이트와 OR 게이트
NAND 게이트는 Not AND를 의미하며 AND 게이트의 출력과 정반대
[Ex] 퍼셉트론으로 NAND 게이트를 구현하기 위해 매개변수 값들의 예를 제시하라.
(0.3,0.5,0.8)\therefore(-0.3,-0.5,-0.8)
x1
x2
y
0
0
1
0
1
1
1
0
1
1
1
0
OR 게이트는 두 입력 신호 중 하나 이상 1일 때 1의 신호 값을 출력
[Ex] 퍼셉트론으로 OR 게이트를 구현하기 위해 매개변수 값들의 예를 제시하라.
(0.2,0.2,0.1)\therefore(0.2,0.2,0.1)
x1
x2
y
0
0
0
0
1
1
1
0
1
1
1
1
학습과 기계학습의 정의
학습(learning)이란 가중치(매개변수)를 적절하게 선택하는 작업
퍼셉트론 기본 모델에서는 사람이 진리표(학습 데이터)를 보고 적절한 매개변수를 직접 선택
그러나, 기계학습에서는 매개변수 선택을 컴퓨터자동으로 수행
기계학습에서 사람은 퍼셉트론의 구조(모델)를 고민하고 컴퓨터에 학습할 데이터를 주는 역할을 수행

2.3 퍼셉트론 구현하기

w1,w2w_1, w_2 : 가중치, 각 입력 신호가 결과에 주는 영향력(중요도)조절 매개변수
bb : 편향, 뉴런의 활성화(=1) 조건을 조정하는 매개변수
θ-\theta를 편향 bb로 치환
bb=-0.1일 때, 각 입력 신호에 가중치를 곱한 값들의 합이 0.1을 초과하면 뉴런 활성화
2.3.1 간단한 구현부터
입력 신호 x1, x2에 가중치를 곱한 후 합한 값이 θ\theta를 넘으면 1, 넘지 않으면 0 출력
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) # 0 AND(1, 0) # 0 AND(0, 1) # 0 AND(1, 1) # 1
Python
복사
2.3.2 가중치와 편향 도입
import numpy as np x = np.array([0, 1]) # 입력 w = np.array([0.5, 0.5]) # 가중치 b = -0.7 # 편향 # 출력 w*x # [0. 0.5] np.sum(w*x) # 0.5 np.sum(w*x)+b # -0.19999999999999996
Python
복사
2.3.3 가중치와 편향 구현하기
AND 게이트
입력 신호 x1, x2에 가중치를 곱한 값과 편향을 합한 값이 θ\theta를 넘으면 1, 넘지 않으면 0 출력
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 1
Python
복사
NAND 게이트
def NAND(x1, x2): x = np.array([x1, x2]) w = np.array([-0.5, -0.5]) # AND와는 가중치(w,b)만 다름 b = 0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1
Python
복사
OR 게이트
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
Python
복사

2.4 퍼셉트론의 한계

2.4.1 도전! XOR 게이트
XOR 게이트
배타적 논리합 논리 회로
배타적 논리합 : 두 개의 명제 중 하나만 참일 때 결과값이 참인 논리 연산
x1
x2
y
0
0
0
1
0
1
0
1
1
1
1
0
2.4.2 선형과 비선형
XOR 게이트를 퍼셉트론으로 구현 → 불가능
선형으로 분리 가능한 AND, OR과 달리 XOR은 비선형으로만 분리 가능하기 때문
선형 : 직선의 영역
비선형 : 곡선의 영역
OR게이트 영역 구분(회색 영역=0) → 퍼셉트론 O
XOR게이트 영역 구분 → 퍼셉트론 X
“단층 퍼셉트론으로는 XOR 게이트를 표현할 수 없다” ⇒ 다층 퍼셉트론

2.5 다층 퍼셉트론이 출동한다면

다층 퍼셉트론 : 층이 여러 개인 퍼셉트론
가중치를 갖는 층을 하나의 층으로 봄(결과 yy는 층에 포함하지 않음)
2.5.1 기존 게이트 조합하기
AND, NAND, OR 게이트 기호
AND, NAND, OR 게이트 조합으로 표현한 XOR 게이트
x1,x2x_1, x_2을 입력으로 받은 NAND, OR 게이트의 출력이 다시 AND의 입력이 됨
뉴런으로 표현한 XOR의 퍼셉트론
첫 번째 층의 두 뉴런이 입력 신호(x1,x2)(x_1, x_2)를 받아 출력한 값을 두 번째 층으로 보내면, 두 번째 층은 받은 신호(S1,S2)(S_1, S_2)를 입력으로 받아 최종적으로 y\mathrm y를 출력한다.
XOR 게이트 진리표
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
2.5.2 XOR 게이트 구현하기
def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y
Python
복사
XOR(0, 0) # 0 XOR(1, 0) # 1 XOR(0, 1) # 1 XOR(1, 1) # 0
Python
복사

2.6 NAND에서 컴퓨터까지

NAND 조합만으로도 컴퓨터를 만들 수 있다
(The Elements of Computin Systems: Building a Modern Computer from First Principles(The MIT Press, 2005) → 실제 NAND로 테트리스가 작동하는 컴퓨터 제작

2.7. 정리

퍼셉트론은 입출력을 갖춘 알고리즘이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.
퍼셉트론에서는 ‘가중치’와 ‘편향’을 매개변수로 설정한다.
퍼셉트론으로 AND, OR 게이트 등의 논리 회로를 표현할 수 있다.
XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없다.
2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.
단층 퍼셉트론은 직선형 영역만 표현할 수 있고, 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.
다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다.