SlideShare a Scribd company logo
1 of 101
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow
- Module3 : DNN 훈련을 위한 기법 + Convolutional neural
networks
Jaewook Kang, Ph.D.
jwkang@soundl.ly
Jan. 2018
1
© 2018
Jaewook Kang
All Rights Reserved
누구나 TensorFlow!
J. Kang Ph.D.
 GIST EEC Ph.D. (2015)
 신호처리 과학자, 삽질러
 누구나 TensorFlow Group leader
 https://www.facebook.com/jwkkang
 좋아하는 것:
 통계적 신호처리 / 무선통신 신호처리
 임베디드 오디오 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 (강재욱)
소 개
누구나 TensorFlow!
J. Kang Ph.D.
Contributors
3
Jaewook Kang (Soundlly)
Soonwon Ka (Soundlly) Jihwan Lee (SNU) Cheolyoung Kwak (SNU)
Hyoyoung Jung (GIST) Donghyun Kim (GIST)
누구나 TensorFlow!
J. Kang Ph.D.
Reviewers
 Sun Young Park (Korea Univ.)
 Hongkyong Kim (Korea Aerospace Research Institute, GIST)
 Hansol Kim (GIST)
4
누구나 TensorFlow!
J. Kang Ph.D.
 딥러닝과 연금술 Talk @ NIPS2017
(https://brunch.co.kr/@jangwonjkim/26 )
•
5
누구나 TensorFlow!
J. Kang Ph.D.
 딥러닝과 연금술 Talk @ NIPS2017
(https://brunch.co.kr/@jangwonjkim/26 )
• NIP2017의 test-of-time award 수상자 알리는
수상소감에서 딥러닝 연구 커뮤티니에 쓴소리를
던졌다.
6
The current practice in machine learning is akin
to "alchemy”!!
- Ali Rahimis-
Ref: https://www.youtube.com/watch?v=Qi1Yry33TQE
누구나 TensorFlow!
J. Kang Ph.D.
 딥러닝과 연금술 Talk @ NIPS2017
(https://brunch.co.kr/@jangwonjkim/26 )
• 알리의 주장
• 딥러닝연구는 현재 보다 더 엄격한 방식으로 수행되어야
한다.
• 새로운 방법을 고안하고 기술하는 내용이 주를 이루어
상대적으로 이론적/실험적 검증과 분석이 예전보다
간과되고 있다.
• 이런 현상을 ”연금술”에 비유했다.
• 문제의 본질을 더 잘 이해하고 분석해 나가는 연구가 아닌
새로운 방법을 계속 시도하는 연구는 지양해야한다.
7
누구나 TensorFlow!
J. Kang Ph.D.
 딥러닝과 연금술 Talk @ NIPS2017
(https://brunch.co.kr/@jangwonjkim/26 )
• 얀 레쿤의 주장
• 과거에는 학문의 엄격함에 얽매여서 뉴럴넷 기술이
발전하는데 어려움을 겪었다.
• 새로운 방법을 개발하는 것이 공학!
• 앞으로는 수학적/실험적 엄격함에 얽매지는 과거의 실수를
반복하지 말자.
8
•(https://www.facebook.com/yann.lecun/posts/10154938130592143 )
누구나 TensorFlow!
J. Kang Ph.D.
 딥러닝과 연금술 Talk @ NIPS2017
(https://brunch.co.kr/@jangwonjkim/26 )
• 여러분의 어느쪽에 동의 하시나요 ?
• 여러분의 연구는 어떤방식으로 하시나요 ?
9
누구나 TensorFlow!
J. Kang Ph.D.
강의 일정
10
3일차
1/13 토
딥러닝 훈련 기법 2 -딥러닝 훈련을 위한 몇가지 기법:
-LAB10: Relu Activation 해보기
-LAB11: DropOut 해보기
-LAB12: Batch Normalization 해보기
-LAB13: Adam optimizer 해보기
-LAB14: Revisit DBN with ReLu, DropOut,
Batch Normalization
-Extra LAB : Maxout
Convolutional Neural
Net
5 -Biological inspiration for CNN
-Convolutional layer
-LAB15: Filtering in CNN 실습
-Why convolution?
-Pooling layer
-LAB16: Pooling in CNN 실습
- CNN basic architecture
- Modern CNNs
-LAB17: LeNet-5 실습
Wrap up 1 - 강의 리뷰
- Mobile ML lab 소개
누구나 TensorFlow!
J. Kang Ph.D.
GitHub link
GitHub link (all public)
– https://github.com/jwkanggist/EveryBodyTensorFlow
– Facebook page: goo.gl/NvdbWq
Aymeric' s repo
– https://github.com/aymericdamien/TensorFlow-Examples
Prof. Sung Kim’s repo
– https://github.com/hunkim/DeepLearningZeroToAll
11
누구나 TensorFlow!
J. Kang Ph.D.
1. 딥러닝 훈련 기법
1. LAB10: Relu Activation 해보기
2. LAB11: DropOut 해보기
3. LAB12: Batch Normalization 해보기
4. LAB13: Adam optimizer 해보기
5. LAB14: Revisit DBN with ReLu, DropOut, Batch nomalization
6. -Extra LAB : Maxout
딥러닝 학자들은 겨울을 이겨낸 4가지 비법
12
누구나 TensorFlow!
J. Kang Ph.D.
Keys to go deep into Deep learning
Lack of Labeled data  Overfitting Problem
– Deep Belief Networks (DBN) (2006,2007)
• Stacking RBM + Layer-wise unsupervised Pre-training
– DropOut (2012)
– DropConnection (2013)
Vanishing Gradient Problem
– Stacking RBM + Layer-wise unsupervised Pre-training (2006)
– ReLU activation (2010,2011)
– CNN: Convolutional network (1998)
– RNN : Long short-term memory for RNN (1997)
– Batch normalization (2015)
Learning Computational cost
– GPU computing !
13
누구나 TensorFlow!
J. Kang Ph.D.
Keys to go deep into Deep learning
Lack of Labeled data  Overfitting Problem
– Deep Belief Networks (DBN) (2006,2007)
• Stacking RBM + Layer-wise unsupervised Pre-training
– DropOut (2012)
– DropConnection (2013)
Vanishing Gradient Problem
– Stacking RBM + Layer-wise unsupervised Pre-training (2006)
– ReLU activation (2010,2011)
– CNN: Convolutional network (1998)
– RNN : Long short-term memory for RNN (1997)
– Batch normalization (2015)
Learning Computational cost
– GPU computing !
14
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– Sigmoid, tanh 함수는 입력값이 양끝에 근접하면 기울기가 ‘0’에
가까워짐
15
f (z) = max(0,z)
Logit Z
f (z) = max(0,z)
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문1: 사람들이 이 간단한 activation을 왜 이제까지 사용하지
않았을까?
• 이유1: 미분 불가능성
– piecewise linear 한 이 activation은 x=0에서 미분 불가능 !
»  sub-gradient approximation을 사용해야함
»  err-backprop 알고리즘에서 approx. error propagation에 대한 우려
• 이유2: 발산 가능성
– Gradient exploding: 입력 X가 양의 방향으로 발산한 가능성을 가짐
16
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문1: 사람들이 이 간단한 activation을 왜 이제까지 사용하지
않았을까?
17
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까?
• 이유1: Biologically plausible !
– 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1-
4%이다. (Bengio 2011)
– Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨
• 이유2: Sparsifying deep neural network!
– ReLu는 on/off operation을 하기 때문에 특정
뉴런을 deactivation 시킨다.
– 해당 task에 필요한 뉴런 구조/개수를 찾아준다.
– Computational efficiency!
18
우리말이
맞제?
어느 둘 신경학자
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까?
• 이유1: Biologically plausible !
– 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1-
4%이다. (Bengio 2011)
– Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨
• 이유2: Sparsifying deep neural network!
– ReLu는 on/off operation을 하기 때문에 특정
뉴런을 deactivation 시킨다.
– 해당 task에 필요한 뉴런 구조/개수를 찾아준다.
– Computational efficiency!
19
우리말이
맞제?
어느 둘 신경학자
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까?
• 이유1: Biologically plausible !
– 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1-
4%이다. (Bengio 2011)
– Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨
• 이유2: Sparsifying deep neural network!
– ReLu는 on/off operation을 하기 때문에 특정
뉴런을 deactivation 시킨다.
– 해당 task에 필요한 뉴런 구조/개수를 찾아준다.
– Computational efficiency!
20
우리말이
맞제?
어느 둘 신경학자
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– R Hahnloser etal. Digital selection and analogue amplification coexist
in a cortex-inspired silicon circuit. Nature (2000)
– 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까?
• 이유1: Biologically plausible !
– 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1-
4%이다. (Bengio 2011)
– Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨
• 이유2: Promoting Sparsity deep neural network!
– ReLu는 on/off operation을 하기 때문에 특정
뉴런을 deactivation 시킨다.
– 해당 task에 필요한 뉴런 구조/개수를 찾아준다.
– Computational efficiency!
21
우리말이
맞제?
어느 둘 신경학자
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– Bengio etal, “Deep Sparse Rectifier Neural Networks” PMLR (2011)
– 그래서 Bengio 교수님 사용해 보시니…
22
누구나 TensorFlow!
J. Kang Ph.D.
Revisit ReLu Activation
ReLU (Rectified Linear unit)
– Bengio etal, “Deep Sparse Rectifier Neural Networks” PMLR (2011)
– 그래서 Bengio 교수님 사용해 보시니…
• 관찰1: Resolve Gradient vanishing problem
– Err. Backprop 알고리즘에서 아랫 layer까지 gradient가 잘 전달됨!
• 관찰2: 미분 불가 at x=0는 문제없음
– 미분가능한 Softplus activation과 비교. 성능 비교우위 실험적 확인
• 관찰3: 계산 효율이 매우 좋다  6배 정도 개선 (네트워크 구조에 따름)
• 관찰4: weight sparsity가 20% 정도로 training 됐을때 가장 성능이 좋더라 .
– Weight training 할때 L1 regularization 사용
• 관찰5: 발산문제- 1) Hard saturation 하는 방법, 2) sigmoid activation 추가방법, 3)
Batch normalization.
• 관찰6: ReLu를 사용하니 unsupervised pre-training을 안해도 성능이 크게
떨어지지 않더라.
23
누구나 TensorFlow!
J. Kang Ph.D.
LAB10: Relu Activation 적용해보기
LAB7에 ReLU activation을 적용해 보자!
– 성능을 올릴 수 있는가?
– Training_epoch를 줄일 수 있는가?
– Learning_rate를 어떻케 조절 해야하는가?
– Layer의 개수를 줄일 수 있는가?
24
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
 핵심질문: Overfitting을 최소화 하면서 DNN구조의
표현력을 최대한 활용하려면 어떻케 해야하는가?
– Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from
Overfitting”, (2012,2014)
25
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
 Again, from Biological inspiration !
– 질문1: 자연선택에서 유성생식이 성공적인 이유는 무엇인가?
• 자연선택 측면에서 생각하면 무성생식이 우성형질을 보존하기 유리해 보이지
않는가?
– 답) 유성생식 (Sexual reproduction): 유전자 전파 +형질 생성+ 형질
교배
• 유전자 전파+ 형질 생성:
– 부모의 유전자를 물려받음.
– 주어진 환경에 적응된 형질
– 각 generation에서 형질이 생성된다.
• 형질 교배:
– 부 + 모 가 유전자를 절반씩 섞음
– 약간의 돌연변이를 촉진하여 특정 환경에 유전자가 너무 적응되는 것을
막음
26
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
 유성생식과 Dropout + DNN
– 유전자 전파 + 형질 생성:
•  주어진 네트워크(환경)에 대해서, 일부 데이터 셋(유전자) 을 가지고 weight
네트워크를 훈련한다. (형질 생성)
– 형질 교배
•  각 네트워크(환경)에 훈련된 weight 평균을 취한다 (교배한다).
– 결론: DropOut으로 다양한 네트워크를 형성하고 그 weight average하면 다양한
환경에서 살아남을 수 있는 모델을 만들수 있다!
– where
• 환경  dropouted 딥러닝 네트워크
• 유전자  데이터
• 유전자 전파  훈련
• 형질  weight
• 형질 교배  weight averaging
27
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
 무성생식과 DNN (비교)
– 유전자 전파 + 형질 생성:
•  주어진 네트워크(환경)에 대해서, 전체 데이터 셋(유전자) 을 가지고 weight
네트워크를 훈련한다. (형질 생성)
– 결론:
• 무성생식은 특정 유전자+환경에 너무 적응된 형질를 생성한다.
• 이런 형질은 새로운 입력에 대한 적응력이 떨어진다.
• 마찬가지로 한 DNN 구조에 대해서만 훈련한 모델은 다양한 입력에 대한
적응력이 떨어진다.  overfitting
– where
• 환경  dropouted 딥러닝 네트워크
• 유전자  데이터
• 유전자 전파  훈련
• 형질  weight
• 형질 교배  weight averaging
28
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
 핵심질문: Overfitting을 최소화 하면서 DNN구조의
표현력을 최대한 활용하려면 어떻케 해야하는가?
– Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from
Overfitting”, (2012,2014)
• 답1) 데이터 셋을 나누어 mini-batch마다 다른 DNN 구조를 학습시킨다.
• 답2) 다양한 DNN 구조로 학습한 weight의 평균값을 inference에
사용한다.
29
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
30
 Training Algorithm with Dropout
– STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로
dropout시킨다.
• 그렇케 생성된 graph를 thin graph라고 한다.
• Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다.
• Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ).
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
31
 Training Algorithm with Dropout
– STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로
dropout시킨다.
• 그렇케 생성된 graph를 thin graph라고 한다.
• Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다.
• Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ).
– STEP2) thin graph를 total_batch의 개수 M 만큼 생성한다.
– STEP3) 각 thin graph를 다른 데이터 셋 (mini-batch)에 대해서
훈련한다.
• 결과물: thin graph weight [ W_0,….,W_M-1}를 얻는다.
– STEP4) thin graph의 각 hidden layer에 대해서 weight average한다.
WL = p WL,i
iÎ{0,M -1}
å where WL,i from the L-th layer of the i-th thin graph.
Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
32
 Training Algorithm with Dropout
– STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로
dropout시킨다.
• 그렇케 생성된 graph를 thin graph라고 한다.
• Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다.
• Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ).
– STEP2) thin graph를 total_batch의 개수 M 만큼 생성한다.
– STEP3) 각 thin graph를 다른 데이터 셋 (mini-batch)에 대해서
훈련한다.
• 결과물: thin graph weight [ W_0,….,W_M-1}를 얻는다.
– STEP4) thin graph의 각 hidden layer에 대해서 weight average한다.
WL = p WL,i
iÎ{0,M -1}
å where WL,i from the L-th layer of the i-th thin graph.
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
33
 MNIST comparison results
– All dropout nets use p = 0.5 for hidden units and p = 0.8 for input units.
Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
34
 MNIST comparison results
– All dropout nets use p = 0.5 for hidden units and p = 0.8 for input units.
Hinton etal, “Dropout: A
Simple Way to Prevent
Neural Networks from
Overfitting”, (2012,2014)
누구나 TensorFlow!
J. Kang Ph.D.
Dropout
35
 Generated feature map with DropOut
– MNIST dataset
– DropOut은 feature map이 part-representation을 가지도록 한다.
Hinton etal, “Dropout: A
Simple Way to Prevent
Neural Networks from
Overfitting”, (2012,2014)
누구나 TensorFlow!
J. Kang Ph.D.
LAB11: DropOut을 구현해보자
LAB7에 DropOut을 적용해 보자!
– 성능을 올릴 수 있는가?
– Training_epoch를 줄일 수 있는가?
– Learning_rate를 어떻케 조절 해야하는가?
– Layer의 개수를 줄일 수 있는가?
36
누구나 TensorFlow!
J. Kang Ph.D.
LAB11: DropOut을 구현해보자
LAB7에 DropOut을 적용해 보자!
– tf.layers.dropout() vs tf.nn.dropout() 차이?
– tf.layers.dropout()
• Dropout을 dropout rate로 정의
• Dropout rate=0.1  10%로 layer unit을 drop!
– tf.nn.dropout()
• Dropout을 keep prob로 정의
• Keep_prob = 0.1  10%로 layer unit을 keep!
37
누구나 TensorFlow!
J. Kang Ph.D.
LAB11: DropOut을 구현해보자
LAB7 에 DropOut을 적용해 보자!
38
Training config:
learning_rate = 0.005
training_epochs = 5000
batch_size = 500
LAB10: Before applying drop out
누구나 TensorFlow!
J. Kang Ph.D.
LAB11: DropOut을 구현해보자
LAB7 에 DropOut을 적용해 보자!
39
LAB11: After applying drop out
Training config:
learning_rate = 0.005
training_epochs = 5000
batch_size = 500
dropoutrate_in_trainin
g = 0.8
누구나 TensorFlow!
J. Kang Ph.D.
Batch Normalization
 목적: 딥러닝의 훈련 속도를 더 빠르게 하고싶다!
 Room: learning rate!
– Learning rate가 너무 크면 속도는 빨라지나 Gradient
vanishing/exploding 문제가 발생한다.
• Gradient vanishing : 기억? 나니..
• Gradient exploding: gradient값이 점점 커지면서 발산하는 경우
 핵심질문: Gradient vanishing/exploding 문제를 피하면서 learning rate
값을 크게 설정할 수 있는 모델을 설계할 수 있는가?
– Ref: Szegedy etal “Batch normalization: accelerating deep network
training by reducing internal covariate shirt” (2015)
• ReLu activation을 사용하면 Gradient Vanishing 문제를 어느정도 완화 할 수
있지만, 큰 learning rate와 함께 사용하면 Gradient exploding문제가 생김
•  학습속도( learning rate) 를 작게 유지 할 수 밖에 없음
40
누구나 TensorFlow!
J. Kang Ph.D.
Batch Normalization
 Internal covariate shift - Gradient Vanishing의 근본적인 원인
– Training에서 앞단 layer의 weight의 영향으로 바로 윗단 layer의
input distribution 이 변하는 현상
– Input layer: 정규화 된 입력분포
• Zero-mean / unit variance
– Middle hidden layer:
• 아랫단의 weight에 의존적으로
입력 분포가 변한다.
• Input layer에서 먼 layer일수록 심함
41
Zero mean
unit variance input
Input distribution
change upto below
layers
누구나 TensorFlow!
J. Kang Ph.D.
 Internal covariate shift - Gradient Vanishing의 근본적인 원인
– Training에서 앞단 layer의 weight의 영향으로 바로 윗단 layer의
input distribution 이 변하는 현상
– Input layer: 정규화 된 입력분포
• Zero-mean / unit variance
– Middle hidden layer:
• 아랫단의 weight에 의존적으로
입력 분포가 변한다.
– 이전 layer에서 오는 입력분포가
Zero-mean/unit var인것으로
가정하고 학습하나 실제는 그렇지
않다.
• Learning rate를 높이면 분포가 크게
변하기 때문에 쉽게 발산할 수 있다.
• Input layer에서 먼 layer일수록 변화가 심함
Batch Normalization
42
Zero mean
unit variance input
입력분포
p(mu=0,var=1)
입력분포
q(p)
입력분포
r(q)
입력분포
o(r)
입력분포 축
p(mu=0,var=1)
누구나 TensorFlow!
J. Kang Ph.D.
 Batch normalization Training: 각 layer의 입력분포를 정규화
– 각 layer input의 elements간 independency
를 가정하고 아래를 수행한다.
– Input Feature X의 correlation 특성을
보존하기 위한 affine transform
Batch Normalization
43
Zero mean
unit variance input
입력분포
p(mu=0,var=1)
입력분포 축
p(mu=0,var=1)
Batch Norm.
Batch Norm. {g i},{bi}
{g i},{bi}
Activation
Activation
누구나 TensorFlow!
J. Kang Ph.D.
 Applying Google Inception model with LSVRC 2012 dataset
– BN: Inception + BN + ReLu
– BN-x5 는 5배의 learning_rate 가속을 의미한다.
Batch Normalization
44
Ref: Szegedy etal “Batch normalization: accelerating deep network training by reducing
internal covariate shirt” (2015)
누구나 TensorFlow!
J. Kang Ph.D.
Batch Normalization
 batch norm 잘 정리된 국문블로그
– https://shuuki4.wordpress.com/2016/01/13/batch-normalization
 Low level batch norm implementation
– https://gist.github.com/tomokishii/0ce3bdac1588b5cca9fa5fbdf6e1c412
45
누구나 TensorFlow!
J. Kang Ph.D.
LAB12: Batch Normalization을 적용해보자
LAB10에 Batch Normalization을 적용해 보자!
– Learning rate를 얼마나 키울 수 있을까?
• 논문에서는 기존의 6배
– Dropout과 같이 사용하지 말자. 호환이 안좋음.
• 왜 그럴까?
– tf.contrib.layers.batch_norm()을 사용해서 네트워크를 구성해 보자
46
누구나 TensorFlow!
J. Kang Ph.D.
LAB12: Batch Normalization을 적용해보자
LAB10에 Batch Normalization을 적용해 보자!
47
Training config:
learning_rate = 0.005
training_epochs = 5000
batch_size = 500
No dropOut
LAB10: Before applying batch norm
누구나 TensorFlow!
J. Kang Ph.D.
LAB12: Batch Normalization을 적용해보자
LAB10에 Batch Normalization을 적용해 보자!
48
Training config:
learning_rate = 0.1
training_epochs = 100
batch_size = 30
No dropOut
LAB12: After applying batch norm.
누구나 TensorFlow!
J. Kang Ph.D.
2. Convolutional Neural Networks
1.Biological inspiration in CNN
2. Convolutional layer
3. Lab 15 Filtering over CNN
4. Pooling layer
5. Lab 16 Pooling over CNN
6. why CNN
7. CNN basic architecture
8. Lab 17 LeNet5 implementation
아니 그 CNN 말구요 ;;;
49
누구나 TensorFlow!
J. Kang Ph.D.
Reference : Machine learning fundamental
50
Hands-On Machine Learning
With Scikit-Learn &
TensorFlow
2017 Aurelien Geron, Google
O’Reilly
본 강의는 해당 교재를 참고했음을
사전에 알립니다.
누구나 TensorFlow!
J. Kang Ph.D.
기타 참고 자료
Gaurav Mittal 자료 (very good!)
– https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
Standford n231 CNN lecture 2017
– http://cs231n.stanford.edu/
– http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture5.pdf
 라온피플 기술블로그
– https://laonple.blog.me/220643128255
51
누구나 TensorFlow!
J. Kang Ph.D.
CNN을 한마디로 요약하면?
Convolutional Neural Networks (CNN)
52
한 layer에 대해서
기존 Fully connected networks 에서 input X과 logit Z 사이의 관계를 “Matrix
Multiplication”으로 표현했던 것을
“Convolution”으로 대체하여 표현하여 계산효율성/overfitting을 개선한
networks.
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
누구나 TensorFlow!
J. Kang Ph.D.
CNN is Biologically Inspired!
Emerged from the study of the brain’s visual cortex
– Visual system의 뉴런은 전체를 보지 않는다!
• Retina 뉴런은 제한된 영역의 “local receptive field”를 가진다.
• Local receptive field 에서 Edge와 같은 “low-level feature”를 인식한다.
53
이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
누구나 TensorFlow!
J. Kang Ph.D.
CNN is Biologically Inspired!
Emerged from the study of the brain’s visual cortex
– 상위 layer의 뉴런은 에서는 Retina 뉴런에서 인식한 ”Low-level
features”를 복합적으로 결합하여 “High-level features”를 구성한다.
– High-level feature들은 단계적으로 결합되어 “Entire objects
pattern”를 구성하고 뇌에서 인지 한다.
54
이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
Area V1 Area V2 Area V3 Area V4Retina
Edges Object parts Entire objects
누구나 TensorFlow!
J. Kang Ph.D.
CNN을 구성하는 layers
– Convolutional layer
• Generation of feature map (layer output)
• Local feature reception and combination
– Pooling layer
• Spatial / temporal sub-sampling of features
55
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
1D Discrete Convolution
56
Layer logit
Or
Feature map
Z[i] = (X ÄW )[i] = X[k]W[i - k]
k
å
Weight
or
Filter
or
Kernel
Layer Input
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
1D Discrete Convolution
57
Ä
Ä
Z[i]
Z[i]
W[i]
W[i]
X[i]
X[i]
Z[i] = (X ÄW )[i] = X[k]W[i - k]
k
å
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
2D Discrete Convolution (Filtering)
– Convolution :
– Cross Correlation:
– 대부분의 ML라이브러리에서 CNN에 사용되는
conv연산을 “Cross Correlation” 연산으로 구현한다.
• For symmetric features, both results are the same.
58
Z[i, j] = (X ÄW )[i, j]
= X[i - m, j - n]W[m,n]
n
å
m
å
Z[i, j] = (X ÄW )[i, j]
= X[i + m, j + n]W[m,n]
n
å
m
å
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
2D Discrete Convolution (Filtering)
59
Z[i, j] = (X ÄW )[i, j]
= X[i + m, j + n]W[m,n]
n
å
m
å
https://www.slideshare.net/SeongwonHwang/convolutional-neural-network-cnn-presentation-from-theory-to-code-in-theano
Feature
map(Z)
Kernel (W) Input (X)
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
2D Discrete Convolution Example
– https://goo.gl/WkvUAv
60
=Layer Input X =Layer Logit Z
Layer
Kernel W
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
Zero padding
– Filtering전에 입력 X에 추가로 zero padding 하여 출력되는 feature
map Z의 사이즈를 조절하는 기법
• zero padding없는 경우 기본적으로 dim(X) > dim(Z)
• 참고 링크: https://goo.gl/u3wJto
61
No zero padding, (p=0)
Unit stride, (s=1)
Zero padding, (p=2)
Unit stride, (s=1)
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
Strides
– Filtering시 stepsize, s, 를 조절하여 출력되는 feature map Z의
사이즈를 조절하는 방법
– Strides enables us to skip some information on X.
• 참고 링크: https://goo.gl/u3wJto
62
No zero padding, (p=0)
non-unit stride, (s=2)
Zero padding, (p=1)
non-unit stride, (s=2)
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Convolutional layer
Full description of feature map size after filtering
– Feature width: w
– Feature height: h
– Feature depth: d
63
p
- Filter size: e
- Number of filters: k
- Zero padding size: p
d
w
h
d
< 3D array of feature map input > < CNN filtering configuration >
누구나 TensorFlow!
J. Kang Ph.D.
Full description of feature map size after filtering
CNN – Convolutional layer
64
wout = Ceil
w - e+ 2p
s
æ
èç
ö
ø÷ +1
hout = Ceil
h - e+ 2p
s
æ
èç
ö
ø÷ +1
dout = k
p
d
w
h
d
< 3D array of feature map input > < CNN filtering configuration >
누구나 TensorFlow!
J. Kang Ph.D.
Lab 15 Filtering over CNN
tf.nn.conv2d() 함수를 사용해서 필터링을 해보자!
– Vertical filter
– Horizontal filter
– 기타 user-defined filter
– Stride 값 조절 해보기
65
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Pooling layer
Max pooling
– Filtering 으로 출력된 feature map Z의 dimension을 줄이기 위함
– 사이즈 ’e’를 가지는 tile를 만들어 그안에서 max값을 출력
– Filtering과 마찬가지로 stride의 개념이 존재
66
non-unit stride, (s=2, e=2)
Z[i]= max(X ´tile)[i]= max(X[k];k Îtile)
누구나 TensorFlow!
J. Kang Ph.D.
CNN – Pooling layer
Max pooling
– Feature map width: w
– Feature map height: h
– Stride : s (non overlapping)
– Max pooling size: e
67
non-unit stride, (s=2, e=2)
wout = Ceil
w - e
s
æ
èç
ö
ø÷ +1
hout = Ceil
h - e
s
æ
èç
ö
ø÷ +1
e
w
h
e
누구나 TensorFlow!
J. Kang Ph.D.
Lab 16 pooling over CNN
tf.nn.max_pool() 사용해서 max-pooling을 해보자
– Tile size를 조정해보자
– Stride size를 조정해보자
68
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
왜 CNN에서는 계산 효율성이 좋아지는가?
– Weight sharing
– Sparse connectivity
69
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
Weight Sharing! (Parameter sharing)
– 한 feature map 생성에 대해서 weight가 공유!
– 한 layer에서 feature map의 개수는 kernel 개수만큼 존재.
70
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
All the same
Weights!
All different
Weights!
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
Sparse Connectivity
– Input X의 길이를 N이라고 했을때 kernel size, K <<N임
• Computationally efficient!
• Memory efficient!
71
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
Kernel size =3
Sparse!
Kernel Size = N
Dense
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
Sparse Connectivity
– Layer를 깊게 쌓으면 Sparse
Network에서도 A output layer
Unit이 전체 input layer units과
간접적으로 연결될 수 있음
– 많은 practical application에서
Sparse network가좋은 성능을
보이고 있음
72
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
 https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
73
누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
 https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
74
누구나 TensorFlow!
J. Kang Ph.D.
CNN Implementation issue
Convolutional layers
– Memory requirement
– Size of filter
• Don’t use convolutional kernel (weight) that are too
large
Pooling layers
– Density of feature maps
• Too much sub-sampling destroys the network ability to
carry important information
75
누구나 TensorFlow!
J. Kang Ph.D.
CNN Basic Architectures
Stacking of (Conv layer + pooling layer)
– 기본적으로 Conv layer + pool layer를 쌓는 방식
– Output layer 바로 전 몇 단은 FNN을 쌓는다
– Application에 따라서 다양한 configuration이 존재
76
누구나 TensorFlow!
J. Kang Ph.D.
Old CNN: LeNet (1994)
77
 The first CNN (1994,1998)
– CNN의 구조를 처음으로 제안함: conv  avg pooling  activation
• Conv: spatial feature
• Avg. pooling: spatial average of features
• Sparse connection matrix between layers to avoid large computational cost
Y. LeCun etal. “Gradient-based learning applied to document recognition,” Proc. Of IEEE 1998
누구나 TensorFlow!
J. Kang Ph.D.
 The first CNN (1994,1998)
– CNN의 구조를 처음으로 제안함: conv  avg pooling  activation
• Conv: spatial feature
• Avg. pooling: spatial average of features
• Sparse connection matrix between layers to avoid large computational cost
Old CNN: LeNet5 (1994)
Layer Type Output
Maps
Output
Size
Filter size Stride Activation
Out Fully Connected - 10 - RBF
F6 Fully Connected - 84 - tanh
C5 Convolutional 120 1x1 5x5 1 tanh
S4 Avg Pooling 16 5x5 2x2 2 -
C3 Convolutional 16 10x10 5x5 1 tanh
S2 Avg Pooling 6 14x14 2x2 2 -
C1 Convolutional 6 28x28 5x5 1 tanh
In Input 1 32x32 -
78 Radian Basis Function (RBF)
누구나 TensorFlow!
J. Kang Ph.D.
Modern CNN: AlexNet (2012)
The first CNN structure in the era of DNN
– A deeper and much wider version of the LeNet
– Winner of ImageNet ILSVRC challenge 2012
• 17% top-5 error rate (the 2nd best was 26%)
79
A. Krizhevsky et al.
“ImageNet
Classification with
Deep
Convolutional
Neural Networks,”
NIPS 2012
누구나 TensorFlow!
J. Kang Ph.D.
Modern CNN: AlexNet (2012)
The first CNN structure in the era of DNN
– A deeper and much wider version of the LeNet
– Winner of ImageNet ILSVRC challenge 2012
• 17% top-5 error rate (the 2nd best was 26%)
80
이미지출처: https://www.slideshare.net/jbhuang/lecture-29-convolutional-neural-networks-
computer-vision-spring2015
누구나 TensorFlow!
J. Kang Ph.D.
Modern CNN: AlexNet (2012)
The first CNN structure in the era of DNN
– Applying several recent DNN techniques:
• ReLu activation, Dropout, Max pooling, Local response normalization
– Applying data augmentation
• 입력 image X를 간단한 처리를 해서 추가 훈련데이터로
사용하는 것
81
이미지출처:
https://www.quor
a.com/Is-a-
convolution-
neural-network-
immune-to-
image-
resolutions-If-so-
what-makes-this-
possible
누구나 TensorFlow!
J. Kang Ph.D.
Modern CNN: AlexNet (2012)
82
Layer Type Output
Maps
Output
Size
Filter size Stride Paddin
g
Activa
tion
Out Fully
Connected
- 1000 - - - softma
x
F9 Fully
Connected
- 4096 - - - ReLu
F8 Fully
Connected
- 4096 - - - ReLu
C7 Convolutional 256 13x13 3x3 1 SAME ReLu
C6 Convolutional 384 13x13 3x3 1 SAME ReLu
C5 Convolutional 384 13x13 3x3 1 SAME ReLu
S4 Max Pooling 256 13x13 3x3 2 VAILD -
C3 Convolutional 256 27x27 5x5 1 SAME ReLu
S2 Max Pooling 96 27x27 3x3 2 VAILD -
C1 Convolutional 96 55x55 11x11 4 SAME ReLu
In Input 3 (RGB) 224x224 -
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
GoogLeNet (2014)
83
이미지 출처:
https://adeshpande3.github.io/adeshpande3.github.io/The-9-Deep-
Learning-Papers-You-Need-To-Know-About.html
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
GoogLeNet (2014)
– Winning ImageNet 2014 challenge with top-5 error rate below 7%
– Trend: Deeper and Deeper
– 단순하게 깊은 네트워크를 만들었을 때 문제점
• 엄청난 수 파라미터 개수 (AlexNet에서 이미 60 million)
• 연산량 – GPU를 사용해도 일주일 이상
– 결론: 단순히 깊게만 만들어서는 안된다.
• Inception module!
84
- C. Szegedy etal ”Going deeper with convolutions”, IEEE CVPR 2015
- 한글 번역 자료
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
GoogLeNet (2014)
– Inception module!: Network in network
• 하나의 layer를 구성하기 위해서 4개의 micro-convolutional network를
병렬로 연결하고 그 결과를 concatenation함
• 즉 같은 layer에 서로 다른 크기를 가지는 conv filter를 적용하여 다른
scale의 feature를 얻을 수 있도록 함
– 10 time fewer parameters than AlexNet (60 million  5 million)
85
- C. Szegedy etal ”Going
deeper with
convolutions”, IEEE
CVPR 2015
- 한글 번역 자료
Inception module 구성
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
GoogLeNet (2014)
86
GoogLeNet
9 inception module in network
AlexNet
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Winner of ImageNet 2015 with top-5 error rate 3.6%
– Trend: Still going to Deeper
87
- K. He etal “Deep residula learning for image recognition,” IEEE
CVPR 2016
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Winner of ImageNet 2015 with top-5 error rate 3.6%
– Trend: Still going to Deeper
– 문제점:
• Vanishing/Exploding Gradient 문제: Sparse network구조를 가지는 CNN에서는
기존 DBN 만큼 문제가 되지 않았지만 구조가 깊어지면서 다시 문제가 됨
• Batch normalization, ReLu, DropOut과 같은 기법으로도 역부족이 드러남
– 결론: 몬가 또 다른 새로운 구조가 필요하다.
88
- K. He etal “Deep residual learning for image recognition,” IEEE
CVPR 2016
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Residual learning: 모델이 입출력 관계인 F(X)=H(X)을 학습하는 것이
아니고 residual인 F(X) = H(X) – X을 학습하도록 하자!
• Layer 입력 : X
• Layer 출력 : F(X)
• Weight 에 의한 모델: H(X)
89
- K. He etal “Deep residual learning for image recognition,” IEEE
CVPR 2016
Conventional unit Residual unit
Skip connection!
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Residual learning: 모델이 입출력 관계인 F(X)=H(X)을 학습하는 것이
아니고 residual인 “F(X) = H(X) – X”을 학습하도록 하자!
• Residual0인 방향으로 F(X)을 학습시키고 그 결과에 H(X)= F(X) +X을 사용한다.
• Residual0이 되야한다는 방향이 추가되는 것이 학습속도를 가속한다.
• 연산량 증가가 거의 없다 (덧셈 하나 증가)
90
- K. He etal “Deep residual learning for image recognition,” IEEE
CVPR 2016
Conventional unit Residual unit
Skip connection!
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Residual Network:
– 네트워크 훈련시에 학습이 진행되지 않은 layer는
backpropagation시에 block하도록 설정할 수 있다.
•  Vanishing gradient 문제 완화!
91
- K. He etal “Deep residual learning for image recognition,” IEEE
CVPR 2016
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Residual Network:
– 네트워크 훈련시에 학습이 진행되지 않은 layer는
backpropagation시에 block하도록 설정할 수 있다.
•  Vanishing gradient 문제 완화!
– Layer Variations
• ResNet-34 , ResNet-101, ResNet-152
92
- K. He etal “Deep residual learning for image recognition,” IEEE
CVPR 2016
누구나 TensorFlow!
J. Kang Ph.D.
Beyond AlexNet
ResNet (2015)
– Residual Network:
– 네트워크 훈련시에 학습이 진행되지 않은 layer는
backpropagation시에 block하도록 설정할 수 있다.
•  Vanishing gradient 문제 완화!
– Layer Variations
• ResNet-34 , ResNet-101, ResNet-152
93
- 이미지 출처: https://statsmaths.github.io/stat395-f17/class21/
누구나 TensorFlow!
J. Kang Ph.D.
CNN Historical Trajectory
94
https://www.topbots.com/a-brief-history-of-
neural-network-architectures/
Good Region
Bad Region
누구나 TensorFlow!
J. Kang Ph.D.
Lab 17 LeNet5 Implementation
가장 간단한 CNN인 LeNet5를 만들어 보자!
95
Y. LeCun etal. “Gradient-based learning applied to document recognition,” Proc. Of IEEE 1998
누구나 TensorFlow!
J. Kang Ph.D.
Lab 17 LeNet5 Implementation
Layer Type Output
Maps
Output
Size
Filter size Stride Activation
Out Fully Connected - 10 - RBF
F6 Fully Connected - 84 - tanh
C5 Convolutional 120 1x1 5x5 1 tanh
S4 Avg Pooling 16 5x5 2x2 2 tanh
C3 Convolutional 16 10x10 5x5 1 tanh
S2 Avg Pooling 6 14x14 2x2 2 tanh
C1 Convolutional 6 28x28 5x5 1 tanh
In Input 1 32x32 -
96
가장 간단한 CNN인 LeNet5를 만들어 보자!
– 머신러닝 개발자들은 아래 표만 있으면 코딩할 수 있다!
Radian Basis Function (RBF)
누구나 TensorFlow!
J. Kang Ph.D.
Lab 17 LeNet5 Implementation
97
가장 간단한 CNN인 LeNet5를 만들어 보자!
– Ref github1: https://goo.gl/oJeHTi
– Ref github2: https://goo.gl/inRbsp
Radian Basis Function (RBF)
누구나 TensorFlow!
J. Kang Ph.D. 98
누구나 TensorFlow!
J. Kang Ph.D. 99
The End
누구나 Tensorflow in GIST 2018
- All right reserved @ Jaewook Kang 2017-2018
누구나 TensorFlow!
J. Kang Ph.D.
Call for Contribution to EveryTF Group!
jwkang@soundl.ly 로 메일
– 같이 집단 지성을 만들어가요!
– 관심 분야!
• GAN / VAE
• RL
• Mobile CNN
• Etc. Applications
100
누구나 TensorFlow!
J. Kang Ph.D.
모두연 MoT랩 소개
딥러닝을 활용하여 세상을 이롭게 할 IoT/Mobile
App 개발에 대한 연구를 같이 해봐요!!
 https://www.facebook.com/lab4all/posts/761099760749661
 jwkang@soundl.ly 로 메일
Keywords:
– Thin CNN Model
– Model Pruning
– Tensorflow + lite
– Embedded Sys. (IoT)
– Android Mobile/Things
101

More Related Content

What's hot

MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 Jaewook. Kang
 
181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkangJaewook. Kang
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래Joon Kim
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용r-kor
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향LGCNSairesearch
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우NAVER D2
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기Byoung-Hee Kim
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초Hyungsoo Ryoo
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경NAVER D2
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요Byoung-Hee Kim
 
[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개Donghyeon Kim
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작Tae Young Lee
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 

What's hot (20)

MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015
 
181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기인공지능 방법론 - Deep Learning 쉽게 이해하기
인공지능 방법론 - Deep Learning 쉽게 이해하기
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 

Similar to EveryBody Tensorflow module3 GIST Jan 2018 Korean

[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement LearningKiho Suh
 
Deep neural networks cnn rnn_ae_some practical techniques
Deep neural networks cnn rnn_ae_some practical techniquesDeep neural networks cnn rnn_ae_some practical techniques
Deep neural networks cnn rnn_ae_some practical techniquesKang Pilsung
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84Soukwon Jun
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural NetworksSanghoon Yoon
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터Donghyeon Kim
 
Animal science with data science
Animal science with data scienceAnimal science with data science
Animal science with data scienceYoungjun Na
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition준영 박
 
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성Hye-rim Jang
 
연구실 세미나 Show and tell google image captioning
연구실 세미나 Show and tell google image captioning연구실 세미나 Show and tell google image captioning
연구실 세미나 Show and tell google image captioninghkh
 
[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...Susang Kim
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Networkagdatalab
 
[논문리뷰] 딥러닝 적용한 EEG 연구 소개
[논문리뷰] 딥러닝 적용한 EEG 연구 소개[논문리뷰] 딥러닝 적용한 EEG 연구 소개
[논문리뷰] 딥러닝 적용한 EEG 연구 소개Donghyeon Kim
 
Chapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive netsChapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive netsKyeongUkJang
 

Similar to EveryBody Tensorflow module3 GIST Jan 2018 Korean (15)

[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning
 
Deep neural networks cnn rnn_ae_some practical techniques
Deep neural networks cnn rnn_ae_some practical techniquesDeep neural networks cnn rnn_ae_some practical techniques
Deep neural networks cnn rnn_ae_some practical techniques
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural Networks
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터
 
Animal science with data science
Animal science with data scienceAnimal science with data science
Animal science with data science
 
1_Introduction
1_Introduction1_Introduction
1_Introduction
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition
 
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성
20150331 msr outreach media_roundtable_deck_연세대강홍구교수_음성합성
 
연구실 세미나 Show and tell google image captioning
연구실 세미나 Show and tell google image captioning연구실 세미나 Show and tell google image captioning
연구실 세미나 Show and tell google image captioning
 
[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...
 
Orientation
OrientationOrientation
Orientation
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
 
[논문리뷰] 딥러닝 적용한 EEG 연구 소개
[논문리뷰] 딥러닝 적용한 EEG 연구 소개[논문리뷰] 딥러닝 적용한 EEG 연구 소개
[논문리뷰] 딥러닝 적용한 EEG 연구 소개
 
Chapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive netsChapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive nets
 

More from Jaewook. Kang

190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pubJaewook. Kang
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814Jaewook. Kang
 
A Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkA Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkA Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkA Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink Jaewook. Kang
 
Jaewook Kang's Phd final defense @ 20151117
Jaewook Kang's  Phd final defense @ 20151117Jaewook Kang's  Phd final defense @ 20151117
Jaewook Kang's Phd final defense @ 20151117Jaewook. Kang
 
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Jaewook. Kang
 

More from Jaewook. Kang (9)

190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814
 
Life is stair-like
Life is stair-likeLife is stair-like
Life is stair-like
 
A Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkA Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB Simulink
 
A Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkA Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB Simulink
 
A Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkA Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB Simulink
 
A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink
 
Jaewook Kang's Phd final defense @ 20151117
Jaewook Kang's  Phd final defense @ 20151117Jaewook Kang's  Phd final defense @ 20151117
Jaewook Kang's Phd final defense @ 20151117
 
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
 

EveryBody Tensorflow module3 GIST Jan 2018 Korean

  • 1. 누구나 TensorFlow! J. Kang Ph.D. 누구나 TensorFlow - Module3 : DNN 훈련을 위한 기법 + Convolutional neural networks Jaewook Kang, Ph.D. jwkang@soundl.ly Jan. 2018 1 © 2018 Jaewook Kang All Rights Reserved
  • 2. 누구나 TensorFlow! J. Kang Ph.D.  GIST EEC Ph.D. (2015)  신호처리 과학자, 삽질러  누구나 TensorFlow Group leader  https://www.facebook.com/jwkkang  좋아하는 것:  통계적 신호처리 / 무선통신 신호처리  임베디드 오디오 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. Contributors 3 Jaewook Kang (Soundlly) Soonwon Ka (Soundlly) Jihwan Lee (SNU) Cheolyoung Kwak (SNU) Hyoyoung Jung (GIST) Donghyun Kim (GIST)
  • 4. 누구나 TensorFlow! J. Kang Ph.D. Reviewers  Sun Young Park (Korea Univ.)  Hongkyong Kim (Korea Aerospace Research Institute, GIST)  Hansol Kim (GIST) 4
  • 5. 누구나 TensorFlow! J. Kang Ph.D.  딥러닝과 연금술 Talk @ NIPS2017 (https://brunch.co.kr/@jangwonjkim/26 ) • 5
  • 6. 누구나 TensorFlow! J. Kang Ph.D.  딥러닝과 연금술 Talk @ NIPS2017 (https://brunch.co.kr/@jangwonjkim/26 ) • NIP2017의 test-of-time award 수상자 알리는 수상소감에서 딥러닝 연구 커뮤티니에 쓴소리를 던졌다. 6 The current practice in machine learning is akin to "alchemy”!! - Ali Rahimis- Ref: https://www.youtube.com/watch?v=Qi1Yry33TQE
  • 7. 누구나 TensorFlow! J. Kang Ph.D.  딥러닝과 연금술 Talk @ NIPS2017 (https://brunch.co.kr/@jangwonjkim/26 ) • 알리의 주장 • 딥러닝연구는 현재 보다 더 엄격한 방식으로 수행되어야 한다. • 새로운 방법을 고안하고 기술하는 내용이 주를 이루어 상대적으로 이론적/실험적 검증과 분석이 예전보다 간과되고 있다. • 이런 현상을 ”연금술”에 비유했다. • 문제의 본질을 더 잘 이해하고 분석해 나가는 연구가 아닌 새로운 방법을 계속 시도하는 연구는 지양해야한다. 7
  • 8. 누구나 TensorFlow! J. Kang Ph.D.  딥러닝과 연금술 Talk @ NIPS2017 (https://brunch.co.kr/@jangwonjkim/26 ) • 얀 레쿤의 주장 • 과거에는 학문의 엄격함에 얽매여서 뉴럴넷 기술이 발전하는데 어려움을 겪었다. • 새로운 방법을 개발하는 것이 공학! • 앞으로는 수학적/실험적 엄격함에 얽매지는 과거의 실수를 반복하지 말자. 8 •(https://www.facebook.com/yann.lecun/posts/10154938130592143 )
  • 9. 누구나 TensorFlow! J. Kang Ph.D.  딥러닝과 연금술 Talk @ NIPS2017 (https://brunch.co.kr/@jangwonjkim/26 ) • 여러분의 어느쪽에 동의 하시나요 ? • 여러분의 연구는 어떤방식으로 하시나요 ? 9
  • 10. 누구나 TensorFlow! J. Kang Ph.D. 강의 일정 10 3일차 1/13 토 딥러닝 훈련 기법 2 -딥러닝 훈련을 위한 몇가지 기법: -LAB10: Relu Activation 해보기 -LAB11: DropOut 해보기 -LAB12: Batch Normalization 해보기 -LAB13: Adam optimizer 해보기 -LAB14: Revisit DBN with ReLu, DropOut, Batch Normalization -Extra LAB : Maxout Convolutional Neural Net 5 -Biological inspiration for CNN -Convolutional layer -LAB15: Filtering in CNN 실습 -Why convolution? -Pooling layer -LAB16: Pooling in CNN 실습 - CNN basic architecture - Modern CNNs -LAB17: LeNet-5 실습 Wrap up 1 - 강의 리뷰 - Mobile ML lab 소개
  • 11. 누구나 TensorFlow! J. Kang Ph.D. GitHub link GitHub link (all public) – https://github.com/jwkanggist/EveryBodyTensorFlow – Facebook page: goo.gl/NvdbWq Aymeric' s repo – https://github.com/aymericdamien/TensorFlow-Examples Prof. Sung Kim’s repo – https://github.com/hunkim/DeepLearningZeroToAll 11
  • 12. 누구나 TensorFlow! J. Kang Ph.D. 1. 딥러닝 훈련 기법 1. LAB10: Relu Activation 해보기 2. LAB11: DropOut 해보기 3. LAB12: Batch Normalization 해보기 4. LAB13: Adam optimizer 해보기 5. LAB14: Revisit DBN with ReLu, DropOut, Batch nomalization 6. -Extra LAB : Maxout 딥러닝 학자들은 겨울을 이겨낸 4가지 비법 12
  • 13. 누구나 TensorFlow! J. Kang Ph.D. Keys to go deep into Deep learning Lack of Labeled data  Overfitting Problem – Deep Belief Networks (DBN) (2006,2007) • Stacking RBM + Layer-wise unsupervised Pre-training – DropOut (2012) – DropConnection (2013) Vanishing Gradient Problem – Stacking RBM + Layer-wise unsupervised Pre-training (2006) – ReLU activation (2010,2011) – CNN: Convolutional network (1998) – RNN : Long short-term memory for RNN (1997) – Batch normalization (2015) Learning Computational cost – GPU computing ! 13
  • 14. 누구나 TensorFlow! J. Kang Ph.D. Keys to go deep into Deep learning Lack of Labeled data  Overfitting Problem – Deep Belief Networks (DBN) (2006,2007) • Stacking RBM + Layer-wise unsupervised Pre-training – DropOut (2012) – DropConnection (2013) Vanishing Gradient Problem – Stacking RBM + Layer-wise unsupervised Pre-training (2006) – ReLU activation (2010,2011) – CNN: Convolutional network (1998) – RNN : Long short-term memory for RNN (1997) – Batch normalization (2015) Learning Computational cost – GPU computing ! 14
  • 15. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – Sigmoid, tanh 함수는 입력값이 양끝에 근접하면 기울기가 ‘0’에 가까워짐 15 f (z) = max(0,z) Logit Z f (z) = max(0,z)
  • 16. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문1: 사람들이 이 간단한 activation을 왜 이제까지 사용하지 않았을까? • 이유1: 미분 불가능성 – piecewise linear 한 이 activation은 x=0에서 미분 불가능 ! »  sub-gradient approximation을 사용해야함 »  err-backprop 알고리즘에서 approx. error propagation에 대한 우려 • 이유2: 발산 가능성 – Gradient exploding: 입력 X가 양의 방향으로 발산한 가능성을 가짐 16
  • 17. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문1: 사람들이 이 간단한 activation을 왜 이제까지 사용하지 않았을까? 17
  • 18. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까? • 이유1: Biologically plausible ! – 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1- 4%이다. (Bengio 2011) – Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨 • 이유2: Sparsifying deep neural network! – ReLu는 on/off operation을 하기 때문에 특정 뉴런을 deactivation 시킨다. – 해당 task에 필요한 뉴런 구조/개수를 찾아준다. – Computational efficiency! 18 우리말이 맞제? 어느 둘 신경학자
  • 19. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까? • 이유1: Biologically plausible ! – 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1- 4%이다. (Bengio 2011) – Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨 • 이유2: Sparsifying deep neural network! – ReLu는 on/off operation을 하기 때문에 특정 뉴런을 deactivation 시킨다. – 해당 task에 필요한 뉴런 구조/개수를 찾아준다. – Computational efficiency! 19 우리말이 맞제? 어느 둘 신경학자
  • 20. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까? • 이유1: Biologically plausible ! – 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1- 4%이다. (Bengio 2011) – Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨 • 이유2: Sparsifying deep neural network! – ReLu는 on/off operation을 하기 때문에 특정 뉴런을 deactivation 시킨다. – 해당 task에 필요한 뉴런 구조/개수를 찾아준다. – Computational efficiency! 20 우리말이 맞제? 어느 둘 신경학자
  • 21. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – R Hahnloser etal. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature (2000) – 질문2: 왜 사람들이 ReLu activationd을 DNN에 사용하기 시작했을까? • 이유1: Biologically plausible ! – 신경학자 왈 – 뇌에서 일반적으로 뉴런이 동시에 activation되는 것은 1- 4%이다. (Bengio 2011) – Sigmoid activation을 사용하면 DNN의 뉴런이 50%이상 동시 activation 됨 • 이유2: Promoting Sparsity deep neural network! – ReLu는 on/off operation을 하기 때문에 특정 뉴런을 deactivation 시킨다. – 해당 task에 필요한 뉴런 구조/개수를 찾아준다. – Computational efficiency! 21 우리말이 맞제? 어느 둘 신경학자
  • 22. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – Bengio etal, “Deep Sparse Rectifier Neural Networks” PMLR (2011) – 그래서 Bengio 교수님 사용해 보시니… 22
  • 23. 누구나 TensorFlow! J. Kang Ph.D. Revisit ReLu Activation ReLU (Rectified Linear unit) – Bengio etal, “Deep Sparse Rectifier Neural Networks” PMLR (2011) – 그래서 Bengio 교수님 사용해 보시니… • 관찰1: Resolve Gradient vanishing problem – Err. Backprop 알고리즘에서 아랫 layer까지 gradient가 잘 전달됨! • 관찰2: 미분 불가 at x=0는 문제없음 – 미분가능한 Softplus activation과 비교. 성능 비교우위 실험적 확인 • 관찰3: 계산 효율이 매우 좋다  6배 정도 개선 (네트워크 구조에 따름) • 관찰4: weight sparsity가 20% 정도로 training 됐을때 가장 성능이 좋더라 . – Weight training 할때 L1 regularization 사용 • 관찰5: 발산문제- 1) Hard saturation 하는 방법, 2) sigmoid activation 추가방법, 3) Batch normalization. • 관찰6: ReLu를 사용하니 unsupervised pre-training을 안해도 성능이 크게 떨어지지 않더라. 23
  • 24. 누구나 TensorFlow! J. Kang Ph.D. LAB10: Relu Activation 적용해보기 LAB7에 ReLU activation을 적용해 보자! – 성능을 올릴 수 있는가? – Training_epoch를 줄일 수 있는가? – Learning_rate를 어떻케 조절 해야하는가? – Layer의 개수를 줄일 수 있는가? 24
  • 25. 누구나 TensorFlow! J. Kang Ph.D. Dropout  핵심질문: Overfitting을 최소화 하면서 DNN구조의 표현력을 최대한 활용하려면 어떻케 해야하는가? – Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014) 25
  • 26. 누구나 TensorFlow! J. Kang Ph.D. Dropout  Again, from Biological inspiration ! – 질문1: 자연선택에서 유성생식이 성공적인 이유는 무엇인가? • 자연선택 측면에서 생각하면 무성생식이 우성형질을 보존하기 유리해 보이지 않는가? – 답) 유성생식 (Sexual reproduction): 유전자 전파 +형질 생성+ 형질 교배 • 유전자 전파+ 형질 생성: – 부모의 유전자를 물려받음. – 주어진 환경에 적응된 형질 – 각 generation에서 형질이 생성된다. • 형질 교배: – 부 + 모 가 유전자를 절반씩 섞음 – 약간의 돌연변이를 촉진하여 특정 환경에 유전자가 너무 적응되는 것을 막음 26
  • 27. 누구나 TensorFlow! J. Kang Ph.D. Dropout  유성생식과 Dropout + DNN – 유전자 전파 + 형질 생성: •  주어진 네트워크(환경)에 대해서, 일부 데이터 셋(유전자) 을 가지고 weight 네트워크를 훈련한다. (형질 생성) – 형질 교배 •  각 네트워크(환경)에 훈련된 weight 평균을 취한다 (교배한다). – 결론: DropOut으로 다양한 네트워크를 형성하고 그 weight average하면 다양한 환경에서 살아남을 수 있는 모델을 만들수 있다! – where • 환경  dropouted 딥러닝 네트워크 • 유전자  데이터 • 유전자 전파  훈련 • 형질  weight • 형질 교배  weight averaging 27
  • 28. 누구나 TensorFlow! J. Kang Ph.D. Dropout  무성생식과 DNN (비교) – 유전자 전파 + 형질 생성: •  주어진 네트워크(환경)에 대해서, 전체 데이터 셋(유전자) 을 가지고 weight 네트워크를 훈련한다. (형질 생성) – 결론: • 무성생식은 특정 유전자+환경에 너무 적응된 형질를 생성한다. • 이런 형질은 새로운 입력에 대한 적응력이 떨어진다. • 마찬가지로 한 DNN 구조에 대해서만 훈련한 모델은 다양한 입력에 대한 적응력이 떨어진다.  overfitting – where • 환경  dropouted 딥러닝 네트워크 • 유전자  데이터 • 유전자 전파  훈련 • 형질  weight • 형질 교배  weight averaging 28
  • 29. 누구나 TensorFlow! J. Kang Ph.D. Dropout  핵심질문: Overfitting을 최소화 하면서 DNN구조의 표현력을 최대한 활용하려면 어떻케 해야하는가? – Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014) • 답1) 데이터 셋을 나누어 mini-batch마다 다른 DNN 구조를 학습시킨다. • 답2) 다양한 DNN 구조로 학습한 weight의 평균값을 inference에 사용한다. 29
  • 30. 누구나 TensorFlow! J. Kang Ph.D. Dropout 30  Training Algorithm with Dropout – STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로 dropout시킨다. • 그렇케 생성된 graph를 thin graph라고 한다. • Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다. • Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ).
  • 31. 누구나 TensorFlow! J. Kang Ph.D. Dropout 31  Training Algorithm with Dropout – STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로 dropout시킨다. • 그렇케 생성된 graph를 thin graph라고 한다. • Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다. • Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ). – STEP2) thin graph를 total_batch의 개수 M 만큼 생성한다. – STEP3) 각 thin graph를 다른 데이터 셋 (mini-batch)에 대해서 훈련한다. • 결과물: thin graph weight [ W_0,….,W_M-1}를 얻는다. – STEP4) thin graph의 각 hidden layer에 대해서 weight average한다. WL = p WL,i iÎ{0,M -1} å where WL,i from the L-th layer of the i-th thin graph. Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
  • 32. 누구나 TensorFlow! J. Kang Ph.D. Dropout 32  Training Algorithm with Dropout – STEP1) 각 hidden layer의 각 variable unit을 ”p”의 확률로 dropout시킨다. • 그렇케 생성된 graph를 thin graph라고 한다. • Thin graph_0의 한 layer의 activation은 y = R * f(W_0 x + b) 으로 정의 한다. • Where “* “ is element elementwise multiplication and R ~ Bernoulli( p ). – STEP2) thin graph를 total_batch의 개수 M 만큼 생성한다. – STEP3) 각 thin graph를 다른 데이터 셋 (mini-batch)에 대해서 훈련한다. • 결과물: thin graph weight [ W_0,….,W_M-1}를 얻는다. – STEP4) thin graph의 각 hidden layer에 대해서 weight average한다. WL = p WL,i iÎ{0,M -1} å where WL,i from the L-th layer of the i-th thin graph.
  • 33. 누구나 TensorFlow! J. Kang Ph.D. Dropout 33  MNIST comparison results – All dropout nets use p = 0.5 for hidden units and p = 0.8 for input units. Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
  • 34. 누구나 TensorFlow! J. Kang Ph.D. Dropout 34  MNIST comparison results – All dropout nets use p = 0.5 for hidden units and p = 0.8 for input units. Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
  • 35. 누구나 TensorFlow! J. Kang Ph.D. Dropout 35  Generated feature map with DropOut – MNIST dataset – DropOut은 feature map이 part-representation을 가지도록 한다. Hinton etal, “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, (2012,2014)
  • 36. 누구나 TensorFlow! J. Kang Ph.D. LAB11: DropOut을 구현해보자 LAB7에 DropOut을 적용해 보자! – 성능을 올릴 수 있는가? – Training_epoch를 줄일 수 있는가? – Learning_rate를 어떻케 조절 해야하는가? – Layer의 개수를 줄일 수 있는가? 36
  • 37. 누구나 TensorFlow! J. Kang Ph.D. LAB11: DropOut을 구현해보자 LAB7에 DropOut을 적용해 보자! – tf.layers.dropout() vs tf.nn.dropout() 차이? – tf.layers.dropout() • Dropout을 dropout rate로 정의 • Dropout rate=0.1  10%로 layer unit을 drop! – tf.nn.dropout() • Dropout을 keep prob로 정의 • Keep_prob = 0.1  10%로 layer unit을 keep! 37
  • 38. 누구나 TensorFlow! J. Kang Ph.D. LAB11: DropOut을 구현해보자 LAB7 에 DropOut을 적용해 보자! 38 Training config: learning_rate = 0.005 training_epochs = 5000 batch_size = 500 LAB10: Before applying drop out
  • 39. 누구나 TensorFlow! J. Kang Ph.D. LAB11: DropOut을 구현해보자 LAB7 에 DropOut을 적용해 보자! 39 LAB11: After applying drop out Training config: learning_rate = 0.005 training_epochs = 5000 batch_size = 500 dropoutrate_in_trainin g = 0.8
  • 40. 누구나 TensorFlow! J. Kang Ph.D. Batch Normalization  목적: 딥러닝의 훈련 속도를 더 빠르게 하고싶다!  Room: learning rate! – Learning rate가 너무 크면 속도는 빨라지나 Gradient vanishing/exploding 문제가 발생한다. • Gradient vanishing : 기억? 나니.. • Gradient exploding: gradient값이 점점 커지면서 발산하는 경우  핵심질문: Gradient vanishing/exploding 문제를 피하면서 learning rate 값을 크게 설정할 수 있는 모델을 설계할 수 있는가? – Ref: Szegedy etal “Batch normalization: accelerating deep network training by reducing internal covariate shirt” (2015) • ReLu activation을 사용하면 Gradient Vanishing 문제를 어느정도 완화 할 수 있지만, 큰 learning rate와 함께 사용하면 Gradient exploding문제가 생김 •  학습속도( learning rate) 를 작게 유지 할 수 밖에 없음 40
  • 41. 누구나 TensorFlow! J. Kang Ph.D. Batch Normalization  Internal covariate shift - Gradient Vanishing의 근본적인 원인 – Training에서 앞단 layer의 weight의 영향으로 바로 윗단 layer의 input distribution 이 변하는 현상 – Input layer: 정규화 된 입력분포 • Zero-mean / unit variance – Middle hidden layer: • 아랫단의 weight에 의존적으로 입력 분포가 변한다. • Input layer에서 먼 layer일수록 심함 41 Zero mean unit variance input Input distribution change upto below layers
  • 42. 누구나 TensorFlow! J. Kang Ph.D.  Internal covariate shift - Gradient Vanishing의 근본적인 원인 – Training에서 앞단 layer의 weight의 영향으로 바로 윗단 layer의 input distribution 이 변하는 현상 – Input layer: 정규화 된 입력분포 • Zero-mean / unit variance – Middle hidden layer: • 아랫단의 weight에 의존적으로 입력 분포가 변한다. – 이전 layer에서 오는 입력분포가 Zero-mean/unit var인것으로 가정하고 학습하나 실제는 그렇지 않다. • Learning rate를 높이면 분포가 크게 변하기 때문에 쉽게 발산할 수 있다. • Input layer에서 먼 layer일수록 변화가 심함 Batch Normalization 42 Zero mean unit variance input 입력분포 p(mu=0,var=1) 입력분포 q(p) 입력분포 r(q) 입력분포 o(r) 입력분포 축 p(mu=0,var=1)
  • 43. 누구나 TensorFlow! J. Kang Ph.D.  Batch normalization Training: 각 layer의 입력분포를 정규화 – 각 layer input의 elements간 independency 를 가정하고 아래를 수행한다. – Input Feature X의 correlation 특성을 보존하기 위한 affine transform Batch Normalization 43 Zero mean unit variance input 입력분포 p(mu=0,var=1) 입력분포 축 p(mu=0,var=1) Batch Norm. Batch Norm. {g i},{bi} {g i},{bi} Activation Activation
  • 44. 누구나 TensorFlow! J. Kang Ph.D.  Applying Google Inception model with LSVRC 2012 dataset – BN: Inception + BN + ReLu – BN-x5 는 5배의 learning_rate 가속을 의미한다. Batch Normalization 44 Ref: Szegedy etal “Batch normalization: accelerating deep network training by reducing internal covariate shirt” (2015)
  • 45. 누구나 TensorFlow! J. Kang Ph.D. Batch Normalization  batch norm 잘 정리된 국문블로그 – https://shuuki4.wordpress.com/2016/01/13/batch-normalization  Low level batch norm implementation – https://gist.github.com/tomokishii/0ce3bdac1588b5cca9fa5fbdf6e1c412 45
  • 46. 누구나 TensorFlow! J. Kang Ph.D. LAB12: Batch Normalization을 적용해보자 LAB10에 Batch Normalization을 적용해 보자! – Learning rate를 얼마나 키울 수 있을까? • 논문에서는 기존의 6배 – Dropout과 같이 사용하지 말자. 호환이 안좋음. • 왜 그럴까? – tf.contrib.layers.batch_norm()을 사용해서 네트워크를 구성해 보자 46
  • 47. 누구나 TensorFlow! J. Kang Ph.D. LAB12: Batch Normalization을 적용해보자 LAB10에 Batch Normalization을 적용해 보자! 47 Training config: learning_rate = 0.005 training_epochs = 5000 batch_size = 500 No dropOut LAB10: Before applying batch norm
  • 48. 누구나 TensorFlow! J. Kang Ph.D. LAB12: Batch Normalization을 적용해보자 LAB10에 Batch Normalization을 적용해 보자! 48 Training config: learning_rate = 0.1 training_epochs = 100 batch_size = 30 No dropOut LAB12: After applying batch norm.
  • 49. 누구나 TensorFlow! J. Kang Ph.D. 2. Convolutional Neural Networks 1.Biological inspiration in CNN 2. Convolutional layer 3. Lab 15 Filtering over CNN 4. Pooling layer 5. Lab 16 Pooling over CNN 6. why CNN 7. CNN basic architecture 8. Lab 17 LeNet5 implementation 아니 그 CNN 말구요 ;;; 49
  • 50. 누구나 TensorFlow! J. Kang Ph.D. Reference : Machine learning fundamental 50 Hands-On Machine Learning With Scikit-Learn & TensorFlow 2017 Aurelien Geron, Google O’Reilly 본 강의는 해당 교재를 참고했음을 사전에 알립니다.
  • 51. 누구나 TensorFlow! J. Kang Ph.D. 기타 참고 자료 Gaurav Mittal 자료 (very good!) – https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn Standford n231 CNN lecture 2017 – http://cs231n.stanford.edu/ – http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture5.pdf  라온피플 기술블로그 – https://laonple.blog.me/220643128255 51
  • 52. 누구나 TensorFlow! J. Kang Ph.D. CNN을 한마디로 요약하면? Convolutional Neural Networks (CNN) 52 한 layer에 대해서 기존 Fully connected networks 에서 input X과 logit Z 사이의 관계를 “Matrix Multiplication”으로 표현했던 것을 “Convolution”으로 대체하여 표현하여 계산효율성/overfitting을 개선한 networks. 이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html Logit: Z Input: X
  • 53. 누구나 TensorFlow! J. Kang Ph.D. CNN is Biologically Inspired! Emerged from the study of the brain’s visual cortex – Visual system의 뉴런은 전체를 보지 않는다! • Retina 뉴런은 제한된 영역의 “local receptive field”를 가진다. • Local receptive field 에서 Edge와 같은 “low-level feature”를 인식한다. 53 이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
  • 54. 누구나 TensorFlow! J. Kang Ph.D. CNN is Biologically Inspired! Emerged from the study of the brain’s visual cortex – 상위 layer의 뉴런은 에서는 Retina 뉴런에서 인식한 ”Low-level features”를 복합적으로 결합하여 “High-level features”를 구성한다. – High-level feature들은 단계적으로 결합되어 “Entire objects pattern”를 구성하고 뇌에서 인지 한다. 54 이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn Area V1 Area V2 Area V3 Area V4Retina Edges Object parts Entire objects
  • 55. 누구나 TensorFlow! J. Kang Ph.D. CNN을 구성하는 layers – Convolutional layer • Generation of feature map (layer output) • Local feature reception and combination – Pooling layer • Spatial / temporal sub-sampling of features 55
  • 56. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer 1D Discrete Convolution 56 Layer logit Or Feature map Z[i] = (X ÄW )[i] = X[k]W[i - k] k å Weight or Filter or Kernel Layer Input
  • 57. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer 1D Discrete Convolution 57 Ä Ä Z[i] Z[i] W[i] W[i] X[i] X[i] Z[i] = (X ÄW )[i] = X[k]W[i - k] k å
  • 58. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer 2D Discrete Convolution (Filtering) – Convolution : – Cross Correlation: – 대부분의 ML라이브러리에서 CNN에 사용되는 conv연산을 “Cross Correlation” 연산으로 구현한다. • For symmetric features, both results are the same. 58 Z[i, j] = (X ÄW )[i, j] = X[i - m, j - n]W[m,n] n å m å Z[i, j] = (X ÄW )[i, j] = X[i + m, j + n]W[m,n] n å m å
  • 59. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer 2D Discrete Convolution (Filtering) 59 Z[i, j] = (X ÄW )[i, j] = X[i + m, j + n]W[m,n] n å m å https://www.slideshare.net/SeongwonHwang/convolutional-neural-network-cnn-presentation-from-theory-to-code-in-theano Feature map(Z) Kernel (W) Input (X)
  • 60. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer 2D Discrete Convolution Example – https://goo.gl/WkvUAv 60 =Layer Input X =Layer Logit Z Layer Kernel W
  • 61. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer Zero padding – Filtering전에 입력 X에 추가로 zero padding 하여 출력되는 feature map Z의 사이즈를 조절하는 기법 • zero padding없는 경우 기본적으로 dim(X) > dim(Z) • 참고 링크: https://goo.gl/u3wJto 61 No zero padding, (p=0) Unit stride, (s=1) Zero padding, (p=2) Unit stride, (s=1)
  • 62. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer Strides – Filtering시 stepsize, s, 를 조절하여 출력되는 feature map Z의 사이즈를 조절하는 방법 – Strides enables us to skip some information on X. • 참고 링크: https://goo.gl/u3wJto 62 No zero padding, (p=0) non-unit stride, (s=2) Zero padding, (p=1) non-unit stride, (s=2)
  • 63. 누구나 TensorFlow! J. Kang Ph.D. CNN – Convolutional layer Full description of feature map size after filtering – Feature width: w – Feature height: h – Feature depth: d 63 p - Filter size: e - Number of filters: k - Zero padding size: p d w h d < 3D array of feature map input > < CNN filtering configuration >
  • 64. 누구나 TensorFlow! J. Kang Ph.D. Full description of feature map size after filtering CNN – Convolutional layer 64 wout = Ceil w - e+ 2p s æ èç ö ø÷ +1 hout = Ceil h - e+ 2p s æ èç ö ø÷ +1 dout = k p d w h d < 3D array of feature map input > < CNN filtering configuration >
  • 65. 누구나 TensorFlow! J. Kang Ph.D. Lab 15 Filtering over CNN tf.nn.conv2d() 함수를 사용해서 필터링을 해보자! – Vertical filter – Horizontal filter – 기타 user-defined filter – Stride 값 조절 해보기 65
  • 66. 누구나 TensorFlow! J. Kang Ph.D. CNN – Pooling layer Max pooling – Filtering 으로 출력된 feature map Z의 dimension을 줄이기 위함 – 사이즈 ’e’를 가지는 tile를 만들어 그안에서 max값을 출력 – Filtering과 마찬가지로 stride의 개념이 존재 66 non-unit stride, (s=2, e=2) Z[i]= max(X ´tile)[i]= max(X[k];k Îtile)
  • 67. 누구나 TensorFlow! J. Kang Ph.D. CNN – Pooling layer Max pooling – Feature map width: w – Feature map height: h – Stride : s (non overlapping) – Max pooling size: e 67 non-unit stride, (s=2, e=2) wout = Ceil w - e s æ èç ö ø÷ +1 hout = Ceil h - e s æ èç ö ø÷ +1 e w h e
  • 68. 누구나 TensorFlow! J. Kang Ph.D. Lab 16 pooling over CNN tf.nn.max_pool() 사용해서 max-pooling을 해보자 – Tile size를 조정해보자 – Stride size를 조정해보자 68
  • 69. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution? 왜 CNN에서는 계산 효율성이 좋아지는가? – Weight sharing – Sparse connectivity 69
  • 70. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution? Weight Sharing! (Parameter sharing) – 한 feature map 생성에 대해서 weight가 공유! – 한 layer에서 feature map의 개수는 kernel 개수만큼 존재. 70 이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html Logit: Z Input: X All the same Weights! All different Weights!
  • 71. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution? Sparse Connectivity – Input X의 길이를 N이라고 했을때 kernel size, K <<N임 • Computationally efficient! • Memory efficient! 71 이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html Logit: Z Input: X Kernel size =3 Sparse! Kernel Size = N Dense
  • 72. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution? Sparse Connectivity – Layer를 깊게 쌓으면 Sparse Network에서도 A output layer Unit이 전체 input layer units과 간접적으로 연결될 수 있음 – 많은 practical application에서 Sparse network가좋은 성능을 보이고 있음 72
  • 73. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution?  https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn 73
  • 74. 누구나 TensorFlow! J. Kang Ph.D. CNN - Why Convolution?  https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn 74
  • 75. 누구나 TensorFlow! J. Kang Ph.D. CNN Implementation issue Convolutional layers – Memory requirement – Size of filter • Don’t use convolutional kernel (weight) that are too large Pooling layers – Density of feature maps • Too much sub-sampling destroys the network ability to carry important information 75
  • 76. 누구나 TensorFlow! J. Kang Ph.D. CNN Basic Architectures Stacking of (Conv layer + pooling layer) – 기본적으로 Conv layer + pool layer를 쌓는 방식 – Output layer 바로 전 몇 단은 FNN을 쌓는다 – Application에 따라서 다양한 configuration이 존재 76
  • 77. 누구나 TensorFlow! J. Kang Ph.D. Old CNN: LeNet (1994) 77  The first CNN (1994,1998) – CNN의 구조를 처음으로 제안함: conv  avg pooling  activation • Conv: spatial feature • Avg. pooling: spatial average of features • Sparse connection matrix between layers to avoid large computational cost Y. LeCun etal. “Gradient-based learning applied to document recognition,” Proc. Of IEEE 1998
  • 78. 누구나 TensorFlow! J. Kang Ph.D.  The first CNN (1994,1998) – CNN의 구조를 처음으로 제안함: conv  avg pooling  activation • Conv: spatial feature • Avg. pooling: spatial average of features • Sparse connection matrix between layers to avoid large computational cost Old CNN: LeNet5 (1994) Layer Type Output Maps Output Size Filter size Stride Activation Out Fully Connected - 10 - RBF F6 Fully Connected - 84 - tanh C5 Convolutional 120 1x1 5x5 1 tanh S4 Avg Pooling 16 5x5 2x2 2 - C3 Convolutional 16 10x10 5x5 1 tanh S2 Avg Pooling 6 14x14 2x2 2 - C1 Convolutional 6 28x28 5x5 1 tanh In Input 1 32x32 - 78 Radian Basis Function (RBF)
  • 79. 누구나 TensorFlow! J. Kang Ph.D. Modern CNN: AlexNet (2012) The first CNN structure in the era of DNN – A deeper and much wider version of the LeNet – Winner of ImageNet ILSVRC challenge 2012 • 17% top-5 error rate (the 2nd best was 26%) 79 A. Krizhevsky et al. “ImageNet Classification with Deep Convolutional Neural Networks,” NIPS 2012
  • 80. 누구나 TensorFlow! J. Kang Ph.D. Modern CNN: AlexNet (2012) The first CNN structure in the era of DNN – A deeper and much wider version of the LeNet – Winner of ImageNet ILSVRC challenge 2012 • 17% top-5 error rate (the 2nd best was 26%) 80 이미지출처: https://www.slideshare.net/jbhuang/lecture-29-convolutional-neural-networks- computer-vision-spring2015
  • 81. 누구나 TensorFlow! J. Kang Ph.D. Modern CNN: AlexNet (2012) The first CNN structure in the era of DNN – Applying several recent DNN techniques: • ReLu activation, Dropout, Max pooling, Local response normalization – Applying data augmentation • 입력 image X를 간단한 처리를 해서 추가 훈련데이터로 사용하는 것 81 이미지출처: https://www.quor a.com/Is-a- convolution- neural-network- immune-to- image- resolutions-If-so- what-makes-this- possible
  • 82. 누구나 TensorFlow! J. Kang Ph.D. Modern CNN: AlexNet (2012) 82 Layer Type Output Maps Output Size Filter size Stride Paddin g Activa tion Out Fully Connected - 1000 - - - softma x F9 Fully Connected - 4096 - - - ReLu F8 Fully Connected - 4096 - - - ReLu C7 Convolutional 256 13x13 3x3 1 SAME ReLu C6 Convolutional 384 13x13 3x3 1 SAME ReLu C5 Convolutional 384 13x13 3x3 1 SAME ReLu S4 Max Pooling 256 13x13 3x3 2 VAILD - C3 Convolutional 256 27x27 5x5 1 SAME ReLu S2 Max Pooling 96 27x27 3x3 2 VAILD - C1 Convolutional 96 55x55 11x11 4 SAME ReLu In Input 3 (RGB) 224x224 -
  • 83. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet GoogLeNet (2014) 83 이미지 출처: https://adeshpande3.github.io/adeshpande3.github.io/The-9-Deep- Learning-Papers-You-Need-To-Know-About.html
  • 84. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet GoogLeNet (2014) – Winning ImageNet 2014 challenge with top-5 error rate below 7% – Trend: Deeper and Deeper – 단순하게 깊은 네트워크를 만들었을 때 문제점 • 엄청난 수 파라미터 개수 (AlexNet에서 이미 60 million) • 연산량 – GPU를 사용해도 일주일 이상 – 결론: 단순히 깊게만 만들어서는 안된다. • Inception module! 84 - C. Szegedy etal ”Going deeper with convolutions”, IEEE CVPR 2015 - 한글 번역 자료
  • 85. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet GoogLeNet (2014) – Inception module!: Network in network • 하나의 layer를 구성하기 위해서 4개의 micro-convolutional network를 병렬로 연결하고 그 결과를 concatenation함 • 즉 같은 layer에 서로 다른 크기를 가지는 conv filter를 적용하여 다른 scale의 feature를 얻을 수 있도록 함 – 10 time fewer parameters than AlexNet (60 million  5 million) 85 - C. Szegedy etal ”Going deeper with convolutions”, IEEE CVPR 2015 - 한글 번역 자료 Inception module 구성
  • 86. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet GoogLeNet (2014) 86 GoogLeNet 9 inception module in network AlexNet
  • 87. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Winner of ImageNet 2015 with top-5 error rate 3.6% – Trend: Still going to Deeper 87 - K. He etal “Deep residula learning for image recognition,” IEEE CVPR 2016
  • 88. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Winner of ImageNet 2015 with top-5 error rate 3.6% – Trend: Still going to Deeper – 문제점: • Vanishing/Exploding Gradient 문제: Sparse network구조를 가지는 CNN에서는 기존 DBN 만큼 문제가 되지 않았지만 구조가 깊어지면서 다시 문제가 됨 • Batch normalization, ReLu, DropOut과 같은 기법으로도 역부족이 드러남 – 결론: 몬가 또 다른 새로운 구조가 필요하다. 88 - K. He etal “Deep residual learning for image recognition,” IEEE CVPR 2016
  • 89. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Residual learning: 모델이 입출력 관계인 F(X)=H(X)을 학습하는 것이 아니고 residual인 F(X) = H(X) – X을 학습하도록 하자! • Layer 입력 : X • Layer 출력 : F(X) • Weight 에 의한 모델: H(X) 89 - K. He etal “Deep residual learning for image recognition,” IEEE CVPR 2016 Conventional unit Residual unit Skip connection!
  • 90. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Residual learning: 모델이 입출력 관계인 F(X)=H(X)을 학습하는 것이 아니고 residual인 “F(X) = H(X) – X”을 학습하도록 하자! • Residual0인 방향으로 F(X)을 학습시키고 그 결과에 H(X)= F(X) +X을 사용한다. • Residual0이 되야한다는 방향이 추가되는 것이 학습속도를 가속한다. • 연산량 증가가 거의 없다 (덧셈 하나 증가) 90 - K. He etal “Deep residual learning for image recognition,” IEEE CVPR 2016 Conventional unit Residual unit Skip connection!
  • 91. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Residual Network: – 네트워크 훈련시에 학습이 진행되지 않은 layer는 backpropagation시에 block하도록 설정할 수 있다. •  Vanishing gradient 문제 완화! 91 - K. He etal “Deep residual learning for image recognition,” IEEE CVPR 2016
  • 92. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Residual Network: – 네트워크 훈련시에 학습이 진행되지 않은 layer는 backpropagation시에 block하도록 설정할 수 있다. •  Vanishing gradient 문제 완화! – Layer Variations • ResNet-34 , ResNet-101, ResNet-152 92 - K. He etal “Deep residual learning for image recognition,” IEEE CVPR 2016
  • 93. 누구나 TensorFlow! J. Kang Ph.D. Beyond AlexNet ResNet (2015) – Residual Network: – 네트워크 훈련시에 학습이 진행되지 않은 layer는 backpropagation시에 block하도록 설정할 수 있다. •  Vanishing gradient 문제 완화! – Layer Variations • ResNet-34 , ResNet-101, ResNet-152 93 - 이미지 출처: https://statsmaths.github.io/stat395-f17/class21/
  • 94. 누구나 TensorFlow! J. Kang Ph.D. CNN Historical Trajectory 94 https://www.topbots.com/a-brief-history-of- neural-network-architectures/ Good Region Bad Region
  • 95. 누구나 TensorFlow! J. Kang Ph.D. Lab 17 LeNet5 Implementation 가장 간단한 CNN인 LeNet5를 만들어 보자! 95 Y. LeCun etal. “Gradient-based learning applied to document recognition,” Proc. Of IEEE 1998
  • 96. 누구나 TensorFlow! J. Kang Ph.D. Lab 17 LeNet5 Implementation Layer Type Output Maps Output Size Filter size Stride Activation Out Fully Connected - 10 - RBF F6 Fully Connected - 84 - tanh C5 Convolutional 120 1x1 5x5 1 tanh S4 Avg Pooling 16 5x5 2x2 2 tanh C3 Convolutional 16 10x10 5x5 1 tanh S2 Avg Pooling 6 14x14 2x2 2 tanh C1 Convolutional 6 28x28 5x5 1 tanh In Input 1 32x32 - 96 가장 간단한 CNN인 LeNet5를 만들어 보자! – 머신러닝 개발자들은 아래 표만 있으면 코딩할 수 있다! Radian Basis Function (RBF)
  • 97. 누구나 TensorFlow! J. Kang Ph.D. Lab 17 LeNet5 Implementation 97 가장 간단한 CNN인 LeNet5를 만들어 보자! – Ref github1: https://goo.gl/oJeHTi – Ref github2: https://goo.gl/inRbsp Radian Basis Function (RBF)
  • 99. 누구나 TensorFlow! J. Kang Ph.D. 99 The End 누구나 Tensorflow in GIST 2018 - All right reserved @ Jaewook Kang 2017-2018
  • 100. 누구나 TensorFlow! J. Kang Ph.D. Call for Contribution to EveryTF Group! jwkang@soundl.ly 로 메일 – 같이 집단 지성을 만들어가요! – 관심 분야! • GAN / VAE • RL • Mobile CNN • Etc. Applications 100
  • 101. 누구나 TensorFlow! J. Kang Ph.D. 모두연 MoT랩 소개 딥러닝을 활용하여 세상을 이롭게 할 IoT/Mobile App 개발에 대한 연구를 같이 해봐요!!  https://www.facebook.com/lab4all/posts/761099760749661  jwkang@soundl.ly 로 메일 Keywords: – Thin CNN Model – Model Pruning – Tensorflow + lite – Embedded Sys. (IoT) – Android Mobile/Things 101

Editor's Notes

  1. 안녕하세요 MATLAB 1일차 첫 시간을 시작하겠습니다
  2. 강의를 시작하기 전에 제 소개를 잠깐 드리면 저는 현재 정보통신과 박사과정에 재학중인 학생이고요 강재욱이라고 합니다 즉 여러분의 학교 선배가 입니다 저는 현재 김기선 교수님과 연구를 같이하고 있습니다 연구분야는 간단하게 얘기하면 선형 시스템의 저복잡도 역변환 알고리즘을 연구하고 있습니다 자세한 내용은 저의 홈페이지나 저희 연구실 홈페이지에서 보실수 있습니다. 강의내용에 대한 질문이나 기타 저희 연구에 관심이 있으신 분은 이메일로 연락주시면 자세히 설명해 드리도록 하겠습니다 또한 기타 도움이 필요하신 경우에 연락 주시기바랍니다
  3. 본 matlab 강의는 총 3일에 걸쳐서 3명의 강사가 진행합니다. 그 차례는 다음과 같습니다 따라서 저는 여러분 오늘 아침시간과 내일 아침시간을 함께 즐겁게 보내게 되겠습니다
  4. 먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다 강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요 사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다 혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요? 아니면 씨언어? 잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
  5. 먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다 강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요 사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다 혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요? 아니면 씨언어? 잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
  6. 저의 발표 자료와 강의 구성은 아타웨이 교수의 책을 참고로 하였습니다 책의 PDF파일을 제가 가지고 있습니다 관심있으신 분은 연락 주세요