<데이터 사이언스/Data Science> 1. 퍼셉트론
데이터 사이언스

<데이터 사이언스/Data Science> 1. 퍼셉트론

노션에서 작성한 노트를 HTML형식으로 가져오기 때문에 어색할 수 있습니다.
!잘 보이지 않으시면 오른쪽 밑의 달 모양 버튼을 클릭해주세요!

퍼셉트론:

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

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

원리:

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

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

저자 제작

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

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

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

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

저자 제작

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

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


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

저자 제작

편향: 뉴런이 얼마나 쉽게 활성화(출력이 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층 퍼셉트론 으로 불림

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

XOR 게이트:

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

진리표:

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

결론:

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