딥러닝 입문에 기초를 탄탄히 할수 있는
[밑바닥부터 시작하는 딥러닝] (이하 '밑딥') 책을 보기 시작했다.
1장의 경우는 파이썬 기초 및 numpy와 matplotlib에 대한 내용이므로 생략하도록 한다.
'밑딥'의 실습 및 데이터셋 파일은 아래의 Github 주소에서 다운로드 가능하다. (git clone 등 이용)
github.com/WegraLee/deep-learning-from-scratch
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)등 다양한 조합 조건 충족
2.2.2 NAND게이트와 OR게이트
• 둘 중 하나만이라도 0일때 / 둘 중 하나만이라도 1일때 1출력하는 게이트
•각각 (-0.5, -0.5, -0.7) / (0.5, 0.5, 0.3) 등 여러 조합 가능
•퍼셉트론은 매개변수 값만 적절히 조정하면, AND / 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을 출력하는 게이트
위의 퍼셉트론 (단층 퍼셉트론)으로는 직선으로 영역을 나누기 때문에 구현 불가능
2.4.2 선형과 비선형
XOR게이트는 직선이라는 제약을 없애면(곡선이라면) 시각화로 표현 가능하다.
즉, 다층 퍼셉트론 이용하여 비선형 영역을 만든다면 구현 가능
2.5 다층 퍼셉트론
2.5.1
AND, NAND, OR 게이트를 조합하여 층을 쌓아 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게이트
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)
'Minding's Reading > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] CH. 7 합성곱 신경망(CNN) (0) | 2021.05.09 |
---|---|
[밑바닥부터 시작하는 딥러닝] CH.6 학습 관련 기술들 (0) | 2021.05.09 |
[밑바닥부터 시작하는 딥러닝] CH.5 오차역전파법 (2) | 2021.05.09 |
[밑바닥부터 시작하는 딥러닝] CH.4 신경망 학습 (0) | 2021.04.06 |
[밑바닥부터 시작하는 딥러닝] CH.3 신경망 (0) | 2021.03.15 |