2. 누구나 TensorFlow!
J. Kang Ph.D.
GIST EEC Ph.D. (2015)
신호처리 과학자, 삽질러
좋아하는 것:
통계적 신호처리 / 무선통신 신호처리
임베디드 오디오 DSP C/C++라이브러리 구현
머신러닝 기반 오디오 신호처리 알고리즘
배워서 남주기
2
대표논문:
Jaewook Kang, et al., "Bayesian Hypothesis Test using Nonparametric Belief Propagation for
Noisy Sparse Recovery," IEEE Trans. on Signal process., Feb. 2015
Jaewook Kang et al., "Fast Signal Separation of 2D Sparse Mixture via Approximate Message-
Passing," IEEE Signal Processing Letters, Nov. 2015
Jaewook Kang (강재욱)
소 개
3. 누구나 TensorFlow!
J. Kang Ph.D. 3
일 정 목표
시
간
세부 내 용
Module
3
직선으로 데이터 구분하기
Logistic classification
- Introduction to Linear Classification
- Naïve Bayes (NB)
- Linear Discriminent Analysis (LDA)
- Logistic Regression (LR)
- NB vs LDA vs LR
- LAB5: Linear Classication in TensorFlow
Module
4
딥러닝의 선조
뉴럴 네트워크
4
- 뉴런을 수학으로 표현하기
- Feed-Forward Neural Networks
- Linear 뉴런의 한계와 Activation 함수
- Gradient descent Revisit
- Backpropagation algorithm
- LAB6: Multi-layer neural net with Backpropagation in
TensorFlow
4. 누구나 TensorFlow!
J. Kang Ph.D.
GitHub link
GitHub link (all public)
– https://github.com/jwkanggist/EveryBodyTensorFlow
Another GitHub link (Not mine)
– https://github.com/aymericdamien/TensorFlow-Examples
4
5. 누구나 TensorFlow!
J. Kang Ph.D.
1. 딥러닝의 조상, 뉴럴 네트워크
딥러닝을 위해서 한우물을 판 연구자들의 이야기
- 뉴런을 수학으로 표현하기
- Feed-Forward Neural Networks
- Linear 뉴런의 한계와 Activation 함수
- Gradient descent Revisit
- Backpropagation algorithm
- LAB6: 2-layer neural net in TensorFlow
5
6. 누구나 TensorFlow!
J. Kang Ph.D.
Reference :
6
Fundamental of Deep
Learning
1st Edition, 2017 O’Reilly
Nikhil Buduma
7. 누구나 TensorFlow!
J. Kang Ph.D.
훌륭한 관련 한국어 블로그
진섭님 블로그
– https://mathemedicine.github.io/deep_learning.html
솔라리스의 인공지능 연구실
– http://solarisailab.com/archives/1206
테리님의 블로그
– http://slownews.kr/41461
7
8. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뇌의 가장 기본 단위
– 10,000 개 이상의 뉴런의 결합으로 뇌가 형성
8
이미지출처: http://ib.bioninja.com.au/standard-level/topic-6-human-
physiology/65-neurons-and-synapses/neurons.html
9. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뇌의 가장 기본 단위
9
신호입력 증폭 결합 전환 신호출력
이미지출처: http://ib.bioninja.com.au/standard-level/topic-6-human-
physiology/65-neurons-and-synapses/neurons.html
10. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
Artificial Neuron (1958)
10
신호입력 증폭 결합 전환 신호출력
Bias, b
이미치출처: https://hackernoon.com/overview-of-artificial-neural-
networks-and-its-applications-2525c1addff7
11. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
Artificial Neuron (1958)
11
신호입력 증폭 결합 전환 신호출력
x2
x3 w3
w2
w1
f (×) y
Bias, b
x1
이미치출처: https://hackernoon.com/overview-of-artificial-neural-
networks-and-its-applications-2525c1addff7
13. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
Artificial Neuron (1958)
13
y = f (Z = XW +b)
Activation
Activation
function
Logit
Input Neuron
weight
Neuron
bias
15. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뉴런을 러닝한다는 것
– 밀당 example: 연애 성공하려면 밀당의 비율을 어떻케 해야하는가?
– Y : 성공확률
– X: 각 행동에 드는 힘
– W: 성공을 위한 행동 비율
15
당
x1 x2
y
Bias, b
w2w1
밀
16. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뉴런을 러닝한다는 것
– 밀당 example: 연애 성공하려면 밀당의 비율을 어떻케 해야하는가?
– Linear activation 함수를 가정해 보자 y= z = f(z)
– Data: t= 1.0, x1= 2.0, x2 = 3.0
– Cost: e = ½ ( t – y)^2, b=0
– Find w1 and w2
16
밀 당
x1 x2
y
Bias, b
w2w1
17. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뉴런을 러닝한다는 것
– 밀당 example: 연애 성공하려면 밀당의 비율을 어떻케 해야하는가?
– Linear activation 함수를 가정해 보자 y= z = f(z)
– Data: t= 1.0, x1= 2.0, x2 = 3.0
– Cost: e = ½ ( t – y)^2, b=0
– Find w1 and w2
What’s your answer?
17
Model : y = w1x1 + w2 x2
Cost: e =
1
2
(t - y)2
¶e
¶w1
= -x1(t - y),
¶e
¶w2
= -x2 (t - y)
-x1(t - w1x1 - w2 x2 ) = 0
-x2 (t - w1x1 - w2 x2 ) = 0
ì
í
î
(w1,w2 ) = ?
18. 누구나 TensorFlow!
J. Kang Ph.D.
The Neuron
뉴런을 러닝한다는 것
– (X,Y) 데이터값을 주어서 W,b 값을 찾는것
– 각 입력에 어느정도에 비중을 주어서 결합해야하는지 아는것
18
밀 당
x1 x2
y
Bias, b
? ?
19. 누구나 TensorFlow!
J. Kang Ph.D.
Activation Functions
자극(logit, Z) 의 Activation를 어떻케 모델링할까?
19
x1 x2
y
Bias, b
w2w1
?
20. 누구나 TensorFlow!
J. Kang Ph.D.
Activation Functions
Sigmoid function
– Logit Z를 [0,1]사이로 mapping
– Logit Z를 확률값으로 mapping할때 사용
• Logistic Regression
20
f (z) =
1
1+ exp(-z)
Logit Z
21. 누구나 TensorFlow!
J. Kang Ph.D.
Activation Functions
Tanh
– Logit Z를 [-1,+1]사이로 mapping
– Activation의 중심값이 ‘0’이 된다.
• Multi-layer를 쌓을때 hidden layer에서 bias가 생기지 않는다.
21
f (z) = tanh(z)
Logit Z
f (z) = tanh(z)
22. 누구나 TensorFlow!
J. Kang Ph.D.
Activation Functions
ReLU (Restricted Linear unit)
– Sigmoid, tanh 함수는 입력값이 양끝에 근접하면 기울기가 ‘0’에
가까워짐 Vanishing Gradient문제 (TBU)
22
f (z) = max(0,z)
Logit Z
f (z) = max(0,z)
23. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
그런 뉴런을 엮어서 쌓아보자
– 사람의 뇌 또한 계층 구조를 가지고 있다.
23
X =[x1,x2,x3,x4 ]
Y =[y1,y2,y3,y4 ]
규칙:
- No connection in the same layer
- No backward connection
수식 모델링:
W1
W2
24. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
그런 뉴런을 엮어서 쌓아보자
– 사람의 뇌 또한 계층 구조를 가지고 있다.
24
X =[x1,x2,x3,x4 ]
Y =[y1,y2,y3,y4 ]
규칙:
- No connection in the same layer
- No backward connection
수식 모델링:
W1
W2
Y = f (W2 f (W1X +b1)+b2 )
25. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
그런 뉴런을 엮어서 쌓아보자
– 사람의 뇌 또한 계층 구조를 가지고 있다.
25
Y =[y1,y2,y3,y4 ]
Input Layer:
- 데이터 입력 X을 받는 계층
- tf.placeholder()가 물리는 곳
W1
W2
26. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
그런 뉴런을 엮어서 쌓아보자
– 사람의 뇌 또한 계층 구조를 가지고 있다.
26
X =[x1,x2,x3,x4 ]
Output Layer:
- 데이터 출력 Y을 내보내는 곳
- tf.placeholder()가 물리는 곳
W1
W2
27. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
그런 뉴런을 엮어서 쌓아보자
– 사람의 뇌 또한 계층 구조를 가지고 있다.
27
X =[x1,x2,x3,x4 ]
Y =[y1,y2,y3,y4 ]
Hidden Layer:
- Input layer와 output layer
사이에 있는 모든 계층
- X로 부터 학습에 필요한 feature를
스스로 뽑아낸다.
- 중간 표현단계인 feature map을
생성
- Hidden layer가 많을 수록 섬세하게
Feature를 뽑을 수 있다.
W1
W2
28. 누구나 TensorFlow!
J. Kang Ph.D.
Feed-Forward Neural Networks
Google’s good example site
– http://playground.tensorflow.org/
– 가지고 놀아보면 더 이해가 잘될것!
• Logistic regression (1-layer neural net classification)
• Neural Net
28
29. 누구나 TensorFlow!
J. Kang Ph.D.
How to Train Neural Net?
어떻케 Neural net를 훈련시킬 것인가?
– 기존방법1 : Maximum likelihood est. + analytical
solution
• In many cases, No analytical solution exist
• Non-linearity of activation function No closed form solution
– 기존방법2: Maximum likelihood est. + Numerical solver
• An Example: Logistic regression based classification
– Cost: Cross-entropy function (non-linear)
– Solver:
» Gradient descent solvers: cost의 큰 경사를 따라서
무족건 내려가는것 (first-order method)
» Newton-Raphson solvers: cost의 경사가 ’0’ 인 지점을
찾는 것 (second order method, good for convex problems)
29
30. 누구나 TensorFlow!
J. Kang Ph.D.
Gradient Descent Revisit
Gradient Descent를 다시 보자
30
Error
W n+1
=W n
-aÑJ(W n
)
J(W): Error cost
31. 누구나 TensorFlow!
J. Kang Ph.D.
Gradient Descent Revisit
Gradient Descent를 다시 보자
두가지만 기억하세요!!
– 기울기 방향 찾기: The delta rule
– 기울기 보폭 찾기: learning rate
31
W n+1
=W n
-aÑJ(W n
)
J(W): Error cost기울기 보폭
Learning rate 기울기
방향
Gradient
32. 누구나 TensorFlow!
J. Kang Ph.D.
Gradient Descent Revisit
Gradient Descent를 다시 보자
– 기울기 방향 찾기: The delta rule
– W의 각 성분방향으로 얼마나 가야 하는가?
• 각 weight로 error cost 편미분한다.
• sum-of-square cost + linear activation인 경우
32
-ÑJ(W) =[Dw1,Dw2,...,DwM ]
Dwk = -
¶J(W )
¶wk
= -
¶
¶wk
1
2
(t(i)
- y(i)
)2
i
å
æ
èç
ö
ø÷
= xk
(i)
(t(i)
- y(i)
)
i
å
33. 누구나 TensorFlow!
J. Kang Ph.D.
Gradient Descent Revisit
어떻케 Neural net를 훈련시킬 것인가?
– 기울기 방향 찾기: The delta rule
– W의 각 성분방향으로 얼마나 가야 하는가?
• 각 weight로 error cost 편미분한다.
• cross-entropy cost + sigmoid activation인 경우
33
-ÑJ(W) =[Dw1,Dw2,...,DwM ]
34. 누구나 TensorFlow!
J. Kang Ph.D.
Gradient Descent Revisit
어떻케 Neural net를 훈련시킬 것인가?
– 기울기 보폭 찾기: learning rate
• 너무 크면 발산
• 너무 작으면 평생 걸림 + 연산량 증가
34
35. 누구나 TensorFlow!
J. Kang Ph.D.
Neural Net의 training
기존 ML est. + Gradient Descent의 한계
– Hidden Layer 수가 늘어남에 따라서 학습해야할 파라메터 W의
차원이 매우 늘어난다.
– “ML est + numerical solvers” 조합으로 학습하기에는 unknown
파라미터(W) 의 개수가 너무 많다.
• 복잡도가 매우 늘어난다.
35
Neural Networks Deep Neural Networks
Input Hidden Output Input Hidden Hidden Hidden Output
W1
W2 W3 W4W1 W2
36. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
기본철학:
– 이전Layer의 error derivative를 전파하여 현재Layer의
error derivative를 계산한다.
36
37. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
기본 알고리즘
– STEP1) Initialization of all weights
– STEP2) Forward Propagation: Activation 예측값 y 계산 from input X
– STEP3) Error Back Propagation: Error derivative로 부터 weight변화율
(Δ𝑤) 계산
– STEP4) Update all weights and go to STEP2
37
이미지출처: Bishop’s book Chap 5
38. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 1) Initialization of all weights
– Cross-entropy cost
– Sigmoid activation
38
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
b b
W1 W2
f (z) =
1
1+ exp(-z)
For sigmoid activation, y = f (z)
¶y
dz
= y(1- y)
39. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 1) Initialization of all weights
– In a random manner:
39
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
Init. of weights
W1 =
w11 w12
w13 w14
é
ë
ê
ê
ù
û
ú
ú
=
0.15 0.20
0.25 0.30
é
ë
ê
ù
û
ú
W2 =
w21 w22
w23 w24
é
ë
ê
ê
ù
û
ú
ú
=
0.40 0.45
0.50 0.55
é
ë
ê
ù
û
ú
b b
Training Data:
X =
0.05
0.10
é
ë
ê
ù
û
ú,T =
0.01
0.99
é
ë
ê
ù
û
ú
Bias:
b1=
0.35
0.35
é
ë
ê
ù
û
ú,b1=
0.60
0.60
é
ë
ê
ù
û
ú
W1 W2
40. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 2) Forward Propagation
40
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1 W2
Y1 = f Z1 = W1X( )= f
0.15 0.20
0.25 0.30
é
ë
ê
ù
û
ú
0.05
0.10
é
ë
ê
ù
û
ú +
0.35
0.35
é
ë
ê
ù
û
ú
æ
è
ç
ö
ø
÷ =
0.5933
0.5969
é
ë
ê
ù
û
ú
Y2 = f Z2 = W2Y1( )= f
0.40 0.45
0.50 0.55
é
ë
ê
ù
û
ú
0.5933
0.5969
é
ë
ê
ù
û
ú +
0.6
0.6
é
ë
ê
ù
û
ú
æ
è
ç
ö
ø
÷ =
0.7514
0.7729
é
ë
ê
ù
û
ú
b b
41. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 3) Error Back Propagation for W2
– 3-1: calculate error derivative wrt y21, y22
41
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1 W2
b b
¶J(W2 )
¶y21
=
y21 - t1
y21(1- y21)
,
¶J(W2 )
¶y22
=
y22 - t2
y22 (1- y22 )
42. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 3) Error Back Propagation for W2
– 3-2: calculate error derivative wrt W2
42
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1
b b
Dw21 = -a
¶J(W2 )
¶y21
¶y21
dz21
dz21
¶w21
= a(t1 - y21)y11,
Dw22 = -a
¶J(W2 )
¶y21
¶y21
dz21
dz21
¶w22
= a(t1 - y21)y12,
Dw23 = -a
¶J(W2 )
¶y22
¶y22
dz22
dz22
¶w23
= a(t2 - y22 )y11,
Dw24 = -a
¶J(W2 )
¶y22
¶y22
dz22
dz22
¶w24
= a(t2 - y22 )y12
43. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 3) Error Back Propagation for W1 (Important!!)
– 3-3: calculate error derivative wrt y11, y12
43
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1 W2
b b
¶J(W1)
¶y11
= w21
¶J(W2 )
¶y21
¶y21
dz21
+ w23
¶J(W2 )
¶y22
¶y22
dz22
¶J(W1)
¶y12
= w22
¶J(W2 )
¶y21
¶y21
dz21
+ w24
¶J(W2 )
¶y22
¶y22
dz22
44. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 3) Error Back Propagation for W1 (Important!!)
– 3-3: calculate error derivative wrt y11, y12
44
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1 W2
b b
¶J(W1)
¶y11
= w21
¶J(W2 )
¶y21
y21(1- y21)+ w23
¶J(W2 )
¶y22
y22 (1- y22 )
¶J(W1)
¶y12
= w22
¶J(W2 )
¶y21
y21(1- y21)+ w24
¶J(W2 )
¶y22
y22 (1- y22 )
45. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 3) Error Back Propagation for W1
– 3-4: calculate error derivative wrt W1
45
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W2
b b
Dw11 = -a
¶J(W1)
¶y11
¶y11
dz11
dz11
¶w11
= -a
¶J(W1)
¶y11
y11(1- y11)x1 ,
Dw12 = -a
¶J(W1)
¶y11
¶y11
dz11
dz11
¶w12
= -a
¶J(W1)
¶y11
y11(1- y11)x2,
Dw13 = -a
¶J(W1)
¶y12
¶y12
dz12
dz12
¶w13
= -a
¶J(W1)
¶y12
y12 (1- y12 )x1 ,
Dw14 = -a
¶J(W1)
¶y12
¶y12
dz12
dz12
¶w14
= -a
¶J(W1)
¶y12
y12 (1- y12 )x2
46. 누구나 TensorFlow!
J. Kang Ph.D.
Error Back Propagation
Toy example: A two-layer small neural network
STEP 4) update all the weights and goto STEP 2
Iterate forward propagation and error back propagation
46
x1
x2
t1
t2
z11 y11
z12 y12
z21 y21
z22 y22
w11
w12
w13
w14
w21
w22
w23
w24
Input
Layer
Hidden
Layer
Output
Layer
W1 W2
b b
47. 누구나 TensorFlow!
J. Kang Ph.D.
LAB6: Multi-layer neural net in
TensorFlow
Cluster in Cluster data
https://github.com/jwkanggist/EveryBodyTensorFlow/blo
b/master/lab6_runTFMultiANN_clusterinclusterdata.py
47
48. 누구나 TensorFlow!
J. Kang Ph.D.
LAB6: Multi-layer neural net in
TensorFlow
Two spiral data
– https://github.com/jwkanggist/EveryBodyTensorFlow/blob
/master/lab6_runTFMultiANN_spiraldata.py
48
#3:강의를 시작하기 전에 제 소개를 잠깐 드리면
저는 현재 정보통신과 박사과정에 재학중인 학생이고요
강재욱이라고 합니다
즉 여러분의 학교 선배가 입니다
저는 현재 김기선 교수님과 연구를 같이하고 있습니다
연구분야는 간단하게 얘기하면 선형 시스템의 저복잡도 역변환 알고리즘을 연구하고 있습니다
자세한 내용은 저의 홈페이지나 저희 연구실 홈페이지에서 보실수 있습니다.
강의내용에 대한 질문이나 기타 저희 연구에 관심이 있으신 분은 이메일로 연락주시면 자세히 설명해 드리도록 하겠습니다
또한 기타 도움이 필요하신 경우에 연락 주시기바랍니다
#6:먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다
강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요
사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다
혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요?
아니면 씨언어?
잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
#7:저의 발표 자료와 강의 구성은 아타웨이 교수의 책을 참고로 하였습니다
책의 PDF파일을 제가 가지고 있습니다 관심있으신 분은 연락 주세요