밑바닥부터 시작하는 딥러닝
Ch.2 퍼셉트론
아꿈사
Cecil
딥러닝이란?
사람의 사고 방식을 컴퓨터에게 가르치는
머신러닝(Machine Learning)의 한 분야
(위키피디아: https://ko.wikipedia.org/wiki/딥_러닝)
머신러닝(Machine Learning)
“Field of study that gives computers the ability to
learn without being explicitly programmed”
- Arthur Samuel (1959)
즉, 명시적인 프로그래밍 과정이 필요 없음.
명시적 프로그램
개발자가 비즈니스 로직(룰)을 분석하여 미리 개발
룰에 따라 주어진 입력을 처리
머신 러닝
룰을 정의하지 않고, 학습할 모델을 정의
학습(Learning) 과정을 통해 룰을 습득
학습된 데이터에 따라 입력을 처리
프로그램
명시적 프로그램 vs. 머신 러닝
입력 데이터 출력 데이터
학습된 모델
입력 데이터 출력 데이터?
(룰이 없음)
머신 러닝은 많은 분야가 있지만
그 중 딥러닝만 보자면..
어떻게 하면 기계가 사람과 같은
사고를 가질 수 있을까? 에서 출발
뉴런(Neuron)
신경계와 신경 조직을 이루는 기본 단위
<출처: http://sebastianraschka.com/Articles/2015_singlelayer_neurons.html ><출처: http://firforest.tistory.com/431>
퍼셉트론(Perceptron, 1957)
뇌의 신경(Neuron)을 모델화
- 다수의 신호(자극)을 입력 받아 하나의 신호를 출력
x1 w1
y> b
x2
w2
퍼셉트론 모델
x: input, w: weight, b: bias
cell
body
activate
function
x1 w1
y> 0
x2
w2
퍼셉트론 모델
w: weight, b: bias
cell
body
activate
function
- b
-b는 + b로 사용 가능
좀 더 간단히
wx + b > 0
w: 가중치, x: 입력, b: 임계치 값
결과가 0보다 크면 참(활성화 함수)
퍼셉트론 활용 문제: AND 게이트
x1
w1
yb
x2
w2
> 0
AND 게이트를 퍼셉트론으로 표현
w1=0.5, w2=0.5, b=-0.7
고정값을 주는 것은
룰을 미리 정해 준것과 동일
그럼 룰을 학습 시키자!
퍼셉트론 학습 과정
1. 임의의 w와 b를 설정
2. 주어진 훈련 데이터를 가지고, 결과 값(y)을 구함
3. 결과값(y)와 실제 결과값(t) 사이의 오차 계산
4. 오차를 줄이는 방향으로 w와 b를 재설정 (학습)
5. 만족할 만한 결과가 나올때까지 2~3 과정을 반복
w, b 학습 방법
x1 x2 t y y - t
0 0 0 1(0.1) 1
0 1 0 1(0.8) 1
1 0 0 1(0.2) 1
1 1 1 1(0.9) 0
w1: 0.1, w2: 0.7, b: 0.1인 경우
y - t > 0일 경우 y값을 작아지도록 조정
y - t < 0일 경우 y값이 커지도록 조정
w1next = w1 - (y-t) 정도면 될듯?
만약, x1이 음수라면 부호가 반대가 되어야함
w1next = w1 - (y - t)*x1
이를 일반화하면
w1next = w1 - lr *(y - t)*x1
bnext = b - lr *(y - t)
lr: Learning rate
y = w1x1 + w2x2 + b
w1: 0.1, w2: 0.7, b: 0.1, lr=0.1인 경우
w, b는 학습하기 전에 초기값 결정
lr은 학습중에 상황에 따라 수정
lr과 같은 변수를 하이퍼 파라미터라 함
논리 OR, NAND 게이트
NAND
x1
0.5
y-0.3
x2 0.5
> 0
OR
x1
-0.5
y0.7
x2 -0.5
> 0
50 밑바닥부터 시작하는 딥러닝
NAND 게이트를 표현하려면 예를 들어 (w1
, w2
, θ) = (-0.5, -0.5, -0.7) 조합이 있습니다
(다른 조합도 무한히 있지요). 사실 AND 게이트를 구현하는 매개변수의 부호를 모두 반전하
기만 하면 NAND 게이트가 됩니다.
같은 흐름에서 [그림 2-4]의 OR 게이트도 생각해봅시다. OR 게이트는 입력 신호 중 하나 이
상이 1이면 출력이 1이 되는 논리 회로입니다. 이 OR 게이트의 매개변수는 어떻게 설정하면
될까요? 생각해보세요!
그림 2-4 OR 게이트의 진리표
여기서 퍼셉트론의 매개변수 값을 정하는 것은 컴퓨터가 아니라 우리 인간입니다. 인간이 직접 진
리표라는 ‘학습 데이터’를 보면서 매개변수의 값을 생각했습니다. 기계학습 문제는 이 매개변수의 값을 정하
는 작업을 컴퓨터가 자동으로 하도록 합니다. 학습이란 적절한 매개변수 값을 정하는 작업이며, 사람은 퍼셉
트론의 구조(모델)를 고민하고 컴퓨터에 학습할 데이터를 주는 일을 합니다.
논리 XOR 게이트
x1 ?
y?
x2 ?
단일 퍼셉트론으로 해결할 수 없음.
XOR
퍼셉트론의 한계
•XOR과 같은 문제를 풀기 위해서는
MLP(Muti-Layer Perceptrons)이 필요함
•지구상의 누구도 MLP를 학습시킬수 없다
- Marbin Minsky 1969.
x1
-0.5
0.7
x2
-0.5
0.7
-0.5
0.7
0.7
y-0.5
0.7
NAND
OR
AND
MLP: XOR 게이트
2층 퍼셉트론을 XOR 표현이 가능
다층 퍼셉트론을 이용하면 복잡한 문제 해결 가능 But, 학습이 불가
그렇다면, 퍼셉트론은 무용지물인가?
만약 이를 해결할 수 있다면...
NAND 게이트에서 컴퓨터까지
NAND 게이트의 조합만으로 컴퓨터를 만들 수 있음
즉, MLP = 컴퓨터
그럼 얼마나 층을 깊게 하면 될까?
이론상으로 2층 퍼셉트론이면 가능(시그모이드 사용)
이 장은 예고편입니다.
딥러닝은 다음 장부터 시작!!
References
•김성훈. 모두를 위한 머신러닝/딥러닝 강의, https://hunkim.github.io/ml
•사이코 고키. 밑바닥부터 시작하는 딥러닝(이복연 옮김). 서울시 마포구 양
화로 한빛미디어, 2017.
•스티븐 마슬랜드. 알고리즘 중심의 머신러닝 가이드(강전형 옮김). 경기도
파주시 회동길 제이펍, 2016
•오카타니 타카유키. 딥러닝 제대로 시작하기(심효섭 옮김). 경기도 파주시
회동길 제이펍, 2016.
•Sebastian Raschka. Single-Layer Neural Networks and Gradient
Descent, http://sebastianraschka.com/Articles/
2015_singlelayer_neurons.html

밑바닥부터시작하는딥러닝 Ch2

  • 1.
    밑바닥부터 시작하는 딥러닝 Ch.2퍼셉트론 아꿈사 Cecil
  • 2.
    딥러닝이란? 사람의 사고 방식을컴퓨터에게 가르치는 머신러닝(Machine Learning)의 한 분야 (위키피디아: https://ko.wikipedia.org/wiki/딥_러닝)
  • 3.
    머신러닝(Machine Learning) “Field ofstudy that gives computers the ability to learn without being explicitly programmed” - Arthur Samuel (1959) 즉, 명시적인 프로그래밍 과정이 필요 없음.
  • 4.
    명시적 프로그램 개발자가 비즈니스로직(룰)을 분석하여 미리 개발 룰에 따라 주어진 입력을 처리
  • 5.
    머신 러닝 룰을 정의하지않고, 학습할 모델을 정의 학습(Learning) 과정을 통해 룰을 습득 학습된 데이터에 따라 입력을 처리
  • 6.
    프로그램 명시적 프로그램 vs.머신 러닝 입력 데이터 출력 데이터 학습된 모델 입력 데이터 출력 데이터? (룰이 없음)
  • 7.
    머신 러닝은 많은분야가 있지만 그 중 딥러닝만 보자면..
  • 8.
    어떻게 하면 기계가사람과 같은 사고를 가질 수 있을까? 에서 출발
  • 9.
    뉴런(Neuron) 신경계와 신경 조직을이루는 기본 단위 <출처: http://sebastianraschka.com/Articles/2015_singlelayer_neurons.html ><출처: http://firforest.tistory.com/431>
  • 10.
    퍼셉트론(Perceptron, 1957) 뇌의 신경(Neuron)을모델화 - 다수의 신호(자극)을 입력 받아 하나의 신호를 출력
  • 11.
    x1 w1 y> b x2 w2 퍼셉트론모델 x: input, w: weight, b: bias cell body activate function
  • 12.
    x1 w1 y> 0 x2 w2 퍼셉트론모델 w: weight, b: bias cell body activate function - b -b는 + b로 사용 가능
  • 13.
    좀 더 간단히 wx+ b > 0 w: 가중치, x: 입력, b: 임계치 값 결과가 0보다 크면 참(활성화 함수)
  • 14.
    퍼셉트론 활용 문제:AND 게이트 x1 w1 yb x2 w2 > 0 AND 게이트를 퍼셉트론으로 표현 w1=0.5, w2=0.5, b=-0.7
  • 15.
    고정값을 주는 것은 룰을미리 정해 준것과 동일 그럼 룰을 학습 시키자!
  • 16.
    퍼셉트론 학습 과정 1.임의의 w와 b를 설정 2. 주어진 훈련 데이터를 가지고, 결과 값(y)을 구함 3. 결과값(y)와 실제 결과값(t) 사이의 오차 계산 4. 오차를 줄이는 방향으로 w와 b를 재설정 (학습) 5. 만족할 만한 결과가 나올때까지 2~3 과정을 반복
  • 17.
    w, b 학습방법 x1 x2 t y y - t 0 0 0 1(0.1) 1 0 1 0 1(0.8) 1 1 0 0 1(0.2) 1 1 1 1 1(0.9) 0 w1: 0.1, w2: 0.7, b: 0.1인 경우 y - t > 0일 경우 y값을 작아지도록 조정 y - t < 0일 경우 y값이 커지도록 조정 w1next = w1 - (y-t) 정도면 될듯? 만약, x1이 음수라면 부호가 반대가 되어야함 w1next = w1 - (y - t)*x1 이를 일반화하면 w1next = w1 - lr *(y - t)*x1 bnext = b - lr *(y - t) lr: Learning rate y = w1x1 + w2x2 + b
  • 18.
    w1: 0.1, w2:0.7, b: 0.1, lr=0.1인 경우 w, b는 학습하기 전에 초기값 결정 lr은 학습중에 상황에 따라 수정 lr과 같은 변수를 하이퍼 파라미터라 함
  • 19.
    논리 OR, NAND게이트 NAND x1 0.5 y-0.3 x2 0.5 > 0 OR x1 -0.5 y0.7 x2 -0.5 > 0 50 밑바닥부터 시작하는 딥러닝 NAND 게이트를 표현하려면 예를 들어 (w1 , w2 , θ) = (-0.5, -0.5, -0.7) 조합이 있습니다 (다른 조합도 무한히 있지요). 사실 AND 게이트를 구현하는 매개변수의 부호를 모두 반전하 기만 하면 NAND 게이트가 됩니다. 같은 흐름에서 [그림 2-4]의 OR 게이트도 생각해봅시다. OR 게이트는 입력 신호 중 하나 이 상이 1이면 출력이 1이 되는 논리 회로입니다. 이 OR 게이트의 매개변수는 어떻게 설정하면 될까요? 생각해보세요! 그림 2-4 OR 게이트의 진리표 여기서 퍼셉트론의 매개변수 값을 정하는 것은 컴퓨터가 아니라 우리 인간입니다. 인간이 직접 진 리표라는 ‘학습 데이터’를 보면서 매개변수의 값을 생각했습니다. 기계학습 문제는 이 매개변수의 값을 정하 는 작업을 컴퓨터가 자동으로 하도록 합니다. 학습이란 적절한 매개변수 값을 정하는 작업이며, 사람은 퍼셉 트론의 구조(모델)를 고민하고 컴퓨터에 학습할 데이터를 주는 일을 합니다.
  • 20.
    논리 XOR 게이트 x1? y? x2 ? 단일 퍼셉트론으로 해결할 수 없음. XOR
  • 21.
    퍼셉트론의 한계 •XOR과 같은문제를 풀기 위해서는 MLP(Muti-Layer Perceptrons)이 필요함 •지구상의 누구도 MLP를 학습시킬수 없다 - Marbin Minsky 1969.
  • 22.
    x1 -0.5 0.7 x2 -0.5 0.7 -0.5 0.7 0.7 y-0.5 0.7 NAND OR AND MLP: XOR 게이트 2층퍼셉트론을 XOR 표현이 가능 다층 퍼셉트론을 이용하면 복잡한 문제 해결 가능 But, 학습이 불가
  • 23.
  • 24.
    NAND 게이트에서 컴퓨터까지 NAND게이트의 조합만으로 컴퓨터를 만들 수 있음 즉, MLP = 컴퓨터 그럼 얼마나 층을 깊게 하면 될까? 이론상으로 2층 퍼셉트론이면 가능(시그모이드 사용)
  • 25.
  • 26.
    References •김성훈. 모두를 위한머신러닝/딥러닝 강의, https://hunkim.github.io/ml •사이코 고키. 밑바닥부터 시작하는 딥러닝(이복연 옮김). 서울시 마포구 양 화로 한빛미디어, 2017. •스티븐 마슬랜드. 알고리즘 중심의 머신러닝 가이드(강전형 옮김). 경기도 파주시 회동길 제이펍, 2016 •오카타니 타카유키. 딥러닝 제대로 시작하기(심효섭 옮김). 경기도 파주시 회동길 제이펍, 2016. •Sebastian Raschka. Single-Layer Neural Networks and Gradient Descent, http://sebastianraschka.com/Articles/ 2015_singlelayer_neurons.html