HeYStRanGeR
article thumbnail

(23.11.13)

 

퍼셉트론

- 프랑크 로젠블라트. 1975년 고안

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

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

입력이 2개인 퍼셉트론 예시

-> y가 어떠한 임계값을 넘으면 1을 출력, 넘지 못하면 0을 출력

-> 가중치가 클수록, 해당 신호가 그만큼 중요하다는 것을 의미

 

 

 

논리회로

AND 게이트

 

 

NAND 게이트

 

 

OR 게이트

 

 

XOR 게이트

- 베타적 논리합

- x1, x2 중 하나만 1일 경우에만 1을 출력

-> XOR 게이트의 입력과 출력을 좌표평면에 표현해보면, 어떠한 직선으로 영역으로 나눌 수 없다는 것을 알 수 있다.

====> 퍼셉트론의 한계 !!

 

 

 

AND, NAND, OR 게이트를 조합하여 XOR 게이트를 만들 수 있다.

 

-> AND, OR, NAND 는 단층 퍼셉트론

-> XOR 은 2층 퍼셉트론

 

 

 

 

python 코드 구현

# AND 게이트 구현
def AND(x1, x2):
	w1, w2, theta = 0.5, 0.5, 0.9
	output = w1*x1 + w2*x2
	if output > theta:
		return 1
	else:
		return 0


# NAND 게이트 구현
def NAND(x1, x2):
	w1, w2, theta = -0.5, -0.5, -0.9
	output = w1*x1 + w2*x2
	if output > theta:
		return 1
	else:
		return 0

 

 

 

# threshold (theta) 를 bias (편향) 으로 바꾸어 구현
# AND 게이트 구현
def AND(x1, x2):
	x = np.array([x1, x2])
	w = np.array([0.5, 0.5])
	b = -0.7
	output = np.sum(w*x) + b
	if output > 0:
		return 1
	else:
		return 0


# NAND 게이트 구현
def NAND(x1, x2):
	x = np.array([x1, x2])
	w = np.array([-0.5, -0.5])
	b = 0.9
	output = np.sum(w*x) + b
	if output > 0:
		return 1
	else:
		return 0


# OR 게이트 구현
def OR(x1, x2):
	x = np.array([x1, x2])
	w = np.array([0.5, 0.5])
	b = -0.3
	output = np.xum(w*x) + b
	if output > 0:
		return 1
	else:
		return 0

 

 

 

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

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!