본문 바로가기
Minding's Reading/밑바닥부터 시작하는 딥러닝

[밑바닥부터 시작하는 딥러닝] CH.2 퍼셉트론

by Minding 2021. 3. 14.
728x90
반응형

딥러닝 입문에 기초를 탄탄히 할수 있는

[밑바닥부터 시작하는 딥러닝] (이하 '밑딥') 책을 보기 시작했다.

1장의 경우는 파이썬 기초 및 numpy와 matplotlib에 대한 내용이므로 생략하도록 한다.

 

 

'밑딥'의 실습 및 데이터셋 파일은 아래의 Github 주소에서 다운로드 가능하다. (git clone 등 이용)

github.com/WegraLee/deep-learning-from-scratch

 

WegraLee/deep-learning-from-scratch

『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHub.

github.com


2.1 퍼셉트론이란?

 

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

전류처럼 흐름 (but, 흐른다/안 흐른다 (1 or 0)의 값만 가짐)

 

그림의 원 = 뉴런 or 노드

입력 신호가 보내질 때 각각 고유한 가중치 곱해짐

뉴런에서 보내온 신호가 정해진 한계를 넘어설 때만 1 출력

한계 = 임계값

 

퍼셉트론 수식

 

 

퍼셉트론의 구조

 

2.2.1 단순한 논리회로 - AND게이트

 

AND게이트는 입력이 둘이고 출력은 하나

 

AND게이트는 두 입력이 모두 1일때만 1 출력(그 외에는 0 출력)

 

AND게이트 퍼셉트론으로 표현하기

(w1, w2, θ) 값 정하기 :

(0.5, 0.5, 0.7), (1, 1, 1) 다양한 조합 조건 충족

AND게이트의 진리표

 

2.2.2 NAND게이트와 OR게이트

 

• 둘 중 하나만이라도 0일때 / 둘 중 하나만이라도 1일때 1출력하는 게이트

 

각각 (-0.5, -0.5, -0.7) / (0.5, 0.5, 0.3) 등 여러 조합 가능

 

퍼셉트론은 매개변수 값만 적절히 조정하면, AND / NAND / OR 모두 표현가능

 

학습 이란 적절한 매개변수 값을 정하는 작업

NAND 게이트의 진리표

 

OR게이트의 진리표

 

2.3 퍼셉트론 구현하기 - AND게이트 구현

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

2.3.2 가중치와 편향 도입

 

편향(bias) - 뉴런이 얼마나 쉽게 활성화되는지를 정하는 역할

편향이 -0.1이라면, 가중치를 곱한 값이 0.1 이상일 때 뉴런 활성화

편향이 -20 이라면, 가중치를 곱한 값이 20 이상일 때 뉴런 활성화

편향을 도입한 수식

#가중치와 편향 도입한 AND게이트
def AND(x1, x2)
	x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7 #편향
    if np.sum(x + w) + b <= 0:
    	return 0
    else :
    	return 1

이와 같이 NAND, OR게이트도 편향을 도입하여 코드 작성할 수 있다.

 

2.4 퍼셉트론의 한계

2.4.1 도전! XOR게이트

 

XOR게이트 - '배타적 논리합'

x1과 x2 중 한 쪽이 1일 때만 1을 출력하는 게이트

위의 퍼셉트론 (단층 퍼셉트론)으로는 직선으로 영역을 나누기 때문에 구현 불가능

단층 퍼셉트론의 시각화 : OR게이트

2.4.2 선형과 비선형

XOR게이트는 직선이라는 제약을 없애면(곡선이라면) 시각화로 표현 가능하다.

동그라미와 세모를 나눌 수 있는 곡선

즉, 다층 퍼셉트론 이용하여 비선형 영역을 만든다면 구현 가능

 

2.5 다층 퍼셉트론

2.5.1

AND, NAND, OR 게이트를 조합하여 층을 쌓아 XOR게이트를 만듦.

기존 게이트들을 쌓아서 XOR게이트 표현

파이썬 구현

def XOR(x1, x2):
	s1 = OR(x1, x2)
    s2 = NAND(x1, x2)
    y = AND(s1, s2)
    if y > 0 :
    	return 1
    else :
    	return

다층 퍼셉트론의 구조 - XOR게이트

XOR 퍼셉트론의 구조

0층에서 1층으로, 이어서 1층에서 2층으로 신호가 전달됨

- 동작 서술

1. 0층의 두 뉴런이 입력신호를 받아 1층의 뉴런으로 신호를 보낸다.

2. 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 y를 출력

 

* 위의 그림의 퍼셉트론은 모두 3층으로 구성되지만, 가중치를 갖는 층은 사실 2개뿐이니

해당 책에서는 '2층 퍼셉트론' 이라고 부름. 문헌에 따라 '3층 퍼셉트론'이라 부르기도 함.

 

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

 

2.6 NAND에서 컴퓨터까지

"이론상 2층 퍼셉트론이면 컴퓨터를 만들 수 있다."

The Elements of Computing Systems: Building a Modern Computer from First Principles (The MIT Press, 2005)

 

728x90
반응형

댓글