딥러닝 원리와 프로그래밍 강의 --> https://pg.mycampus.io/
#CNN #딥러닝 #keras #tensorflow #kaggle
1 of 88
More Related Content
마이캠퍼스 딥러닝스쿨(한돌) 파트#2-딥러닝핵심
1. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
슬로우캠퍼스 딥러닝 스쿨
– 딥러닝 핵심원리 파트
한대희 @ 슬로우캠퍼스
딥러닝 교육/컨설팅
daehee@slowcampus.com
http://medium.com/@slowcampus
http://slowcampus.com
Just Start up your Deep Learning for your Future !
2. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
슬로우캠퍼스
SLOW는 SW(소프트웨어) 입니다
2
슬로우는 학습과 성장을 의미합니다
홈페이지 http://slowcampus.com
블로그 http://medium.com/@slowcampus
3. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
딥러닝 스쿨: 딥러닝 Tensorflow & Keras 1일 완성
• 딥러닝 워크샵 클릭
• 한대희 강사 클릭
• 딥러닝 참가 클릭
3
딥러닝
배우고
달리자
7. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Biological Neuron
7http://cs231n.github.io/neural-networks-1/
수신부:
가지돌기(수상돌기)
발신(전달)부:
축삭
8. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
수상돌기, 신경세포체, 축삭
8
https://ko.wikipedia.org/wiki/%EC%B6%95%EC%82%AD
9. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
시냅스 : 뉴런 2개의 연결 부위
9
https://en.wikipedia.org/wiki/Synapse
10. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Neuron 신호전달 흉내내기
• X0 - 뉴런 A의 출력
• W0 – 뉴런 A와 B의 연결 강도
• B0 – 뉴런 B내부 bias
• Activation function – 뉴런
B의 firing rate
10
12. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Layers, Nodes, Edges
12
x1
x2
x3
y1
y2
y3
Wi Wibi
bi
bi
input hidden output
13. Artificial NN - 계산
• Node: Neuron
• Edge: Neuron간의 연결강도 - Weights
• input에 weight을 곱하고, 전체를 합하고, 활성화 함수를 통해 출력값 결정
13
14. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
실제값(학습데이터)와 모델의 산출값의 차이 최소화
14
NN
모델
X: 실제 입력 데이타 YREAL: 실제 출력 데이터 (target)
YPR: 학습 후 NN의 출력값 (predicted)
오차, cost, loss
15. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
오차 - mean squared error (MSE)
15
16. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
참고: 통계학 용어
• Truth == Yreal : 실제 데이터
• Estimate == Ymodel: 모델의 예
측값(predict)
16
https://en.wikipedia.org/wiki/Linear_regression
18. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Approximation Theory - 수학
18
In mathematics, approximation theory is concerned with
how functions can best be approximated with simpler functions,
and with quantitatively characterizing the errors introduced
thereby.
19. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Universal Approximation Theorem – Neural Network
• NN(MLP)내부의 노드의 활성화 함수인 sigmoid 함수의 조합으
로 모든 함수(continuous function)를 근사화할 수 있음을 증명
함 – George Cybenko (1989)
• 특정 활성화 함수보다는 feedforward 구조 자체의 특성에 의해
universal approximator되는것을 증명함 -Kurt Hornik (1991)
19
https://en.wikipedia.org/wiki/Universal_approximation_th
eorem
21. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
딥러닝(NN)의 학습 기본 원리
21
22. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Training == Optimization
• Loss function값을 최소화하는 optimization 과정
• Loss function은 각 layer의 weights, bias 연산의 조합
• Loss function을 최소화하기 위한 gradient 계산
• 데이터가 n차수임
• gradient == vector of partial derivatives
22
23. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Back-propogation, Derivatives, Gradient Descent
• We use derivatives to iteratively make our way the minimum
point using gradient descent.
23
24. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
데이터는 Vector, Matrix 형태
• 딥러닝(머신러닝)은 학습데이터 vector, matrix 와의 오차를 최
소화하는 과정이다.
24
25. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Loss는 Weights의 함수.
25
Loss J(W) 를 최소화하는 W를 찾자
26. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Optimization
• 개미(ball)가 가장 낮은 지점을 찾아가는 것.
26
27. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient (단순화한 버전)
• Calculate slope at current position
• If slope is negative, move right
• If slope is positive, move left
• (Repeat until slope == 0)
27
28. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient (기울기 이용하는 버전)
Naive Gradient Descent:
• Calculate "slope" at current ”w" position
• Change w by the negative of the slope.
• w ß w - slope
• (Repeat until slope == 0)
28
29. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Optimization: W update 과정
29
W ß W – StepSize * Gradient(W) * J(W)
32. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Global optima, Local optima
32
33. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent (경사하강법) 단점
• relatively slow close to the
minimum
• Local minima 빠지기 쉽다
33
34. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent 종류
• Standard (Batch) gradient descent
• 학습데이터 전체에 대해 gradient descent 계산
• Stochastic gradient descent (SGD)
• 학습데이터 한개에 대해 gradient descent 수행 (one by one)
• Mini-batch gradient descent
• 학습데이터 N개에 대해 gradient descent 수행
• N: mini-batch 개수. 50~256 정도
34
http://ruder.io/optimizing-gradient-
descent/index.html#stochasticgradientdescent
35. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
SGD (Stochastic Gradient Descent)
• Fluctuations 발생하기 쉬움.
35
36. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Stochastic Gradient Descent
36
http://ruder.io/optimizing-gradient-
descent/index.html#stochasticgradientdescent
• 단점: 정확한 minimum으로의 수렴이 어려울 수 있음.
• 장점: local minima에서 jump해서 나올 수 있음.
37. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Mini batch Gradient Descent
37
http://ruder.io/optimizing-gradient-
descent/index.html#stochasticgradientdescent
39. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Optimization: W update 과정
39
W ß W – StepSize * Gradient(W) * J(W)
40. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent Optimization 종류들
• Momentum
• Adagrad
• Adadelta
• RMSprop
• Adam
• AdaMax
• Nadam
40
http://ruder.io/optimizing-gradient-
descent/index.html#stochasticgradientdescent
41. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Momentum
• ‘관성’과 Gradient를 혼합하여 이동하는 방식
• W 변화량 == 과거에 이동하던 방향 + Gradient
• SGD가 Oscillation 현상에서 벗어나도록 도
41
à
42. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Momentum – 속도향상, Local Minima 탈출
42
43. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Nesterov Accelerated Gradient (NAG)
43
44. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Nesterov Accelerated Gradient (NAG)
• Gradient 계산하는 지점을 달리함.
• momentum step을 먼저 이동한 자리에서의 gradient 계
• Brake 역할
44
45. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Adagrad(Adaptive Gradient)
• 변수들을 update할 때 각각의 변수마다 step size를 다르게 설
정해서 이동하는 방식
• 지금까지 많이 변화했던 변수들은 step size를 작게 하자’
45
46. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Adagrad(Adaptive Gradient)
• Neural Network의 parameter가 k개라고 할 때,
• Gt는 k차원 벡터
• ‘time step t까지 각 변수가 이동한 gradient의 sum of
squares’ 를 저장한다.
• Gt의 루트값에 반비례한 크기로 이동을 진행
• Gt의 값들은 계속해서 증가 à 학습이 오래 진행될수로 거의 움
직이지 않게 되는 단점
46
47. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
RMSProp
• 딥러닝의 대가 제프리 힌톤이 제안
• Adagrad의 단점을 해결하기 위한 방법
• Gt 부분을 합이 아니라 지수평균으로 바꾸어서 대체한 방법
• Gt가 무한정 커지지는 않으면서 최근 변화량의 변수간 상대적
인 크기 차이는 유지
47
48. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
AdaDelta (Adaptive Delta)
• RMSProp과 유사하게 AdaGrad의 단점을 보완하기 위해 제안
• RMSProp과 동일하게 G를 구할 때 합을 구하는 대신 지수평균
을 구한다
• step size의 변화값의 제곱을 가지고 지수평균 값을 사용
48
49. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
AdaDelta (Adaptive Delta)
• Gradient Descent와 같은 first-order optimization 대신
Second-order optimization을 approximate 하기 위한 방법
• Newton’s method와 유사 효과
49
50. Adam (Adaptive Moment Estimation)
• RMSProp과 Momentum 방식을 합친 의미
50
보통 β1는 0.9, β2는 0.999, ϵ 는 10−8 정도의 값을 사용
51. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent Optimization at Long Valley
• SGD – 너무느려 내려가지 못함
51
원본 - https://imgur.com/a/Hqolp
정리 - http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-
Descent-Algorithm-Overview.html
52. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent Optimization at Beale's Function
• SGD – 해를 찾지 못함
52
원본 - https://imgur.com/a/Hqolp
정리 - http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-
Descent-Algorithm-Overview.html
53. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Gradient Descent Optimization at Saddle Point
• SGD – 해를 찾지 못함
53
원본 - https://imgur.com/a/Hqolp
정리 - http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-
Descent-Algorithm-Overview.html
55. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
딥러닝에서의 입력/출력값의 표현
• 입력값, 출력값의 범위가 한정되는 것이 유리
• 문자는 숫자형태로 변환함
• ’서울’ à 1, ’부산’ à 2, …
• Continuous Value: 0~1 범위, -1~1 범위
• Discrete Value: 0 or 1
55
56. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Output Layer의 Node 출력값 방식 1
56
x1
x2
x3
최종결과:
1, 2, 3
(Dog, Cat, Horse)
y
57. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Output Layer의 Node 출력값 방식 2
57
x1
x2
x3
Yes/No (Dog)y1
y2
y3
Yes/No (Cat)
Yes/No (Horse)
58. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
one-hot encoding (학습 데이터의 표현 방법)
58
• NN output layer의 only one node만 hot(1)하도록 하는 형태
60. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
one-hot encoding
• 3이라는 값을 NN에서 표현하는 스타일 2가지
• 노드의 출력값이 3이 되도록.
• 한 노드가 여러 종류의 값을 출력할 수 있는 스타일
• 3개의 노드로 표현.
• 1번 노드, 2번 노드, 3번 노드 중 누가 불이 들어오냐?
• 출력값을 0 or 1로 한정하고, 그 종류만큼 노드 갯수를 만드는 스타일
60
61. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
one-hot encoding
• 3이라는 값을 NN에서 표현하는 스타일 2가지
• 노드의 출력값이 3이 되도록.
• 한 노드가 여러 종류의 값을 출력할 수 있는 스타일
• 3개의 노드로 표현.
• 1번 노드, 2번 노드, 3번 노드 중 누가 불이 들어오냐?
• 출력값을 0 or 1로 한정하고, 그 종류만큼 노드 갯수를 만드는 스타일
61
66. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
ReLU (Rectified Linear Unit)
66
67. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Sigmoid vs ReLU
67
68. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Variants of ReLU
68
https://github.com/BIGBALLON/Deep-learning-and-practices/tree/master/Lab4-NIN2
69. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Leaky ReLU
• 음의 영역을 다시 살린 것
69
70. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Exponential Linear Units (ELU)
70
71. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
SoftExponential
71
72. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
SWISH activation
72
73. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
SWISH activation
73
74. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Softmax 가 필요한 상황
74
stanford cs http://cs231n.github.io/linear-classify/
75. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Softmax
75
import numpy as np
f = np.array([1, 2, 3])
p = np.exp(f) / np.sum(np.exp(f))
print(p)
https://kakalabblog.wordpress.com/2017/04/03/softmax-
%EC%A0%95%EB%A6%AC/
import math
A = [0, 1, 2]
sum_of_exp = sum([math.exp(x) for x in A])
SM = [math.exp(x)/sum_of_exp for x in A]
76. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Softmax
76
https://kakalabblog.wordpress.com/2017/04/03/softmax-
%EC%A0%95%EB%A6%AC/
softmax
[1, 2, 3] [0.09, 0.25, 0.66]
합계 == 1.0
77. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Softmax
77
import numpy as np
A = np.array([1, 2, 3])
SM = np.exp(A) / np.sum(np.exp(A))
https://kakalabblog.wordpress.com/2017/04/03/softmax-
%EC%A0%95%EB%A6%AC/
import math
A = [0, 1, 2]
sum_of_exp = sum([math.exp(x) for x in A])
SM = [math.exp(x)/sum_of_exp for x in A]
78. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Cross Entropy
78
• Entropy - an optimal number of bits per transmission. The
optimal number of bits is known as entropy.
• Cross Entropy - the number of bits we'll need if we encode
symbols from y using the wrong tool ŷ.
79. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Cross Entropy Loss
• loss function for logistic problem: cross entropy 의 평균
• y – real data
• y’ – predicted data
• logistic loss, log loss
79
https://en.wikipedia.org/wiki/Cross_entropy
80. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
로그 그래프 (cross entropy)
• x < 1 이면 ln(x)은 음이다.
80
86. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
Autoencoder
• input X가 output Y와 같은 형태로 구성
• NN 내부에 데이터의 숨은 속성이 인코딩
• 비고) 압축 알고리즘, PCA
86
87. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
semi-supervised
• 의미1 : supervised + unsupervised
• 의미2 : unsupervised 문제를 supervised형태로 변환하여 접근하는 방식
87
88. 배포금지 J 외부자료외 저작권 보호 딥러닝스쿨 @ 슬로우캠퍼스,
LSTM 학습데이터 구성
88
• 1초 데이터 구성: [속도, RPM, 브레이크, 위도]의 4차원 데이터
• 20초 단위의 윈도우를 입력 및 출력으로 하여 LSTM을 학습시킴
• 1,000초 동안의 운행데이터에서는 (1,000 – 20 + 1) 개의 데이터 묶음(window) 가능
1초 단위 DTG데이터들
i+1 초 i+19 초i 초 …
i+2 초 i+20 초i+1 초 …
...
n+2 초 n+20 초n+1 초 …
Window Size: 20초
속도, RPM, 브레이크, 위도