퍼셉트론:

프랑크 로젠블라트가 1957년에 고안한 알고리즘

인공신경망(딥러닝)의 기원이 되는 알고리즘

원리:

다수의 신호를 입력으로 받아 하나의 신호를 출력

출력하는 신호는 0과 1 두 가지 값만을 가질 수 있음

저자 제작

저자 제작

위의 원을 뉴런 혹은 노드라고 부름

x입력 신호, w는 가중치, y는 출력 신호

각 입력신호에 그에 상응하는 가중치가 곱해지고 정해진 한계(임계값θ)를 넘으면 1, 보다 작으면 0

임계값을 넘는 것을 '뉴런이 활성화한다'라고도 표현

$$

y = \begin{cases} 0 & \text{$(w_1x_1+w_2x_2\le\theta)$}\\ 1 & \text{$(w_1x_1+w_2x_2\gt\theta)$}\end{cases} $$

입력 신호 각각에 고유한 가중치가 부여됨

가중치: 각 신호가 결과에 주는 영향력을 조절하는 매개변수 - 클수록 해당 신호가 더 중요


θ를 편향으로 치환하여 다음과 같은 식으로 출력을 정의할 수 있음

$$

y = \begin{cases} 0 & \text{$(b+w_1x_1+w_2x_2\le0)$}\\ 1 & \text{$(b+w_1x_1+w_2x_2\gt0)$}\end{cases} $$

편향: 뉴런이 얼마나 쉽게 활성화(출력이 1)되느냐를 조정하는 매개변수 - 활성화 함수를 정한 후 결정 추천


*가중치와 편향과 같은 매개변수에 적절한 값을 정하는 것을 학습이라고 함

사람은 퍼셉트론의 구조(모델)을 고민하며 컴퓨터에게 학습할 데이터를 넘겨주는 역할을 함

논리 회로

진리표: 입력 신호와 출력 신호의 대응 표

AND 게이트:

입력이 모두 1인 경우 1을 반환, 나머지 경우는 0을 반환

진리표:

저자 제작

저자 제작

def AND(x1, x2):
	w1, w2, theta = 1, 1, -1.5
	val = w1*x1 + w2*x2 + theta
	if val <= 0:
		return 0
	else:
		return 1
-----------------------
AND(0, 0) 0
AND(1, 0) 0
AND(0, 1) 0
AND(1, 1) 1

NAND 게이트:

입력이 모두 1인 경우 0을 반환, 나머지 경우는 1을 반환 - AND 게이트의 반대

진리표:

저자 제작

저자 제작

def NAND(x1, x2):
	w1, w2, theta = -1, -1, 1.5
	val = w1*x1 + w2*x2 + theta
	if val <= 0:
		return 0
	else:
		return 1
-----------------------
NAND(0, 0) 1
NAND(1, 0) 1
NAND(0, 1) 1
NAND(1, 1) 0

OR 게이트:

입력이 1과 0인 경우 1을 반환, 나머지 경우는 0을 반환

진리표:

저자 제작

저자 제작

def OR(x1, x2):
	w1, w2, theta = 1, 1, -0.5
	val = w1*x1 + w2*x2 + theta
	if val <= 0:
		return 0
	else:
		return 1
-----------------------
OR(0, 0) 0
OR(1, 0) 1
OR(0, 1) 1
OR(1, 1) 1

선형과 비선형 & 다층 퍼셉트론:

직선의 영역 - 선형 영역 (직선 하나로 표기 가능)| 곡선의 영역 - 비선형 영역

AND, NAND, OR는 단층 퍼셉트론으로 이는 비선형 영역을 분리할 수 없는 한계를 지님

다층 퍼셉트론:

단층 퍼셉트론으로 표현하지 못한 것을 층을 늘려 구현할 수 있음

저자 제작 - 경우에 따라 위의 그림은 2층 퍼셉트론 혹은 3층 퍼셉트론 으로 불림

저자 제작 - 경우에 따라 위의 그림은 2층 퍼셉트론 혹은 3층 퍼셉트론 으로 불림

*파이썬은 배열의 시작 인덱스가 0이기 때문에 층 번호를 0부터 표기하는게 편리

XOR 게이트:

배타적 논리합 - 두 입력이 서로 다를 때 1을 반환, 나머지는 0을 반환

진리표:

저자 제작

저자 제작

def XOR(x1, x2):
	s1, s2 = NAND(x1, x2), OR(x1, x2)
	val = AND(s1, s2)
	return val

결론**:**

다층 퍼셉트론은 복잡한 회로를 만들 수 있으며 퍼셉트론의 층이 많아지면 이론적으로 컴퓨터도 만들 수 있음

Ch1Perceptron.ipynb