SlideShare a Scribd company logo
1 of 44
Deep learning Overview
Kang, Min-Guk
1사진: https://medium.com/@startuphackers/building-a-deep-learning-neural-network-startup-7032932e09c
Contents
2
1. Machine learning의 정의 3
2. Machine learning의 분류 4 ~ 8
3. Machine learning의 역사 9
4. Perceptron 10 ~ 16
5. Universal Approximation Theorem 17
6. Neural Network는 Interpolation인가 fitting인가? 18
7. Loss함수에 대한 고찰 19 ~ 25
8. Backpropagation에 대한 수학적 증명 26
9. Stochastic Gradient Descent 27
10. Gradient Vanishing을 해결한 방법 28 ~ 30
11. Xavier initializer(input과 output의 Variance를 비슷하게 만듬) 31
12. CNN의 다양한 기술들 32 ~ 34
13. Overfitting을 대략적으로 확인하는 방법 35
14. Overfitting을 해결한 방법 36
15. Regression과 Classification의 차이 37
16. 기타(filter의 인수분해, Parameter 수 계산하기, Convolution size 계산하기, learning_rate 정하기, Search 방법론 ) 38 ~ 42
17. 저의 정리 자료 소개 43
3
Machine learning is a field of computer science that gives computer systems the ability to “learn” with data,
Without being explicitly programmed
Q. 그러면 Deep learning과 Machine learning의 차이점은 뭐에요??
사진: https://medium.com/swlh/ill-tell-you-why-deep-learning-is-so-popular-and-in-demand-5aca72628780
http://www.slideshare.net/SfeirGroup/first-step-deep-learning-by-jiqiong-qiu-devfest-2016
아래의 사진으로 요약가능!
1. Machine learning의 정의
4사진: David Barber의 Machine Learning 분류
2. Machine learning의 분류
Machine learning은 크게 3가지로 분류된다.
1. Supervised learning(지도 학습)
2. Unsupervised learning(비지도 학습)
3. Reinforcement learning(강화 학습)
※ 사람마다 보는 관점이 다르다. David Barber는
Semi_supervised learning을 더 중요시 생각한 것 같다.
5
2. Machine learning의 분류
1. Supervised learning(지도 학습)
대표적인 지도 학습 알고리즘으로는
Artificial Neural network, Bayesian statistics, Decision Tree, Gaussian process regression, SVM,
Random Forests등이 있으며, 데이터와 그에 따른 라벨 값을 알고 학습을 하는 것을 의미한다.
6
2. Machine learning의 분류
2. Unsupervised learning(비지도 학습)
지도학습의 경우, 사람이 일일이 라벨 값을 지정해 줘야하는 것에 반해, 비지도 학습은 그러한 과정이 필요 없다.
주로 분류(Clustering)문제나 차원 축소(Dimensionality reduction)에 사용되어 지며, 대표적인 예로는
Variational AutoEncoder, Generative Adversarial Networks 등이 있다.
Variational AutoEncoder를 이용한 차원 축소
7
2. Machine learning의 분류
3. Reinforcement learning(강화 학습)
어떤 행위에 대한 보상을 정의해주고, 보상의 값을 최대화 하도록 학습을 시켜주는 방법으로, 이를 활용한
대표적인 예로는 알파고, 컬링 머신 등이 있다.
사진: https://medium.com/udacity/deep-learning-nanodegree-foundation-program-syllabus-in-depth-2eb19d014533
8
2. Machine learning의 분류 – Deep Architecture Genealogy
사진: https://github.com/hunkim/deep_architecture_genealogy
3. Machine learning의 역사
9
(1943) McCulloch, Pitts의
간단한 신경망 계발
(1957) Rosenblatt의 Perceptron
용어 및 알고리즘 개발
(1969) Minsky가 XOR에 문제는
단일 Perceptron으로 해결 못한다는
것을 증명/ 침묵기 시작
긴 침묵기
(1973) Grossberg의 RNN 개발
(1979) Vapnik의 SVM 개발
(1986) Rumelhart와 Hinton의
Backpropagation Algorithm 발표!
(1995) Lecun과 Bengio의
CNN 발표!
하지만 Gradient Vanishing
문제가 생김
(2006,2007) Hinton과 Bengio가
2편의 논문으로 Gradient Vanishing
문제를 어느 정도 해결함
(2012) Alex Net의 발표
(2014) Ian J. Goodfellow의
Generative Adversarial Networks
발표
황금기
4. Perceptron
10사진: https://www.codeproject.com/Articles/1205732/Build-Simple-AI-NET-Library-Part-Perceptron
우리의 뇌는 뉴런으로 구성된다.
신경세포체는 여러 뉴런으로부터 전달되는 외부자극에 대한
판정을 하여 다른 뉴런으로 신호를 전달할 지를 결정한다.
1957년 Perceptron이 처음 나왔을 때, 위의 과정과 비슷하게
Step Function을 Activation Function으로 사용했는데, 이는
작은 값의 변화가 큰 변화(0 → 1, 1→0)를 만들기에 후에 다중
신경망에서는 효율적이지 않다는 것이 밝혀지게 된다.
4. Perceptron – Activation Function에 대한 고찰
11
우리가 두가지 선택의 기로에 서있다고 가정하자.
우리는 의사결정을 내릴 때 내가 가지고 있는 정보를 참조하는데, 이 정보를 이용해서 결정을 할 때 그 기준은
명백하면 좋다.
이 말을 머신러닝 관점에서 생각을 해보면, Perceptron이 정보의 양을 결정해 줄 때는 Activation Function의 Decision
Boundary가 평소에는 완만하다가 Boundary 근처에 갈 때는 급하게 움직이는게 좋다.
따라서 과거에는 Sigmoid함수를 Activation Function으로 사용했다.
4. Perceptron – Activation Function에 대한 고찰
사진: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6
Decision Boundary
12
4. Perceptron – Activation Function에 대한 고찰
Sigmoid Function의 장단점
장점
1. Decision Boundary 근처에서 빠르게 변한다.
2. 결과가 0~1사이의 값으로 정해진다.  확률적으로 해석가능
3. 미분 가능하다.  der(sigmoid) = sigmoid(1-sigmoid)
단점
1. Zero Centered가 아니다.  https://stats.stackexchange.com/questions/237169/why-are-non-zero-centered-activation-functions-a-problem-in-backpropagation
2. Gradient Vanishing이 생긴다.  Backpropagation 하는 과정에서 sigmoid(1-sigmoid)가 계속 곱해짐
3. 결과 값이 Saturated 하다.  Kill the gradients, so training speed is very slow!
13
4. Perceptron – Activation Function에 대한 고찰
tanh의 장단점
장점
1. Decision Boundary 근처에서 빠르게 변한다.
2. 결과 값이 -1~1이다.  Generative model의 output layer에 많이 사용.
3. Zero Centered이다.  학습이 양방향(+,-)으로 다 일어날 수 있다.
단점
1. Gradient Vanishing이 생긴다.
2. 결과 값이 Sigmoid 보다 더 Saturated 하다.  Kill the gradients, so training speed is very slow!
14
4. Perceptron – Activation Function에 대한 고찰
Sigmoid Function, tanh의 대체 함수 Relu
장점
1. 비선형이다.
2. 미분의 결과가 간단하다(0~1)  Gradient Vanishing 문제가 덜 하다, 학습 속도가 빠르다.
3. 생물학적으로 sigmoid보다 더 적합하다고 한다.
단점
1. Zero Centered가 아니다.  학습이 한 방향으로만 일어난다.
2. Dead Relu가 생긴다.  Relu의 결과가 0이면 Gradient update가 더 이상 일어나지 않는다(NN의 약(10~20%)).
 이를 해결하기 위해 elu(VAE에서 사용) 또는 leaky relu(DC GAN에서 사용)가 나옴.
15
4. Perceptron – Activation Function에 대한 고찰
16사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
5. Universal Approximation Theorem
17참조: https://en.m.wikipedia.org/wiki/Universal_approximation_theorem
In the Mathematical theory of ANN, the Universal approximation theorem states that a feed forward
Network with a single hidden layer containing a finite number of neurons, can approximate continuous
Functions on compact subsets of ℝ 𝑛
, under mild assumptions on the activation function.
위의 이론은 G. cybenko가 1989년에 sigmoidal activation function을 가지고 증명하였다.
하지만, 현실에서는 Infinite number of neurons를 구현할 수 없으므로 우리는 다음과 같은 방법으로 이를 해결하고자 한다.
1. 층을 깊게 쌓는다.
2. CNN, RNN과 같은 특수한 Model을 만든다.
6. Neural Network는 Interpolation인가 fitting인가?
18사진: http://paulbourke.net/miscellaneous/interpolation/
https://m.blog.naver.com/PostView.nhn?blogId=mykepzzang&logNo=220222414618&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
Fitting
Interpolation
 Fitting이다. NN은 target점과의 거리를 줄이는게 목표이긴 하지만 target 점을 확실히 지나지는 않기때문에
(100% Overfitting) interpolation이라고 할 수는 없다.
7. Loss함수에 대한 고찰
19
Loss
1. MSE = 𝑦 𝑖
1
2𝑛
(𝑦𝑖 − 𝑦𝑖)2
2. Binary Cross Entropy loss = -
1
𝑛 𝑦 𝑖
[ 𝑦𝑖 log 𝑦𝑖 + 1 − 𝑦𝑖 log 1 − 𝑦𝑖 ]
7. Loss함수에 대한 고찰
20참고 자료: http://solarisailab.com/archives/2237
1. MSE = 𝑦 𝑖
1
2𝑛
(𝑦𝑖 − 𝑦𝑖)2 & CE = −
1
𝑛 𝑦 𝑖
[ 𝑦𝑖 log 𝑦𝑖 + 1 − 𝑦𝑖 log 1 − 𝑦𝑖 ] 의 학습 속도
가정: 네트워크의 맨 끝 단에 위치한 W의 Gradients를 구했음.
Activation Function이 sigmoid일 경우, Mean square Error의 Gradient 값을 계산해보면 다음과 같다.
𝜕𝐿
𝜕𝑊
=
1
𝑛
𝑦 𝑖
(𝑦𝑖 − 𝑦𝑖) ×
𝜕𝑦𝑖
𝜕𝑊
=
1
𝑛
𝑦 𝑖
(𝑦𝑖 − 𝑦𝑖) × 𝑦𝑖(1 − 𝑦𝑖) × 𝑥
Activation Function이 sigmoid 일 경우, Cross entropy의 Gradient 값은 다음과 같다.
𝜕𝐿
𝜕𝑊
= −
1
𝑛
𝑦 𝑖
𝑦𝑖
1
𝑦𝑖
+ 1 − 𝑦𝑖
1
1 − 𝑦𝑖
×
𝜕𝑦𝑖
𝜕𝑊
= −
1
𝑛
𝑦 𝑖
𝑦𝑖
1
𝑦𝑖
+ 1 − 𝑦𝑖
1
1 − 𝑦𝑖
× 𝑦𝑖 1 − 𝑦𝑖 = −
1
𝑛
𝑦 𝑖
𝑦𝑖 − 𝑦𝑖 × 𝑥
∴ MSE보다 Cross Entropy가 불필요한 미분항이 없기 때문에 학습속도가 더 빠르다.
7. Loss함수에 대한 고찰
Cross Entropy에 대한 고찰_1
Y = -[0.2log(x) + 0.8log(1-x)]의 그래프 Y = -[0.4log(x) + 0.6log(1-x)]의 그래프
21
7. Loss함수에 대한 고찰
Cross Entropy에 대한 고찰_1
눈치 채셨나요?
앞의 두 그래프를 보면 알 수 있듯이, -Yln(X) –(1-Y)ln(1-X)는 Y=X일 때 최소값을 가지게 됩니다.
따라서 element wise 연산을 하는 Cross Entropy를 최소화 시킨다는 말은
“결과로 나온 각 element들이 ground truth(label)과 같아지도록 학습을 한다”와 똑같은 의미를 가지게 됩니다.
22
7. Loss함수에 대한 고찰
Cross Entropy에 대한 고찰_2
그러면 CE의 최소값은 무엇인가요??  Cross Entropy의 식을 살펴보자!
𝐻 𝑦, 𝑦 = 𝐻 𝑦 + 𝐷 𝐾𝐿( 𝑦| 𝑦 𝑤ℎ𝑒𝑟𝑒 𝐻( 𝑦)는 섀넌 엔트로피, 𝐷 𝐾𝐿( 𝑦, | 𝑦 = kullback − Leibler divergence
𝐻 𝑦𝑖 = − 𝑃( 𝑦𝑖) × log(𝑃 𝑦𝑖 ) 으로 우리는 라벨 값을 알고 있으므로 이 값은 고정된 값이다.
𝐷 𝐾𝐿( 𝑦𝑖| 𝑦𝑖 = 𝑃 𝑦𝑖 𝑙𝑜𝑔(
𝑃 𝑦 𝑖
𝑃 𝑦 𝑖
) 으로 그 값은 항상 ≥ 0이며 두 확률분포가 같아지면 0의 값을 가진다.
∴ Cross Entropy의 최소 값은 Target value의 섀넌 엔트로피 값이다.
23
7. Loss함수에 대한 고찰
Neural Network의 형태와 loss 함수
24
자료 출처:
https://www.facebook.com/groups/TensorFlowKR/permalink/496009234073473/?hc_location=u
fi
다운로드: https://mega.nz/#!tBo3zAKR!yE6tZ0g-GyUyizDf7uglDk2_ahP-zj5trVZSLW3GAjw
(Hwalsuk Lee님 슬라이드 자료에서 따왔습니다.)
7. Loss함수에 대한 고찰
Neural Network의 형태와 loss 함수
이전 슬라이드의 첫번째 사진을 보면 알 수 있듯이 Loss함수를 MSE로 하면 Neural Network를 Gaussian distribution으로
근사시키는 것이다.
이전 슬라이드의 두번째 사진을 보면 알 수 있듯이 Loss함수를 CE로 하면 Neural Network를 Bernoulli distribution으로
근사시키는 것이다.
25
8. Backpropagation에 대한 수학적 증명
https://www.slideshare.net/MingukKang/backpropagation-85544666를 참조
26
9. Stochastic Gradient Descent
27
SGD란 Training Data 모두를 모델에 넣은 후 loss값을 구하여 Gradient Descent를 하는 것이 아니라,
Mini-Batch(32,64,128을 많이 사용, Stochastic 하다)를 이용하여 loss값을 구하고 이를 이용해 Gradient Descent를
하여 Global minimum이 아닌 Local minimum을 찾아주는 방법이다.
이는 Training data에 overfit한 global optimum을 찾아도 별 소용이 없기에 적당한 local optimum을 찾아 주는 방식으로,
일반적으로 Mini batch의 사이즈가 클수록 학습 속도가 빠르고 성능은 떨어진다(Gradient Update가 자주 일어나지 않음).
※ Batch_size가 크면 Generalization 성능이 떨어진다는 것은 거의 정설에 가까움.
(참조: https://www.youtube.com/watch?v=jFpO-E4RPhQ&feature=youtu.be)
10. Gradient Vanishing을 해결한 방법
1. Initialize well
 힌튼이 2006년 발표한 “A fast learning Algorithm for deep belief nets”에서 시작
(자세한 내용은 다음 링크 참조: https://www.slideshare.net/MingukKang/restricted-boltzmann-machine-87195518)
 이 방법을 이용하여 initialization을 하면 상당히 비효율 적이기에 현재는 Xavier initializer, He initializer를 사용.
2. Relu
 Backpropagation를 할 때 Gradient에 sigmoid의 미분값(0~1)이 계속 곱해져 Gradient의 값이 작아지던 현상을 해결
 But, x<0인 부분으로 인해 생기는 Dead Relu 때문에 문제가 됨
(이 때 Xavier 대신 He initializer를 사용하면 Dead Relu가 덜 생긴다.)
(비 선형이면서 x>0인 부분에서 미분 값이 간단한 Elu, Leaky Relu 등이 등장함.)
28Xavier_init He_init http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
10. Gradient Vanishing을 해결한 방법
3. Batch Normalization
 MLP or Convolutional layer의 결과로 나오는 값을 정규화(normalization)시킨 다음 학습이 가능한 parameters 𝛾, 𝛽를
도입하여 다음과 같은 연산을 하였다.
𝑥 =
𝑥 − 𝜇
𝜎
, 𝑦 𝑝𝑟𝑒_𝑎𝑐𝑡𝑖𝑣𝑎𝑡𝑖𝑜𝑛 = 𝛾 𝑥 + 𝛽
설명: 학습 시 현재 layer의 입력은 모든 이전 layer의 파라미터 변화에 영향을 받게 되며, 망이 깊어짐에 따라 이전 layer의
작은 파라미터 변화가 증폭되어 뒷단에 큰 영향을 미치게 되는데 이를 Covariate Shift라고 한다.
Internal Covariance Shift라는 현상은 Network의 각 층이나 Activation마다 input의 distribution이 달라지는 현상을 말하는데
이 현상을 막기위해 정규화를 해야 한다. 하지만, 정규화를 하기 위해서는 covariance matrix의 계산과 invers의 계산이
필요하고, 정규화 과정에서 앞 layer의 bias의 역할은 무시되므로 이를 위의 Batch Normalization으로 해결하였다.
※ 일반적으로 Batch Normalization layer 이후에 Activation layer가 나온다.
29내용 출처: https://shuuki4.wordpress.com/2016/01/13/batch-normalization-설명-및-구현/
10. Gradient Vanishing을 해결한 방법
4. Residual network
30사진: https://arxiv.org/abs/1512.03385
장점
1. Skip connection에 의해 Gradient vanishing이 일어나지 않음
(참조: https://kangbk0120.github.io/articles/2018-01/identity-mapping-in-deep-resnet)
2. Skip connection이 Gradient highway 역할을 하여 학습 속도가
빨라진다.
11. Xavier initializer(input과 output의 Variance를 비슷하게 만듬)
31
𝑌 = 𝑊𝑖 𝑋𝑖 라고 하면 Var(𝑊𝑖 𝑋𝑖)는 다음과 같다. (참조: https://en.wikipedia.org/wiki/Variance#Product_of_independent_variables)
Var(𝑊𝑖 𝑋𝑖) = 𝔼 𝑋𝑖
2
𝑉𝑎𝑟 𝑊𝑖 + 𝔼 𝑊𝑖
2
𝑉𝑎𝑟 𝑋𝑖 + 𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖
≈ 𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖 ∵ 데이터 𝑥𝑖 , 가중치 𝑤𝑖의 기대값을 0으로 가정
∴ 𝑉𝑎𝑟 𝑌 ≈ 𝑉𝑎𝑟 𝑊𝑖 𝑋𝑖 ≈ 𝑛𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖 ∵ 𝑥𝑖, 𝑤𝑖 가 서로 독립적이고, 균등한 분포를 가지고 있다고 가정
우리는 Input의 Variance와 output의 variance를 똑같게 하는 것이 목표이기에 𝑉𝑎𝑟 𝑊𝑖 =
1
𝑛 𝑖𝑛
이여야 한다.
마찬가지로 Backpropagation을 할 때 Error signal의 Variance도 똑같이 하고 싶으므로(맞는지 잘 모르겠습니다.)
𝑉𝑎𝑟 𝑊𝑖 =
1
𝑛 𝑜𝑢𝑡
이다.
Xavier initializer는 이 두 variance의 산술평균을 사용해 초기화를 해준다.
따라서 𝑥𝑎𝑣𝑖𝑒𝑟 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑖𝑧𝑒𝑟의 𝑉𝑎𝑟 𝑊𝑖 =
2
𝑛 𝑖𝑛+𝑛 𝑜𝑢𝑡
, 𝑚𝑒𝑎𝑛 = 0 이다.
참조: http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization
12. CNN의 다양한 기술들
32
1. Padding
https://xrds.acm.org/blog/2016/06/convolutional-neural-networks-cnns-illustrated-explanation/
Padding특징
장점
1. 컨볼루션 연산 후 이미지의 크기를 유지할 수 있다.
2. 테두리 정보를 지켜 나가며 학습을 할 수 있다.
(https://www.facebook.com/groups/TensorFlowKR/permalink/612566285751100/)
단점
1. 테두리의 0값이 안쪽으로 밀려들어가면서, Spatial
information을 훼손할 수도 있다고 의심됨
2. Kapathy가 padding에 대해 부정적임
12. CNN의 다양한 기술들
33
2. Max Pooling
https://computersciencewiki.org/index.php/Max-pooling_/_Pooling
Max Pooling의 특징
장점
1. 컨볼루션 연산 후 이미지의 크기를 유지할 수 있다.
2. Parameter 수가 줄어 학습이 빨라진다.
3. Receptive Field를 키워 더 큰 Feature들을 볼 수 있다.
4. 위치에 대한 Invariance를 유지시켜준다.
5. 2x2 stride Convolution보다 연산의 관점에서는 효율적이다.
단점
1. Argmax에 해당하는 부분만 Backpropagation이 되어
bias가 생길 수 있음.
2. 생성모델에서는 Pooling의 큰 정보손실 때문에 불리함.
 Strides를 2로한 Convolution 사용
12. CNN의 다양한 기술들
34
2. Global Average Pooling(GAP)
http://nmhkahn.github.io/Casestudy-CNN
GAP의 특징
장점
1. 원본 image size와 관련없이 분류문제를 해결할 수 있다.
2. Parameter 수를 줄여 계산이 빨라진다.
3. Classification을 할 때 spatial information을 사용할 수 있다.
(기존의 방법은 MLP를 할 때 Spatial information을 잃어버리기 때문)
단점
13. Overfitting을 대략적으로 확인하는 방법
35참조: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
May be underfitting
14. Overfitting을 해결한 방법
36사진: https://medium.com/@amarbudhiraja/https-medium-com-amarbudhiraja-learning-less-to-learn-better-dropout-in-deep-machine-learning-
74334da4bfc5
1.Ensemble, Regularization, Dropout
① Ensemble: 한 사람이 판단하는 것보다는 여러 사람이 판단하는게 좋다!
② Regularization
A = [0.1, 0.5, 0.3, 0.1]라고 하면 L1 Regularization을 사용하면 [1, 0, 0, 0]이 되고,
L2 Regularization을 사용하면 [0.25, 0.25, 0.25, 0.25]가 된다.
 Data의 Features에 지배적인 특징이 결과에 큰 영향을 미친다면 L1,
지배적인 Features가 없고 모든 Features들이 골고루 결과에 영향을 준다면 L2 Regularization이 좋다.
③ Dropout: sub network Ensemble이라고 생각하면 된다. 특정 하나의 Weights가 결과에 지배적이게 되는 것을 막는다.
15. Regression과 Classification의 차이
37
Regression은 특정 값을 예측하는 것이고, Classification은 label을 예측하는 것이다.
하지만, MNIST 데이터를 Classification을 할 때, logistic function을 사용하고, 일반적으로 logistic function은 regression에
많이 사용된다. 그러면 위의 문제는 Classification 문제일까? Regression 문제일까??
 Classification 문제이다.
일반적으로 위의 분류를 logistic regression classification이라고 한다.
이는 output value([0.1, 0.2, 0.1, 0.5, …0.1])의 값을 CE를 통해 target value([0, 0, 0, 1, …0])으로 근사 시키는 regression을
통해, 최종 output value([0.01, 0.02, 0.02, 0.90, …])를 구하고, 이를 이용하여 Classification(label =4)한다는 것을 의미한다.
16. 기타(filter의 인수분해)
38사진: https://www.topbots.com/a-brief-history-of-neural-network-architectures/
Google의 Inception network에서는 5x5 Convolution 연산을
3x3 두개로 대체했는데 위의 두개가 같은 것일까??
 반은 맞고, 반은 틀리다.
Receptive field의 관점에서 보면 위의 말은 맞는 것이다.
(오른쪽 사진 참조)
하지만, Parameter의 관점에서 보면 둘은 다른 것이다.
3x3 두개의 경우 parameter 개수는 18개로 5x5의 parameter 개수인
25개보다 7개 적기에 학습에 소요되는 시간은 적다.
하지만, parameter의 수가 작다는 것은 표현력이 그만큼 떨어진다는
것을 이해하고 있어야한다.
16. 기타(filter의 인수분해)
39사진: https://www.topbots.com/a-brief-history-of-neural-network-architectures/
※ 나중에 Inception network에서는 7x7을 3x3/ 3개로 분해,
5x5를 3x3/ 2개로 분해 하는 것 외에도 3x3을 1x3, 3x1로
인수분해 하여 사용했다.
16. 기타(Parameter 수 계산하기, Convolution size 계산하기)
40
Q1. Input volume: 32x32x3
10, 5x5x3 filters with stride 1, pad 2이면 parameter의 개수는 몇 개인가?
 5*5*3*10(number of filters) + 10(bias, number of filters) = 760
Q2. input layer의 size가 [None,1024], output layer의 사이즈가 [None,10]인 MLP의 Parameter의 개수는 몇 개인가?
 1024*10 +10 = 10240 +10 = 10250
Q3. [None,28,28,1]크기의 이미지를 [5,5,1,20]크기의 weights, strides = 2, pad = 1로 Convolution 연산을
했을 시 결과 값의 크기는??
 Image_size_new = (Image_size – filter_size)/stride + 1 = (28+2 – 5)/1 + 1 = 26
∴ [None, 26, 26 20]
16. 기타(learning_rate 정하기)
41사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
16. 기타(Search 방법론)
42
이전 슬라이드의 그림과 같이 learning rate를
Grid(일정한 간격으로 나눔) search를 해도 되지만
, 2가지 이상의 Hyper parameter를 조사할 때는
Random Layout 방법을 사용하는 것이 더 좋다.
 옆의 그림에서 볼 수 있듯 더욱 다양한 영역을
조사가능
사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
17. 저의 정리 자료 소개
43
1. 비전공자인 제가 공부한 방법 및 유용한 사이트 정리
(https://www.facebook.com/groups/TensorFlowKR/permalink/608999666107762/)
2. Backpropagation
(https://www.facebook.com/groups/TensorFlowKR/permalink/581582685516127/)
3. Restricted Boltzmann machine
(https://www.facebook.com/groups/TensorFlowKR/permalink/597477030593359/)
4. Batch_normalization, Xavier_initializer
(https://github.com/MINGUKKANG/mnist_tensorflow)
5. Variational AutoEncoder
(https://www.facebook.com/groups/TensorFlowKR/permalink/608541436153585/)
(Code: https://github.com/MINGUKKANG/VAE_tensorflow)
6. GAN, DCGAN(code)
(https://www.facebook.com/groups/TensorFlowKR/permalink/611681889172873/)
(Code: https://github.com/MINGUKKANG/DCGAN_tensorflow)
Thank you!
44

More Related Content

What's hot

인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명Woonghee Lee
 
텐서플로우로 배우는 딥러닝
텐서플로우로 배우는 딥러닝텐서플로우로 배우는 딥러닝
텐서플로우로 배우는 딥러닝찬웅 주
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거도형 임
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorialLee Seungeun
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)Lee Seungeun
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장Sunggon Song
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...종빈 오
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초Hyungsoo Ryoo
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝Jinwon Lee
 
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017Donghwa Kim
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)WON JOON YOO
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetHyojun Kim
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요Byoung-Hee Kim
 
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...태엽 김
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템Jubok Kim
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)beom kyun choi
 
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentVisual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentKwangsik Lee
 
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기[125] 머신러닝으로 쏟아지는 유저 cs 답변하기
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기NAVER D2
 

What's hot (20)

인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명인공 신경망 구현에 관한 간단한 설명
인공 신경망 구현에 관한 간단한 설명
 
텐서플로우로 배우는 딥러닝
텐서플로우로 배우는 딥러닝텐서플로우로 배우는 딥러닝
텐서플로우로 배우는 딥러닝
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNet
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요
 
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...
Progressive Growing of GANs for Improved Quality, Stability, and Variation Re...
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient DescentVisual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
 
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기[125] 머신러닝으로 쏟아지는 유저 cs 답변하기
[125] 머신러닝으로 쏟아지는 유저 cs 답변하기
 

Similar to Deep learning overview

A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderLee Seungeun
 
InfoGAN Paper Review
InfoGAN Paper ReviewInfoGAN Paper Review
InfoGAN Paper Review태엽 김
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition준영 박
 
Survey of activation functions
Survey of activation functionsSurvey of activation functions
Survey of activation functions창기 문
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Networkagdatalab
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3Haesun Park
 
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...gohyunwoong
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AITae Young Lee
 
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
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...Gyubin Son
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Korea, Sejong University.
 
Workshop 210417 dhlee
Workshop 210417 dhleeWorkshop 210417 dhlee
Workshop 210417 dhleeDongheon Lee
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기Myeongju Kim
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural NetworksSanghoon Yoon
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagationDea-hwan Ki
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks ISang Jun Lee
 
Chapter 17 monte carlo methods
Chapter 17 monte carlo methodsChapter 17 monte carlo methods
Chapter 17 monte carlo methodsKyeongUkJang
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가Hwanhee Kim
 

Similar to Deep learning overview (20)

A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding Autoencoder
 
InfoGAN Paper Review
InfoGAN Paper ReviewInfoGAN Paper Review
InfoGAN Paper Review
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition
 
Survey of activation functions
Survey of activation functionsSurvey of activation functions
Survey of activation functions
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3
 
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...Bag of Tricks for Image Classification  with Convolutional Neural Networks (C...
Bag of Tricks for Image Classification with Convolutional Neural Networks (C...
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AI
 
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
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks
 
Workshop 210417 dhlee
Workshop 210417 dhleeWorkshop 210417 dhlee
Workshop 210417 dhlee
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기
 
Convolutional Neural Networks
Convolutional Neural NetworksConvolutional Neural Networks
Convolutional Neural Networks
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
 
Feature Pyramid Network, FPN
Feature Pyramid Network, FPNFeature Pyramid Network, FPN
Feature Pyramid Network, FPN
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks I
 
Chapter 17 monte carlo methods
Chapter 17 monte carlo methodsChapter 17 monte carlo methods
Chapter 17 monte carlo methods
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
 
LeNet & GoogLeNet
LeNet & GoogLeNetLeNet & GoogLeNet
LeNet & GoogLeNet
 

More from 강민국 강민국

More from 강민국 강민국 (12)

PR-190: A Baseline For Detecting Misclassified and Out-of-Distribution Examp...
PR-190: A Baseline For Detecting Misclassified and Out-of-Distribution  Examp...PR-190: A Baseline For Detecting Misclassified and Out-of-Distribution  Examp...
PR-190: A Baseline For Detecting Misclassified and Out-of-Distribution Examp...
 
Deeppermnet
DeeppermnetDeeppermnet
Deeppermnet
 
[Pr12] deep anomaly detection using geometric transformations
[Pr12] deep anomaly detection using geometric transformations[Pr12] deep anomaly detection using geometric transformations
[Pr12] deep anomaly detection using geometric transformations
 
[Pr12] self supervised gan
[Pr12] self supervised gan[Pr12] self supervised gan
[Pr12] self supervised gan
 
Ebgan
EbganEbgan
Ebgan
 
Anomaly detection
Anomaly detectionAnomaly detection
Anomaly detection
 
Deep Feature Consistent VAE
Deep Feature Consistent VAEDeep Feature Consistent VAE
Deep Feature Consistent VAE
 
[Probability for machine learning]
[Probability for machine learning][Probability for machine learning]
[Probability for machine learning]
 
Generative adversarial network
Generative adversarial networkGenerative adversarial network
Generative adversarial network
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
 
Restricted boltzmann machine
Restricted boltzmann machineRestricted boltzmann machine
Restricted boltzmann machine
 
Backpropagation
BackpropagationBackpropagation
Backpropagation
 

Deep learning overview

  • 1. Deep learning Overview Kang, Min-Guk 1사진: https://medium.com/@startuphackers/building-a-deep-learning-neural-network-startup-7032932e09c
  • 2. Contents 2 1. Machine learning의 정의 3 2. Machine learning의 분류 4 ~ 8 3. Machine learning의 역사 9 4. Perceptron 10 ~ 16 5. Universal Approximation Theorem 17 6. Neural Network는 Interpolation인가 fitting인가? 18 7. Loss함수에 대한 고찰 19 ~ 25 8. Backpropagation에 대한 수학적 증명 26 9. Stochastic Gradient Descent 27 10. Gradient Vanishing을 해결한 방법 28 ~ 30 11. Xavier initializer(input과 output의 Variance를 비슷하게 만듬) 31 12. CNN의 다양한 기술들 32 ~ 34 13. Overfitting을 대략적으로 확인하는 방법 35 14. Overfitting을 해결한 방법 36 15. Regression과 Classification의 차이 37 16. 기타(filter의 인수분해, Parameter 수 계산하기, Convolution size 계산하기, learning_rate 정하기, Search 방법론 ) 38 ~ 42 17. 저의 정리 자료 소개 43
  • 3. 3 Machine learning is a field of computer science that gives computer systems the ability to “learn” with data, Without being explicitly programmed Q. 그러면 Deep learning과 Machine learning의 차이점은 뭐에요?? 사진: https://medium.com/swlh/ill-tell-you-why-deep-learning-is-so-popular-and-in-demand-5aca72628780 http://www.slideshare.net/SfeirGroup/first-step-deep-learning-by-jiqiong-qiu-devfest-2016 아래의 사진으로 요약가능! 1. Machine learning의 정의
  • 4. 4사진: David Barber의 Machine Learning 분류 2. Machine learning의 분류 Machine learning은 크게 3가지로 분류된다. 1. Supervised learning(지도 학습) 2. Unsupervised learning(비지도 학습) 3. Reinforcement learning(강화 학습) ※ 사람마다 보는 관점이 다르다. David Barber는 Semi_supervised learning을 더 중요시 생각한 것 같다.
  • 5. 5 2. Machine learning의 분류 1. Supervised learning(지도 학습) 대표적인 지도 학습 알고리즘으로는 Artificial Neural network, Bayesian statistics, Decision Tree, Gaussian process regression, SVM, Random Forests등이 있으며, 데이터와 그에 따른 라벨 값을 알고 학습을 하는 것을 의미한다.
  • 6. 6 2. Machine learning의 분류 2. Unsupervised learning(비지도 학습) 지도학습의 경우, 사람이 일일이 라벨 값을 지정해 줘야하는 것에 반해, 비지도 학습은 그러한 과정이 필요 없다. 주로 분류(Clustering)문제나 차원 축소(Dimensionality reduction)에 사용되어 지며, 대표적인 예로는 Variational AutoEncoder, Generative Adversarial Networks 등이 있다. Variational AutoEncoder를 이용한 차원 축소
  • 7. 7 2. Machine learning의 분류 3. Reinforcement learning(강화 학습) 어떤 행위에 대한 보상을 정의해주고, 보상의 값을 최대화 하도록 학습을 시켜주는 방법으로, 이를 활용한 대표적인 예로는 알파고, 컬링 머신 등이 있다. 사진: https://medium.com/udacity/deep-learning-nanodegree-foundation-program-syllabus-in-depth-2eb19d014533
  • 8. 8 2. Machine learning의 분류 – Deep Architecture Genealogy 사진: https://github.com/hunkim/deep_architecture_genealogy
  • 9. 3. Machine learning의 역사 9 (1943) McCulloch, Pitts의 간단한 신경망 계발 (1957) Rosenblatt의 Perceptron 용어 및 알고리즘 개발 (1969) Minsky가 XOR에 문제는 단일 Perceptron으로 해결 못한다는 것을 증명/ 침묵기 시작 긴 침묵기 (1973) Grossberg의 RNN 개발 (1979) Vapnik의 SVM 개발 (1986) Rumelhart와 Hinton의 Backpropagation Algorithm 발표! (1995) Lecun과 Bengio의 CNN 발표! 하지만 Gradient Vanishing 문제가 생김 (2006,2007) Hinton과 Bengio가 2편의 논문으로 Gradient Vanishing 문제를 어느 정도 해결함 (2012) Alex Net의 발표 (2014) Ian J. Goodfellow의 Generative Adversarial Networks 발표 황금기
  • 10. 4. Perceptron 10사진: https://www.codeproject.com/Articles/1205732/Build-Simple-AI-NET-Library-Part-Perceptron 우리의 뇌는 뉴런으로 구성된다. 신경세포체는 여러 뉴런으로부터 전달되는 외부자극에 대한 판정을 하여 다른 뉴런으로 신호를 전달할 지를 결정한다. 1957년 Perceptron이 처음 나왔을 때, 위의 과정과 비슷하게 Step Function을 Activation Function으로 사용했는데, 이는 작은 값의 변화가 큰 변화(0 → 1, 1→0)를 만들기에 후에 다중 신경망에서는 효율적이지 않다는 것이 밝혀지게 된다.
  • 11. 4. Perceptron – Activation Function에 대한 고찰 11 우리가 두가지 선택의 기로에 서있다고 가정하자. 우리는 의사결정을 내릴 때 내가 가지고 있는 정보를 참조하는데, 이 정보를 이용해서 결정을 할 때 그 기준은 명백하면 좋다. 이 말을 머신러닝 관점에서 생각을 해보면, Perceptron이 정보의 양을 결정해 줄 때는 Activation Function의 Decision Boundary가 평소에는 완만하다가 Boundary 근처에 갈 때는 급하게 움직이는게 좋다. 따라서 과거에는 Sigmoid함수를 Activation Function으로 사용했다.
  • 12. 4. Perceptron – Activation Function에 대한 고찰 사진: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 Decision Boundary 12
  • 13. 4. Perceptron – Activation Function에 대한 고찰 Sigmoid Function의 장단점 장점 1. Decision Boundary 근처에서 빠르게 변한다. 2. 결과가 0~1사이의 값으로 정해진다.  확률적으로 해석가능 3. 미분 가능하다.  der(sigmoid) = sigmoid(1-sigmoid) 단점 1. Zero Centered가 아니다.  https://stats.stackexchange.com/questions/237169/why-are-non-zero-centered-activation-functions-a-problem-in-backpropagation 2. Gradient Vanishing이 생긴다.  Backpropagation 하는 과정에서 sigmoid(1-sigmoid)가 계속 곱해짐 3. 결과 값이 Saturated 하다.  Kill the gradients, so training speed is very slow! 13
  • 14. 4. Perceptron – Activation Function에 대한 고찰 tanh의 장단점 장점 1. Decision Boundary 근처에서 빠르게 변한다. 2. 결과 값이 -1~1이다.  Generative model의 output layer에 많이 사용. 3. Zero Centered이다.  학습이 양방향(+,-)으로 다 일어날 수 있다. 단점 1. Gradient Vanishing이 생긴다. 2. 결과 값이 Sigmoid 보다 더 Saturated 하다.  Kill the gradients, so training speed is very slow! 14
  • 15. 4. Perceptron – Activation Function에 대한 고찰 Sigmoid Function, tanh의 대체 함수 Relu 장점 1. 비선형이다. 2. 미분의 결과가 간단하다(0~1)  Gradient Vanishing 문제가 덜 하다, 학습 속도가 빠르다. 3. 생물학적으로 sigmoid보다 더 적합하다고 한다. 단점 1. Zero Centered가 아니다.  학습이 한 방향으로만 일어난다. 2. Dead Relu가 생긴다.  Relu의 결과가 0이면 Gradient update가 더 이상 일어나지 않는다(NN의 약(10~20%)).  이를 해결하기 위해 elu(VAE에서 사용) 또는 leaky relu(DC GAN에서 사용)가 나옴. 15
  • 16. 4. Perceptron – Activation Function에 대한 고찰 16사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
  • 17. 5. Universal Approximation Theorem 17참조: https://en.m.wikipedia.org/wiki/Universal_approximation_theorem In the Mathematical theory of ANN, the Universal approximation theorem states that a feed forward Network with a single hidden layer containing a finite number of neurons, can approximate continuous Functions on compact subsets of ℝ 𝑛 , under mild assumptions on the activation function. 위의 이론은 G. cybenko가 1989년에 sigmoidal activation function을 가지고 증명하였다. 하지만, 현실에서는 Infinite number of neurons를 구현할 수 없으므로 우리는 다음과 같은 방법으로 이를 해결하고자 한다. 1. 층을 깊게 쌓는다. 2. CNN, RNN과 같은 특수한 Model을 만든다.
  • 18. 6. Neural Network는 Interpolation인가 fitting인가? 18사진: http://paulbourke.net/miscellaneous/interpolation/ https://m.blog.naver.com/PostView.nhn?blogId=mykepzzang&logNo=220222414618&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F Fitting Interpolation  Fitting이다. NN은 target점과의 거리를 줄이는게 목표이긴 하지만 target 점을 확실히 지나지는 않기때문에 (100% Overfitting) interpolation이라고 할 수는 없다.
  • 19. 7. Loss함수에 대한 고찰 19 Loss 1. MSE = 𝑦 𝑖 1 2𝑛 (𝑦𝑖 − 𝑦𝑖)2 2. Binary Cross Entropy loss = - 1 𝑛 𝑦 𝑖 [ 𝑦𝑖 log 𝑦𝑖 + 1 − 𝑦𝑖 log 1 − 𝑦𝑖 ]
  • 20. 7. Loss함수에 대한 고찰 20참고 자료: http://solarisailab.com/archives/2237 1. MSE = 𝑦 𝑖 1 2𝑛 (𝑦𝑖 − 𝑦𝑖)2 & CE = − 1 𝑛 𝑦 𝑖 [ 𝑦𝑖 log 𝑦𝑖 + 1 − 𝑦𝑖 log 1 − 𝑦𝑖 ] 의 학습 속도 가정: 네트워크의 맨 끝 단에 위치한 W의 Gradients를 구했음. Activation Function이 sigmoid일 경우, Mean square Error의 Gradient 값을 계산해보면 다음과 같다. 𝜕𝐿 𝜕𝑊 = 1 𝑛 𝑦 𝑖 (𝑦𝑖 − 𝑦𝑖) × 𝜕𝑦𝑖 𝜕𝑊 = 1 𝑛 𝑦 𝑖 (𝑦𝑖 − 𝑦𝑖) × 𝑦𝑖(1 − 𝑦𝑖) × 𝑥 Activation Function이 sigmoid 일 경우, Cross entropy의 Gradient 값은 다음과 같다. 𝜕𝐿 𝜕𝑊 = − 1 𝑛 𝑦 𝑖 𝑦𝑖 1 𝑦𝑖 + 1 − 𝑦𝑖 1 1 − 𝑦𝑖 × 𝜕𝑦𝑖 𝜕𝑊 = − 1 𝑛 𝑦 𝑖 𝑦𝑖 1 𝑦𝑖 + 1 − 𝑦𝑖 1 1 − 𝑦𝑖 × 𝑦𝑖 1 − 𝑦𝑖 = − 1 𝑛 𝑦 𝑖 𝑦𝑖 − 𝑦𝑖 × 𝑥 ∴ MSE보다 Cross Entropy가 불필요한 미분항이 없기 때문에 학습속도가 더 빠르다.
  • 21. 7. Loss함수에 대한 고찰 Cross Entropy에 대한 고찰_1 Y = -[0.2log(x) + 0.8log(1-x)]의 그래프 Y = -[0.4log(x) + 0.6log(1-x)]의 그래프 21
  • 22. 7. Loss함수에 대한 고찰 Cross Entropy에 대한 고찰_1 눈치 채셨나요? 앞의 두 그래프를 보면 알 수 있듯이, -Yln(X) –(1-Y)ln(1-X)는 Y=X일 때 최소값을 가지게 됩니다. 따라서 element wise 연산을 하는 Cross Entropy를 최소화 시킨다는 말은 “결과로 나온 각 element들이 ground truth(label)과 같아지도록 학습을 한다”와 똑같은 의미를 가지게 됩니다. 22
  • 23. 7. Loss함수에 대한 고찰 Cross Entropy에 대한 고찰_2 그러면 CE의 최소값은 무엇인가요??  Cross Entropy의 식을 살펴보자! 𝐻 𝑦, 𝑦 = 𝐻 𝑦 + 𝐷 𝐾𝐿( 𝑦| 𝑦 𝑤ℎ𝑒𝑟𝑒 𝐻( 𝑦)는 섀넌 엔트로피, 𝐷 𝐾𝐿( 𝑦, | 𝑦 = kullback − Leibler divergence 𝐻 𝑦𝑖 = − 𝑃( 𝑦𝑖) × log(𝑃 𝑦𝑖 ) 으로 우리는 라벨 값을 알고 있으므로 이 값은 고정된 값이다. 𝐷 𝐾𝐿( 𝑦𝑖| 𝑦𝑖 = 𝑃 𝑦𝑖 𝑙𝑜𝑔( 𝑃 𝑦 𝑖 𝑃 𝑦 𝑖 ) 으로 그 값은 항상 ≥ 0이며 두 확률분포가 같아지면 0의 값을 가진다. ∴ Cross Entropy의 최소 값은 Target value의 섀넌 엔트로피 값이다. 23
  • 24. 7. Loss함수에 대한 고찰 Neural Network의 형태와 loss 함수 24 자료 출처: https://www.facebook.com/groups/TensorFlowKR/permalink/496009234073473/?hc_location=u fi 다운로드: https://mega.nz/#!tBo3zAKR!yE6tZ0g-GyUyizDf7uglDk2_ahP-zj5trVZSLW3GAjw (Hwalsuk Lee님 슬라이드 자료에서 따왔습니다.)
  • 25. 7. Loss함수에 대한 고찰 Neural Network의 형태와 loss 함수 이전 슬라이드의 첫번째 사진을 보면 알 수 있듯이 Loss함수를 MSE로 하면 Neural Network를 Gaussian distribution으로 근사시키는 것이다. 이전 슬라이드의 두번째 사진을 보면 알 수 있듯이 Loss함수를 CE로 하면 Neural Network를 Bernoulli distribution으로 근사시키는 것이다. 25
  • 26. 8. Backpropagation에 대한 수학적 증명 https://www.slideshare.net/MingukKang/backpropagation-85544666를 참조 26
  • 27. 9. Stochastic Gradient Descent 27 SGD란 Training Data 모두를 모델에 넣은 후 loss값을 구하여 Gradient Descent를 하는 것이 아니라, Mini-Batch(32,64,128을 많이 사용, Stochastic 하다)를 이용하여 loss값을 구하고 이를 이용해 Gradient Descent를 하여 Global minimum이 아닌 Local minimum을 찾아주는 방법이다. 이는 Training data에 overfit한 global optimum을 찾아도 별 소용이 없기에 적당한 local optimum을 찾아 주는 방식으로, 일반적으로 Mini batch의 사이즈가 클수록 학습 속도가 빠르고 성능은 떨어진다(Gradient Update가 자주 일어나지 않음). ※ Batch_size가 크면 Generalization 성능이 떨어진다는 것은 거의 정설에 가까움. (참조: https://www.youtube.com/watch?v=jFpO-E4RPhQ&feature=youtu.be)
  • 28. 10. Gradient Vanishing을 해결한 방법 1. Initialize well  힌튼이 2006년 발표한 “A fast learning Algorithm for deep belief nets”에서 시작 (자세한 내용은 다음 링크 참조: https://www.slideshare.net/MingukKang/restricted-boltzmann-machine-87195518)  이 방법을 이용하여 initialization을 하면 상당히 비효율 적이기에 현재는 Xavier initializer, He initializer를 사용. 2. Relu  Backpropagation를 할 때 Gradient에 sigmoid의 미분값(0~1)이 계속 곱해져 Gradient의 값이 작아지던 현상을 해결  But, x<0인 부분으로 인해 생기는 Dead Relu 때문에 문제가 됨 (이 때 Xavier 대신 He initializer를 사용하면 Dead Relu가 덜 생긴다.) (비 선형이면서 x>0인 부분에서 미분 값이 간단한 Elu, Leaky Relu 등이 등장함.) 28Xavier_init He_init http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
  • 29. 10. Gradient Vanishing을 해결한 방법 3. Batch Normalization  MLP or Convolutional layer의 결과로 나오는 값을 정규화(normalization)시킨 다음 학습이 가능한 parameters 𝛾, 𝛽를 도입하여 다음과 같은 연산을 하였다. 𝑥 = 𝑥 − 𝜇 𝜎 , 𝑦 𝑝𝑟𝑒_𝑎𝑐𝑡𝑖𝑣𝑎𝑡𝑖𝑜𝑛 = 𝛾 𝑥 + 𝛽 설명: 학습 시 현재 layer의 입력은 모든 이전 layer의 파라미터 변화에 영향을 받게 되며, 망이 깊어짐에 따라 이전 layer의 작은 파라미터 변화가 증폭되어 뒷단에 큰 영향을 미치게 되는데 이를 Covariate Shift라고 한다. Internal Covariance Shift라는 현상은 Network의 각 층이나 Activation마다 input의 distribution이 달라지는 현상을 말하는데 이 현상을 막기위해 정규화를 해야 한다. 하지만, 정규화를 하기 위해서는 covariance matrix의 계산과 invers의 계산이 필요하고, 정규화 과정에서 앞 layer의 bias의 역할은 무시되므로 이를 위의 Batch Normalization으로 해결하였다. ※ 일반적으로 Batch Normalization layer 이후에 Activation layer가 나온다. 29내용 출처: https://shuuki4.wordpress.com/2016/01/13/batch-normalization-설명-및-구현/
  • 30. 10. Gradient Vanishing을 해결한 방법 4. Residual network 30사진: https://arxiv.org/abs/1512.03385 장점 1. Skip connection에 의해 Gradient vanishing이 일어나지 않음 (참조: https://kangbk0120.github.io/articles/2018-01/identity-mapping-in-deep-resnet) 2. Skip connection이 Gradient highway 역할을 하여 학습 속도가 빨라진다.
  • 31. 11. Xavier initializer(input과 output의 Variance를 비슷하게 만듬) 31 𝑌 = 𝑊𝑖 𝑋𝑖 라고 하면 Var(𝑊𝑖 𝑋𝑖)는 다음과 같다. (참조: https://en.wikipedia.org/wiki/Variance#Product_of_independent_variables) Var(𝑊𝑖 𝑋𝑖) = 𝔼 𝑋𝑖 2 𝑉𝑎𝑟 𝑊𝑖 + 𝔼 𝑊𝑖 2 𝑉𝑎𝑟 𝑋𝑖 + 𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖 ≈ 𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖 ∵ 데이터 𝑥𝑖 , 가중치 𝑤𝑖의 기대값을 0으로 가정 ∴ 𝑉𝑎𝑟 𝑌 ≈ 𝑉𝑎𝑟 𝑊𝑖 𝑋𝑖 ≈ 𝑛𝑉𝑎𝑟 𝑊𝑖 𝑉𝑎𝑟 𝑋𝑖 ∵ 𝑥𝑖, 𝑤𝑖 가 서로 독립적이고, 균등한 분포를 가지고 있다고 가정 우리는 Input의 Variance와 output의 variance를 똑같게 하는 것이 목표이기에 𝑉𝑎𝑟 𝑊𝑖 = 1 𝑛 𝑖𝑛 이여야 한다. 마찬가지로 Backpropagation을 할 때 Error signal의 Variance도 똑같이 하고 싶으므로(맞는지 잘 모르겠습니다.) 𝑉𝑎𝑟 𝑊𝑖 = 1 𝑛 𝑜𝑢𝑡 이다. Xavier initializer는 이 두 variance의 산술평균을 사용해 초기화를 해준다. 따라서 𝑥𝑎𝑣𝑖𝑒𝑟 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑖𝑧𝑒𝑟의 𝑉𝑎𝑟 𝑊𝑖 = 2 𝑛 𝑖𝑛+𝑛 𝑜𝑢𝑡 , 𝑚𝑒𝑎𝑛 = 0 이다. 참조: http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization
  • 32. 12. CNN의 다양한 기술들 32 1. Padding https://xrds.acm.org/blog/2016/06/convolutional-neural-networks-cnns-illustrated-explanation/ Padding특징 장점 1. 컨볼루션 연산 후 이미지의 크기를 유지할 수 있다. 2. 테두리 정보를 지켜 나가며 학습을 할 수 있다. (https://www.facebook.com/groups/TensorFlowKR/permalink/612566285751100/) 단점 1. 테두리의 0값이 안쪽으로 밀려들어가면서, Spatial information을 훼손할 수도 있다고 의심됨 2. Kapathy가 padding에 대해 부정적임
  • 33. 12. CNN의 다양한 기술들 33 2. Max Pooling https://computersciencewiki.org/index.php/Max-pooling_/_Pooling Max Pooling의 특징 장점 1. 컨볼루션 연산 후 이미지의 크기를 유지할 수 있다. 2. Parameter 수가 줄어 학습이 빨라진다. 3. Receptive Field를 키워 더 큰 Feature들을 볼 수 있다. 4. 위치에 대한 Invariance를 유지시켜준다. 5. 2x2 stride Convolution보다 연산의 관점에서는 효율적이다. 단점 1. Argmax에 해당하는 부분만 Backpropagation이 되어 bias가 생길 수 있음. 2. 생성모델에서는 Pooling의 큰 정보손실 때문에 불리함.  Strides를 2로한 Convolution 사용
  • 34. 12. CNN의 다양한 기술들 34 2. Global Average Pooling(GAP) http://nmhkahn.github.io/Casestudy-CNN GAP의 특징 장점 1. 원본 image size와 관련없이 분류문제를 해결할 수 있다. 2. Parameter 수를 줄여 계산이 빨라진다. 3. Classification을 할 때 spatial information을 사용할 수 있다. (기존의 방법은 MLP를 할 때 Spatial information을 잃어버리기 때문) 단점
  • 35. 13. Overfitting을 대략적으로 확인하는 방법 35참조: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf May be underfitting
  • 36. 14. Overfitting을 해결한 방법 36사진: https://medium.com/@amarbudhiraja/https-medium-com-amarbudhiraja-learning-less-to-learn-better-dropout-in-deep-machine-learning- 74334da4bfc5 1.Ensemble, Regularization, Dropout ① Ensemble: 한 사람이 판단하는 것보다는 여러 사람이 판단하는게 좋다! ② Regularization A = [0.1, 0.5, 0.3, 0.1]라고 하면 L1 Regularization을 사용하면 [1, 0, 0, 0]이 되고, L2 Regularization을 사용하면 [0.25, 0.25, 0.25, 0.25]가 된다.  Data의 Features에 지배적인 특징이 결과에 큰 영향을 미친다면 L1, 지배적인 Features가 없고 모든 Features들이 골고루 결과에 영향을 준다면 L2 Regularization이 좋다. ③ Dropout: sub network Ensemble이라고 생각하면 된다. 특정 하나의 Weights가 결과에 지배적이게 되는 것을 막는다.
  • 37. 15. Regression과 Classification의 차이 37 Regression은 특정 값을 예측하는 것이고, Classification은 label을 예측하는 것이다. 하지만, MNIST 데이터를 Classification을 할 때, logistic function을 사용하고, 일반적으로 logistic function은 regression에 많이 사용된다. 그러면 위의 문제는 Classification 문제일까? Regression 문제일까??  Classification 문제이다. 일반적으로 위의 분류를 logistic regression classification이라고 한다. 이는 output value([0.1, 0.2, 0.1, 0.5, …0.1])의 값을 CE를 통해 target value([0, 0, 0, 1, …0])으로 근사 시키는 regression을 통해, 최종 output value([0.01, 0.02, 0.02, 0.90, …])를 구하고, 이를 이용하여 Classification(label =4)한다는 것을 의미한다.
  • 38. 16. 기타(filter의 인수분해) 38사진: https://www.topbots.com/a-brief-history-of-neural-network-architectures/ Google의 Inception network에서는 5x5 Convolution 연산을 3x3 두개로 대체했는데 위의 두개가 같은 것일까??  반은 맞고, 반은 틀리다. Receptive field의 관점에서 보면 위의 말은 맞는 것이다. (오른쪽 사진 참조) 하지만, Parameter의 관점에서 보면 둘은 다른 것이다. 3x3 두개의 경우 parameter 개수는 18개로 5x5의 parameter 개수인 25개보다 7개 적기에 학습에 소요되는 시간은 적다. 하지만, parameter의 수가 작다는 것은 표현력이 그만큼 떨어진다는 것을 이해하고 있어야한다.
  • 39. 16. 기타(filter의 인수분해) 39사진: https://www.topbots.com/a-brief-history-of-neural-network-architectures/ ※ 나중에 Inception network에서는 7x7을 3x3/ 3개로 분해, 5x5를 3x3/ 2개로 분해 하는 것 외에도 3x3을 1x3, 3x1로 인수분해 하여 사용했다.
  • 40. 16. 기타(Parameter 수 계산하기, Convolution size 계산하기) 40 Q1. Input volume: 32x32x3 10, 5x5x3 filters with stride 1, pad 2이면 parameter의 개수는 몇 개인가?  5*5*3*10(number of filters) + 10(bias, number of filters) = 760 Q2. input layer의 size가 [None,1024], output layer의 사이즈가 [None,10]인 MLP의 Parameter의 개수는 몇 개인가?  1024*10 +10 = 10240 +10 = 10250 Q3. [None,28,28,1]크기의 이미지를 [5,5,1,20]크기의 weights, strides = 2, pad = 1로 Convolution 연산을 했을 시 결과 값의 크기는??  Image_size_new = (Image_size – filter_size)/stride + 1 = (28+2 – 5)/1 + 1 = 26 ∴ [None, 26, 26 20]
  • 41. 16. 기타(learning_rate 정하기) 41사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
  • 42. 16. 기타(Search 방법론) 42 이전 슬라이드의 그림과 같이 learning rate를 Grid(일정한 간격으로 나눔) search를 해도 되지만 , 2가지 이상의 Hyper parameter를 조사할 때는 Random Layout 방법을 사용하는 것이 더 좋다.  옆의 그림에서 볼 수 있듯 더욱 다양한 영역을 조사가능 사진: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf
  • 43. 17. 저의 정리 자료 소개 43 1. 비전공자인 제가 공부한 방법 및 유용한 사이트 정리 (https://www.facebook.com/groups/TensorFlowKR/permalink/608999666107762/) 2. Backpropagation (https://www.facebook.com/groups/TensorFlowKR/permalink/581582685516127/) 3. Restricted Boltzmann machine (https://www.facebook.com/groups/TensorFlowKR/permalink/597477030593359/) 4. Batch_normalization, Xavier_initializer (https://github.com/MINGUKKANG/mnist_tensorflow) 5. Variational AutoEncoder (https://www.facebook.com/groups/TensorFlowKR/permalink/608541436153585/) (Code: https://github.com/MINGUKKANG/VAE_tensorflow) 6. GAN, DCGAN(code) (https://www.facebook.com/groups/TensorFlowKR/permalink/611681889172873/) (Code: https://github.com/MINGUKKANG/DCGAN_tensorflow)