SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Bag of Tricks for Image Classification
with Convolutional Neural Networks (CVPR 2019)
Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang, Junyuan Xie, Mu Li
Amazon Web Services
Review by Hyunwoong (github.com/gusdnd852)
1
2
Abstract
1) Background :
최근까지 연구되어왔던 여러가지 기법(Tricks) (e.g. Data Augmentation, Optimization Methods 등)의
발전으로 Image Classification 성능이 상당히 개선되었음.
2) Problem Definition :
그러나 대부분 기법들은 구현 세부사항으로 간단히 언급되거나 소스코드에서만 확인할 수 있음.
때문에 우리가 이러한 기법들을 언제 어떻게 사용하면 얼마나 좋은 지 정확히 알기 어려움.
3) Objective of Paper :
여러 논문에서 소개되었던 기법들을 검토하고 적용해보는 연구를 통해 해당 기법들이 최종 모델 정확도에 미치는 영향을
경험적으로 측정하여 평가하는 것이 이 논문의 목표.
3
Presentation Outline
1) Bag of Tricks for Image Classification with Convolutional Neural Networks에서 소개되는 Trick들을 순서대로 소개
2) 단순히 “잘 되더라” 식으로 넘어가지 않고 왜 그 Trick이 잘 되는지에 대해 관련된 Paper들의 간단한 Summary를 진행 (Paper in Paper)
3) Bag of Tricks for Image Classification with Convolutional Neural Networks에서는 어떤 방식으로 적용했고, 실험 결과는 어땠는지 설명
4
1. Introduction
5
1. Introduction
◎ 2012년 AlexNet의 등장 이후 Convolutional Neural Network는
Image Classification의 주인공이 되었음. 매년 새로운 CNN 아키텍처들
이 쏟아져 나왔으며, 분류 정확도를 높은 수준으로 향상 시켰음.
◎ 그러나 분류 정확도를 향상 시키는데 공헌한 것은 모델 아키텍처만
이 아님. Loss 함수를 변형하거나, 데이터 전처리방법을 변형하거나,
Optimizer를 변형하는 등 지난 10년간 매우 많은 기법들이 제안되어왔
지만 모델 아키텍처에 비해 많은 주목을 받지 못함.
6
1. Introduction
◎ 이러한 기법들은 대부분 구현 세부사항으로 간단하게 설명되고 넘어가
거나, 아예 소스코드에만 존재하는 Trick들도 매우 많았음. 때문에 이 논문
에서는 그러한 기법들(Bag of Tricks)을 모아서 적용하고 성능을 측정함.
◎ 여러 모델에서 이러한 기법들을 비교하는 것은 어렵기 때문에
ResNet-50 모델을 기준으로 적용해보고 실험해 봄. 그 결과, 여러가지 기
법의 조합만으로 SE-ResNeXt-50 등의 최신 모델 아키텍처를 적용한 것보
다 더 좋은 성능을 보였으며, 동일한 방법을 Inception-V3, MonileNet 등
다른 모델 아키텍처에서도 적용할 수 있음을 확인함.
7
2. Training Procedure
8
2. Training Procedure (Baseline)
◎ 논문에서 제시하는 Baseline 모델의 Training Procedure는 다음과 같음.
우리가 잘 알고있는 기본적인 미니배치 학습과정을 나타낸 것으로 우측 하
단의 Pytorch 코드와 동일함. (매우 전형적인 뉴럴넷의 학습 구조임)
◎ 학습과정에서 사용되는 파라미터 (epoch 등)은 하이퍼 파라미터로 여러
가지 조합으로 구현될 수도 있음.
9
2. Training Procedure (Preprocessing – Similar with VGG)
◎ Preprocessing for Training
1) 랜덤 샘플링을 통해 이미지를 추출하고 32bit float 타입으로 변환 (Raw Pixel의 범위는 [0,255])
2) 영역 크기는 [8%, 100%] 범위 내에서 화면비를 [3/4, 4/3] 사이 값으로 랜덤 샘플링한 영역을 크롭 후 224 x 224 크기로 리사이즈
3) 50% 확률로 이미지 flip (좌우 회전)
4) hue, saturation, brightness 조절 값을 [0.6, 1.4] 사이의 값을 랜덤으로 뽑아서 적용
5) 정규분포 N(0, 0.1)에서 값을 하나 샘플링 하여 PCA noise 추가
6) RBG 채널에 대해 (123.68 , 116.779 , 103.939)를 뺌 (평균 값 보정)
◎ Preprocessing for Validation
1) 가로 세로 비율을 유지하면서 각 이미지의 짧은 가장자리 크기를 256픽셀로 조정
2) 센터 크롭으로 224 x 224 영역을 잘라내고 Training과 유사한 RGB 채널로 정규화
◎ Other Setting for Training
1) 모든 convolution layer의 파라미터는 Xavier 초기화 사용
2) 모두 NAG가 적용되었고 120 epochs까지 학습
3) 8개의 v100 GPU에서 테스트되었고 batch size는 128로 적용
4) Learning rate는 0.1로 초기화 되어있고 30, 60, 90번째 epoch마다 10으로 나눔
10
2. Training Procedure (Results)
11
3. Efficient Training
3-1. Large Batch Training
3-2. Low Precision Training
12
3-1. Large Batch Training
13
3. Efficient Training (Large Batch Training)
3-1-1. Mini Batch Stochastic Gradient Descent
◎ Full Batch Gradient Descent
Full Batch Gradient Descent는 Gradient를 정확하게 계산할 수 있지만 매 Iteration 마다 전체 데이터에 대한 Loss를 계산해야 함
◎ Stochastic Gradient Descent
이를 개선한 방법이 한 번의 Iteration에 하나의 Example만 사용하는 Stochastic Gradient Descent (이하 SGD)
SGD는 매우 빠르지만, 추정 값이 너무 Noisy해진다는 단점이 있음
◎ Mini Batch Stochastic Gradient Descent
이를 개선한 방법이 매 Iteration마다 적당한 Mini Batch (m examples)에 대한 Gradient를 계산하는 Mini Batch SGD
그러나 Batch Size는 Hyperparameter임. Batch Size는 어느 정도로 설정해야 하며, 학습에 어떤 영향을 미칠까?
14
3. Efficient Training (Large Batch Training)
3-1-2. Effect of Batch Size
◎ Large Batch Size를 사용하면 Computation Efficiency 가 좋음 (학습속도 빠름)
- Full Batch Gradient Descent는 전역 최소점을 더욱 효율적으로 찾음
- Mini Batch Stochastic Gradient Descent는 더욱 비효율적인 경로를 거침
◎ Small Batch Size를 사용하면 Generalization이 잘 됨 (Validation 성능 좋음)
- Revisiting Small Batch Training for Deep Neural Networks
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
◎ Large Batch Size를 사용하여 Computation Efficiency를 높이면서 Generalization을 잘 되게 하는 방법은 없을까?
- Accurate, large minibatch SGD: Training Imagenet in 1 Hour
- Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes
15
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- Revisiting Small Batch Training for Deep Neural Networks
◎ m의 Batch Size 을 이용하여 n의 Step만큼 Weight Update를 진행할 때 Update 되는 값은 아래와 같음
◎ 여기에서 batch size를 n배 증가시키면 같은 example에 대해 Update되는 값은 아래와 같음
◎ small batch size (m)의 경우 parameter space 상에서 보다 최신상태의 gradient를 사용할 수 있는데 반해, Large batch(nm)의 경우 오래 전
상태의 gradient를 사용해야함. Deep neural network의 loss function 같은 복잡한 non-convex function일수록 gradient 값은 parameter 상태에
따라 크게 변하게 되므로 large batch size를 사용하면 오래전의 부정확한 weight로 업데이트 할 가능성이 커짐
n step m examples
1 step nm examples
16
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- Revisiting Small Batch Training for Deep Neural Networks
With Batch NormalizationWithout Batch Normalization
17
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
◎ Large batch를 사용할수록 training function의 sharp minima로 수렴할 가능성이 높아지고, 이는 generalization 성능을 저하시킴
Flat한 minima의 경우 작은 변화에 대해 둔감하지만, Sharp한 minima의 경우 작은 변화에 대해서 매우 민감함 → generalization에 불리
18
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
◎ Small batch’s sharpness < Large batch’s sharpness (empirical)
19
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
◎ Small batch alpha = 0, Large batch alpha = 1 (empirical)
20
3. Efficient Training (Large Batch Training)
3-1-3. Benefit of Small Batch Training
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
◎ batch size가 커짐에 따라 sharpness가 증가하고, 그에 따라 accuracy가 줄어듦 (empirical)
21
3. Efficient Training (Large Batch Training)
How to Improve both generalization ability and computation efficiency?
(Computation Efficiency + Generalization Ability 두 마리 토끼 잡기)
22
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
1) Linear Scaling Rule : Batch Size를 증가시킬 때 Learning Rate도 비례해서 증가시키자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ Mini-Batch SGD (m = batch size)
◎ 이 때 특정 스텝에서의 (weight update)를 Random Variable로 보면 기대 값(평균)은 다음과 같음
◎ 이 때 특정 example에 대한 (weight update)의 기대 값(평균)은 다음과 같음
23
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
1) Linear Scaling Rule : Batch Size를 증가시킬 때 Learning Rate도 비례해서 증가시키자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ Cost of Computation의 Unit에 대한 Weight Update 기대 값 을 일정하게 유지하기 위해서는 를 일정하게 유지해야 함
◎ Linear Scaling Rule을 적용함으로써 Batch Size에 상관없이 일정한 weight update의 기대 값을 유지하게 하였음
논문에서는 Batch Size = 256, Learning Rate = 0.1으로 선정 한 후 Batch Size를 b로 키워야 하면, Learning Rate도 0.1 * b/256 으로 키움
Same !
Same !
Same !
24
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
2) Learning Rate Warmup : 초반에는 낮은 Learning Rate를 유지하자 !
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ 학습초반에는 모든 파라미터가 랜덤으로 초기화 된 상태인데, 실제 최종 결과값과는 차이가 큼
◎ 이러한 상태에서 큰 Learning Rate를 사용하게 되면 수치적으로 매우 불안정한 상태에 머물게 됨
◎ 이 때 사용하는 것이 Warm Up 기법으로, 학습이 불안정한 초기에는 매우 낮은 Learning Rate를 설정하는 것.
◎ Weight 값들이 어느정도 안정을 찾게 되면 본래의 높은 Learning Rate를 적용하는 방식
25
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
2) Learning Rate Warmup : 초반에는 낮은 Learning Rate를 유지하자 !
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ Constant Warmup : 일정하게 작은 상수를 초기에 Learning Rate로 지정하고 일정 Epoch이상이 되면 본래의 Learning 적용
◎ Gradual Warmup : 매우 작은 수를 Learning Rate로 지정하고, 일정 Epoch전까지 초기 Learning Rate까지 선형적으로 증가시킴
◎ Detection이나 Segmentation에서는 Constant Warmup도 효과가 있었으나 Classification에서는 Gradual Warmup이 좋음 (empirical)
◎ 논문에서는 Learning Rate를 0으로 시작하여 5 Epoch 동안 초기 Learning Rate인 0.1까지 증가시킴
26
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
27
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ Residual Block Pseudo Code
def resnet_block(X):
“”” Conv(X) ≡ Normalized Convolution ~ N(0,1)”””
shortcut = X
X = ReLU(γ * Conv(X) + β) <------------- (γ=1, β=0)
X = ReLU(γ * Conv(X) + β) <------------- (γ=1, β=0)
X = γ * Conv(X) + β <-------------------- (γ=0, β=0)
X = shortcut + X (=매우 작은 값) <--------- X = shortcut + 0
return ReLU(X)
◎ γ 가 크게 변하기 전, 학습초반에는 그냥 ReLU Activation을 태우는 것과 비슷함
def resnet_block(X):
return ReLU(X + small term)
28
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ 각 Layer의 γ값들이 크게 조정되기 전(학습 초기)까지는 아래와 같이 Network 구조가 단순해지고 학습이 빨라지는 현상이 생기게 됨
29
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자!
from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
◎ Backpropagation of Batch Normalization
30
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
4) No Bias Decay : 오직 Weight만 Regularization 하자 !
from 「Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes」
◎ 오직 Weight에만 Decay를 적용하고, Bias, Batch Norm Gamma, Batch Norm Beta 등은 Decay하지 않음
Loss = Loss + ½ λ (Parameters)2
: L2 Regularization
Parameters = {Weight, Bias, Gamma, Beta}
31
3. Efficient Training (Large Batch Training)
3-1-4. improving both generalization ability and computation efficiency in Large Batch Training
4) No Bias Decay : 오직 Weight만 Regularization 하자 !
from 「Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes」
◎ Bias, Gamma, Beta는 전체 파라미터의 0.02%에 불과한데 이 값들을 Decay시키면 상당한 Underfitting이 일어날 수 있음
Weight은 너무 큰 값을 갖지 못하게 Decay해주고, 나머지 값들은 보존할 필요가 있음 (from Deep Learning Book by Goodfellow and others)
32
3-2. Low Precision Training
33
3. Efficient Training (Low Precision Training)
3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16)
from 「Mixed Precision Training」
◎ 기존 신경망을 학습할 때 FP32를 사용하였음. 그러나 최신 GPU들이 Lower Precision 계산을 지원하면서 속도면에서 큰 이점을 얻을 수 있게 됨.
NVDIA V100은 FP32에서 14TFLOPS를 제공하지만, FP16에서는 100TFLOPS가 넘는 속도를 보여줌. 논문에서는 16FP를 적용할 경우 최종적으로
2~3배 빠른 학습이 가능하다고 주장함 (TFLOPS = 초당 부동소수점 연산)
34
3. Efficient Training (Low Precision Training)
3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16)
from 「Mixed Precision Training」
◎ Mix Precision Training에서는 Master Weight는 FP32로, Gradient를 계산할 때는 FP16을 사용하였음.
그러나 FP16의 경우 미세한 Gradient 값들이 무시되어 정확도가 다소 감소할 우려가 있음
35
3. Efficient Training (Low Precision Training)
3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16)
from 「Mixed Precision Training」
◎ 때문에 Loss에 일정한 상수를 곱해 Loss Scaling을 진행함. 이로 인해 정확도를 거의 유지하면서 훨씬 빠른 속도로 학습할 수 있었음
(e.g. Loss * 500으로 Scaling, 0.000000555 → 0.000277500, 이로 인해 0.000277이라는 Gradient를 학습에 사용할 수 있게 됨)
Scaling !
36
3. Efficient Training (Low Precision Training)
3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16)
from 「Mixed Precision Training」
◎ 때문에 Loss에 일정한 상수를 곱해 Loss Scaling을 진행함. 이로 인해 정확도를 거의 유지하면서 훨씬 빠른 속도로 학습할 수 있었음
(e.g. Loss * 500으로 Scaling, 0.000000555 → 0.000277500, 이로 인해 0.000277이라는 Gradient를 학습에 사용할 수 있게 됨)
37
3-3. Experiment Result
38
3. Efficient Training (Experiment Result)
3-3. Experiment Result : 학습속도 3배↑, Top-1 Accuracy 약 0.3%↑
◎ Baseline(BS=256 with FP32) → Efficient Setting(BS=1024 with FP16)
39
4. Model Tweak
4-1. ResNet Tweaks
40
4. Model Tweak (Baseline)
◎ Model Tweak : Convolution Layer의 Stride, Padding 등을 변경하는 것과 같은 Minor 모델 변경 작업을 의미
◎ Baseline 모델(ResNet-A)은 Input Stem 영역(7x7 Conv)가 존재하고 이후 4개의 Stage 모듈을 지나 Output 레이어로 구성됨
41
4. Model Tweak (Baseline)
◎ Model Tweak : Convolution Layer의 Stride, Padding 등을 변경하는 것과 같은 Minor 모델 변경 작업을 의미
◎ Stem 영역에서는 이미지의 크기를 4배 줄이고 채널을 64개로 늘림 (7x7 by 2 Conv to 64 channel + 3x3 by 2 Max Pool)
◎ 2~4 Stage 에서는 아래와 같은 Block을 통과하는데, Residual Connection과 Bottle Neck Block 이라고 불리는 Down Sampling 구조를 사용함
(Bottle Neck은 Network In Network , GoogLeNet의 Inception과 비슷한 컨셉의 구조)
42
4-1. ResNet Tweaks
43
4. Model Tweak (ResNet Tweaks)
◎ 4-1. ResNet Tweaks : ResNet-B
- Torch 버전으로 처음 등장했으며, 다양한 곳에서 ResNet 구현체로 사용되고 있음 (e.g. TF Official ResNet)
- Down Sampling Block (Bottle Neck)이 변경 되었음
- Baseline(ResNet-A)의 Path A에서는 정보 손실 량이 많은데, Stride가 2인 1x1 Conv를 사용했기 때문
- ResNet-B는 3x3 Conv에서 Stride를 2로 줘서 Width, Height를 줄이고, 1x1 Conv는 정말 Channel Size만 변경하는 용도로 사용
ResNet-A ResNet-B
44
4. Model Tweak (ResNet Tweaks)
◎ 4-1. ResNet Tweaks : ResNet-C
- Inception-V2 에서 5x5 Conv와 3x3 Conv 레이어를 두 번 거치는 것이 동일한 Receptive Field를 가지지만 후자가 Computation이 적기 때문
에 작은 사이즈의 Kernel을 여러 번 사용하는 것이 좋다고 설명한 것에서 영감을 얻어서 ResNet의 7x7 Stem 영역을 수정한 모델
- 이미 SENet, PSPNet, DeepLab-V3, ShuffleNet-V2 등에서 사용 중인 Tweak임
- Stem영역의 7x7 Conv를 여러 개의 3x3 Conv로 분리함. 7x7=49 vs 3x3x3=27으로 훨씬 적은 Computation만으로 기존과 동일하게 출력할 수
있음 (64 Channel + 4배 작은 Input Image)
ResNet-A ResNet-C
5x5=25 vs 3x3x2=18
작은 kernel이 더 좋음
45
4. Model Tweak (ResNet Tweaks)
New Tweak for ResNet that proposed by this paper : ResNet-D
46
◎ 4-1. ResNet Tweaks : ResNet-D
- ResNet-B에서 영감을 얻은 Tweak으로 Path B의 정보 손실 량을 최소화하기 위해 도입함
- Path B의 1x1 Conv가 Stride를 2로 설정하여 정보의 ¾가 유실됨.
- 실험을 통해 앞에 Stride가 2인 2x2 Average Pooling 레이어를 추가하고 1x1 Conv는 Stride를 1로 변경
- 약간의 연산 량만 증가하고 더 좋은 결과가 얻어지는 것이 확인 됨
4. Model Tweak (ResNet Tweaks)
ResNet-B ResNet-D
47
4-2. Experiment Result
48
4-2. Experiment Result : Top-1 Accuracy 약 1.0%↑
◎ ResNet-A → ResNet-B : Path A의 Stride 2를 3x3 Conv로 옮김 : 0.5 % 성능 증가
◎ ResNet-B → ResNet-C : Stem 영역의 7x7 Conv를 여러 개의 3x3 Conv로 나눔 : 0.2% 성능 증가
◎ ResNet-A → ResNet-B : Path B의 Stride 2를 2x2 Average Pooling으로 옮김 : 0.3 % 성능 증가
4. Model Tweak (ResNet Tweaks)
49
5. Training Refinements
5-1. Cosine Learning Rate Decay
5-2. Label Smoothing
5-3. Knowledge Distillation
5-4. Mixup Training
50
5-1. Cosine Learning Rate Decay
51
5. Training Refinements (Cosine Learning Rate Decay = Cosine Annealing)
◎ Learning Rate Decay : mini batch 마다 다른 분포를 가지는데 동일한 learning rate로 경사를 내려가면 최소점에 도달하지 못하고
그 주위를 맴돌게 됨. 경사를 타고 내려가면 내려갈 수록 걸음의 크기를 줄여서 내려가야 최소점에 도달할 수 있음
◎ Learning Rate Decay on Baseline : Step Decay : Baseline은 30, 60, 90번째 epoch에서 learning rate를 떨어뜨림
5-1. Cosine Learning Rate Decay (Cosine Annealing)
from 「SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS」
◎ Step Decay vs Cosine Decay (Cosine Annealing)
Cosine Decay는 Step Decay와 다르게 부드럽게 Learning Rate를 감소시키다가 급격하게 Learning Rate를 감소시키고 일정 주기마다 다시 최고점
으로 돌아오는 (Restart) 구조를 갖고 있음.
52
5. Training Refinements (Cosine Learning Rate Decay)
53
5. Training Refinements (Cosine Learning Rate Decay)
5-1. Cosine Learning Rate Decay (Cosine Annealing)
from 「SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS」
◎ Cosine Decay (Cosine Annealing)
본 논문에서는 Restart는 사용하지 않고 처음부터 끝까지 천천히 Cosine 그래프를 따라 Learning Rate를 감소시키는 방식을 사용하였고 이를 적용
하여 성능이 증가하였음. Step Decay의 경우 Epoch에 맞춰서 사람이 지정해야 하는데, 어느 정도 Epoch에 어느 정도의 Learning Rate를 가지게
할지 경험적으로 평가하여 적용할 수 밖에 없음. 그에 비해 Cosine Decay는 Epoch에 맞게 적절한 Learning Rate를 지정해주기 때문에 높은
Accuracy를 얻을 수 있음
54
5-2. Label Smoothing
55
5. Training Refinements (Label Smoothing)
5-2. Label Smoothing
from 「Rethinking the Inception Architecture for Computer Vision」
◎ Softmax Function (z = 주어진 이미지의 Logit)
◎ Loss Function (L=Negative Cross Entropy, k=클래스의 개수)
◎ Optimal Solution은 다른 값들이 충분히 작을 때 = inf가 되는 것인데, 학습을 진행하면 이 방향으로 흘러가서 결국 과적합으로 이어질 가능
성이 있다고 주장. 즉, 출력된 클래스 간의 차이가 커야 정답으로 인정하게 되는 것인데, 이렇게 학습되면 모델이 해당 클래스가 정답일 것이라고
너무 확신하게 설계된다는 문제가 있음
56
5. Training Refinements (Label Smoothing)
5-2. Label Smoothing
from 「Rethinking the Inception Architecture for Computer Vision」
◎ Inception V2를 학습시키기 위해 제안된 Label Smoothing은 True Probability를 아래와 같이 바꾸는 것
◎ Smoothed Label의 Logit을 구하면 다음과 같음. 만약 epsilon이 0이면 정답과 오답 사이의 Logit 무한대로 수렴하고, epsilon을 높이면 정답과
오답 사이의 Logit이 줄어듦. Empirical하게 실험해본 결과 K=1000 (ImageNet), epsilon=0.1 인 경우, Logit간의 Gap이 9.1정도로 수렴하는 것을
확인하였음. 이는 모델을 Generalize 하는 효과를 가지고, 실제로 분류 성능이 향상되었음
57
5-3. Knowledge Distillation
58
5. Training Refinements (Knowledge Distillation)
5-3. Knowledge Distillation
from 「Distilling the Knowledge in a Neural Network」
◎ 이미 학습된 기존의 거대한 Teacher Neural Network(ResNet-152)가 가지고 있는 Knowledge를
또 다른 작은 Student Neural Network(ResNet-50)에 효율적으로 전달할 수 있는 Knowledge Distillation 기법을 연구
◎ Softmax는 이러한 Knowledge를 보유하고 있음. 고양이와 비슷하게 생긴 강아지를 보고 고양이일 가능성이 10%는 있다는 Knowledge를 내포
59
5. Training Refinements (Knowledge Distillation)
5-2. Knowledge Distillation
from 「Distilling the Knowledge in a Neural Network」
◎ Loss Function (z=student, r=teacher, T=hyper parameter, T는 출력을 더욱 Soft하게 바꿈)
기존의 정답(p)와 예측(softmax(z))의 Loss 뿐만 아니라, Teacher(ResNet-152의 예측)과 Student(ResNet-50의 예측)의 Loss Term을 추가함
60
5-4. Mixup Training
61
5. Training Refinements (Mixup Training)
5-4. Mixup Training
from 「mixup: BEYOND EMPIRICAL RISK MINIMIZATION」
◎ Data Augmentation 기법으로 두 이미지와 Label을 각각 Weighted Linear Interpolation 하여 새로운 이미지 데이터를 만들어 내는 기법
λ ∈ [0, 1]는 Beta 분포에서 랜덤으로 뽑혀져 나온 상수이고 이렇게 만들어진 Image를 Training에 활용함
62
5-5. Experiment Results
63
5. Training Refinements (Experiment Results)
5-5. Experiment Results (Top-1 Accuracy 약 2.0%↑)
- Cosine Learning Rate Decay 적용
- Label Smoothing 적용 (epsilon = 0.1)
- Distillation 적용 (T=20, Teacher = ResNet-D-152 with Cosine Decay, Label Smoothing)
- Mixup 적용 (Beta 분포의 파라미터 alpha = 0.2, Epoch을 120 → 200으로 변경)
◎ Distillation의 경우 ResNet에서는 잘 작동했으나, 다른 Network에서는 오히려 성능이 감소했음
64
5. Training Refinements (Experiment Results)
5-5. Experiment Results (Other Dataset)
◎ ImageNet이 아닌 Place-365 데이터셋에도 적용해 봄
65
6. Transfer Learning
66
6. Transfer Learning
◎ 지금까지 살펴본 내용들이 Transfer Learning에도 적용가능한지 살펴봄
◎ 특히 Object Detection(VGG19 Backbone) 과 Semantic Segmentation(FCN) 문제에 적용하여 실험
◎ 실험 결과 적용하기 전에 비해 성능이 증가한 것을 확인할 수 있음
◎ Semantic Segmentation의 경우 Label Smoothing, Mixup 등은 오히려 성능을 감소 시켰음
67
Reference
- Revisiting Small Batch Training for Deep Neural Networks
- On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
- Accurate, large minibatch SGD: Training Imagenet in 1 Hour
- Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes
- Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes
- Mixed Precision Training
- Deep Residual Learning for Image Recognition
- Rethinking the inception architecture for computer vision
- SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS
- Distilling the Knowledge in a Neural Network
- mixup: BEYOND EMPIRICAL RISK MINIMIZATION

Weitere ähnliche Inhalte

Was ist angesagt?

Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기NAVER D2
 
GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역Byeong il Ko
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 
Sequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksSequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksHoon Heo
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine TranslationNAVER LABS
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역NAVER LABS
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
 
CS294-112 Lecture 13
CS294-112 Lecture 13CS294-112 Lecture 13
CS294-112 Lecture 13Gyubin Son
 
Character-Aware Neural Language Models
Character-Aware Neural Language ModelsCharacter-Aware Neural Language Models
Character-Aware Neural Language ModelsHoon Heo
 
Ml for 정형데이터
Ml for 정형데이터Ml for 정형데이터
Ml for 정형데이터JEEHYUN PAIK
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
Deview2013 naver labs_nsmt_외부공개버전_김준석
Deview2013 naver labs_nsmt_외부공개버전_김준석Deview2013 naver labs_nsmt_외부공개버전_김준석
Deview2013 naver labs_nsmt_외부공개버전_김준석NAVER D2
 
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...keunbong kwak
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)Tae Young Lee
 
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법NAVER D2
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)Lee Seungeun
 
제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)Susang Kim
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 

Was ist angesagt? (20)

Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기
 
GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
Sequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksSequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural Networks
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차
 
CS294-112 Lecture 13
CS294-112 Lecture 13CS294-112 Lecture 13
CS294-112 Lecture 13
 
Character-Aware Neural Language Models
Character-Aware Neural Language ModelsCharacter-Aware Neural Language Models
Character-Aware Neural Language Models
 
CS294-112 18
CS294-112 18CS294-112 18
CS294-112 18
 
Ml for 정형데이터
Ml for 정형데이터Ml for 정형데이터
Ml for 정형데이터
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
Deview2013 naver labs_nsmt_외부공개버전_김준석
Deview2013 naver labs_nsmt_외부공개버전_김준석Deview2013 naver labs_nsmt_외부공개버전_김준석
Deview2013 naver labs_nsmt_외부공개버전_김준석
 
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...
딥러닝 논문 리뷰 Learning phrase representations using rnn encoder decoder for stati...
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)
 
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
[222]neural machine translation (nmt) 동작의 시각화 및 분석 방법
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 

Ähnlich wie Bag of Tricks for Image Classification with Convolutional Neural Networks (CVPR 2019) Paper Review

carrier of_tricks_for_image_classification
carrier of_tricks_for_image_classificationcarrier of_tricks_for_image_classification
carrier of_tricks_for_image_classificationLEE HOSEONG
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...Sunghoon Joo
 
Chapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsChapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsKyeongUkJang
 
Function approximation as supervised learning
Function approximation as supervised learningFunction approximation as supervised learning
Function approximation as supervised learningSunggon Song
 
딥러닝 논문읽기 efficient netv2 논문리뷰
딥러닝 논문읽기 efficient netv2  논문리뷰딥러닝 논문읽기 efficient netv2  논문리뷰
딥러닝 논문읽기 efficient netv2 논문리뷰taeseon ryu
 
Ch.5 machine learning basics
Ch.5  machine learning basicsCh.5  machine learning basics
Ch.5 machine learning basicsJinho Lee
 
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...태엽 김
 
"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper ReviewLEE HOSEONG
 
180212 normalization hyu_dake
180212 normalization hyu_dake180212 normalization hyu_dake
180212 normalization hyu_dakeDongGyun Hong
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
PR-203: Class-Balanced Loss Based on Effective Number of Samples
PR-203: Class-Balanced Loss Based on Effective Number of SamplesPR-203: Class-Balanced Loss Based on Effective Number of Samples
PR-203: Class-Balanced Loss Based on Effective Number of SamplesSunghoon Joo
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)SANG WON PARK
 
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...Sunghoon Joo
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model serviceTae Young Lee
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical MethodologyKyeongUkJang
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsseungwoo kim
 
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.
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작DACON AI 데이콘
 

Ähnlich wie Bag of Tricks for Image Classification with Convolutional Neural Networks (CVPR 2019) Paper Review (20)

carrier of_tricks_for_image_classification
carrier of_tricks_for_image_classificationcarrier of_tricks_for_image_classification
carrier of_tricks_for_image_classification
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...
PR-383: Solving ImageNet: a Unified Scheme for Training any Backbone to Top R...
 
Chapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep modelsChapter 8 - optimization for training deep models
Chapter 8 - optimization for training deep models
 
Function approximation as supervised learning
Function approximation as supervised learningFunction approximation as supervised learning
Function approximation as supervised learning
 
딥러닝 논문읽기 efficient netv2 논문리뷰
딥러닝 논문읽기 efficient netv2  논문리뷰딥러닝 논문읽기 efficient netv2  논문리뷰
딥러닝 논문읽기 efficient netv2 논문리뷰
 
Deep learning overview
Deep learning overviewDeep learning overview
Deep learning overview
 
Ch.5 machine learning basics
Ch.5  machine learning basicsCh.5  machine learning basics
Ch.5 machine learning basics
 
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...
 
"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review"How does batch normalization help optimization" Paper Review
"How does batch normalization help optimization" Paper Review
 
180212 normalization hyu_dake
180212 normalization hyu_dake180212 normalization hyu_dake
180212 normalization hyu_dake
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
PR-203: Class-Balanced Loss Based on Effective Number of Samples
PR-203: Class-Balanced Loss Based on Effective Number of SamplesPR-203: Class-Balanced Loss Based on Effective Number of Samples
PR-203: Class-Balanced Loss Based on Effective Number of Samples
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)
 
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...
PR-313 Training BatchNorm and Only BatchNorm: On the Expressive Power of Rand...
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model service
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendations
 
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
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
 

Bag of Tricks for Image Classification with Convolutional Neural Networks (CVPR 2019) Paper Review

  • 1. Bag of Tricks for Image Classification with Convolutional Neural Networks (CVPR 2019) Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang, Junyuan Xie, Mu Li Amazon Web Services Review by Hyunwoong (github.com/gusdnd852) 1
  • 2. 2 Abstract 1) Background : 최근까지 연구되어왔던 여러가지 기법(Tricks) (e.g. Data Augmentation, Optimization Methods 등)의 발전으로 Image Classification 성능이 상당히 개선되었음. 2) Problem Definition : 그러나 대부분 기법들은 구현 세부사항으로 간단히 언급되거나 소스코드에서만 확인할 수 있음. 때문에 우리가 이러한 기법들을 언제 어떻게 사용하면 얼마나 좋은 지 정확히 알기 어려움. 3) Objective of Paper : 여러 논문에서 소개되었던 기법들을 검토하고 적용해보는 연구를 통해 해당 기법들이 최종 모델 정확도에 미치는 영향을 경험적으로 측정하여 평가하는 것이 이 논문의 목표.
  • 3. 3 Presentation Outline 1) Bag of Tricks for Image Classification with Convolutional Neural Networks에서 소개되는 Trick들을 순서대로 소개 2) 단순히 “잘 되더라” 식으로 넘어가지 않고 왜 그 Trick이 잘 되는지에 대해 관련된 Paper들의 간단한 Summary를 진행 (Paper in Paper) 3) Bag of Tricks for Image Classification with Convolutional Neural Networks에서는 어떤 방식으로 적용했고, 실험 결과는 어땠는지 설명
  • 5. 5 1. Introduction ◎ 2012년 AlexNet의 등장 이후 Convolutional Neural Network는 Image Classification의 주인공이 되었음. 매년 새로운 CNN 아키텍처들 이 쏟아져 나왔으며, 분류 정확도를 높은 수준으로 향상 시켰음. ◎ 그러나 분류 정확도를 향상 시키는데 공헌한 것은 모델 아키텍처만 이 아님. Loss 함수를 변형하거나, 데이터 전처리방법을 변형하거나, Optimizer를 변형하는 등 지난 10년간 매우 많은 기법들이 제안되어왔 지만 모델 아키텍처에 비해 많은 주목을 받지 못함.
  • 6. 6 1. Introduction ◎ 이러한 기법들은 대부분 구현 세부사항으로 간단하게 설명되고 넘어가 거나, 아예 소스코드에만 존재하는 Trick들도 매우 많았음. 때문에 이 논문 에서는 그러한 기법들(Bag of Tricks)을 모아서 적용하고 성능을 측정함. ◎ 여러 모델에서 이러한 기법들을 비교하는 것은 어렵기 때문에 ResNet-50 모델을 기준으로 적용해보고 실험해 봄. 그 결과, 여러가지 기 법의 조합만으로 SE-ResNeXt-50 등의 최신 모델 아키텍처를 적용한 것보 다 더 좋은 성능을 보였으며, 동일한 방법을 Inception-V3, MonileNet 등 다른 모델 아키텍처에서도 적용할 수 있음을 확인함.
  • 8. 8 2. Training Procedure (Baseline) ◎ 논문에서 제시하는 Baseline 모델의 Training Procedure는 다음과 같음. 우리가 잘 알고있는 기본적인 미니배치 학습과정을 나타낸 것으로 우측 하 단의 Pytorch 코드와 동일함. (매우 전형적인 뉴럴넷의 학습 구조임) ◎ 학습과정에서 사용되는 파라미터 (epoch 등)은 하이퍼 파라미터로 여러 가지 조합으로 구현될 수도 있음.
  • 9. 9 2. Training Procedure (Preprocessing – Similar with VGG) ◎ Preprocessing for Training 1) 랜덤 샘플링을 통해 이미지를 추출하고 32bit float 타입으로 변환 (Raw Pixel의 범위는 [0,255]) 2) 영역 크기는 [8%, 100%] 범위 내에서 화면비를 [3/4, 4/3] 사이 값으로 랜덤 샘플링한 영역을 크롭 후 224 x 224 크기로 리사이즈 3) 50% 확률로 이미지 flip (좌우 회전) 4) hue, saturation, brightness 조절 값을 [0.6, 1.4] 사이의 값을 랜덤으로 뽑아서 적용 5) 정규분포 N(0, 0.1)에서 값을 하나 샘플링 하여 PCA noise 추가 6) RBG 채널에 대해 (123.68 , 116.779 , 103.939)를 뺌 (평균 값 보정) ◎ Preprocessing for Validation 1) 가로 세로 비율을 유지하면서 각 이미지의 짧은 가장자리 크기를 256픽셀로 조정 2) 센터 크롭으로 224 x 224 영역을 잘라내고 Training과 유사한 RGB 채널로 정규화 ◎ Other Setting for Training 1) 모든 convolution layer의 파라미터는 Xavier 초기화 사용 2) 모두 NAG가 적용되었고 120 epochs까지 학습 3) 8개의 v100 GPU에서 테스트되었고 batch size는 128로 적용 4) Learning rate는 0.1로 초기화 되어있고 30, 60, 90번째 epoch마다 10으로 나눔
  • 11. 11 3. Efficient Training 3-1. Large Batch Training 3-2. Low Precision Training
  • 13. 13 3. Efficient Training (Large Batch Training) 3-1-1. Mini Batch Stochastic Gradient Descent ◎ Full Batch Gradient Descent Full Batch Gradient Descent는 Gradient를 정확하게 계산할 수 있지만 매 Iteration 마다 전체 데이터에 대한 Loss를 계산해야 함 ◎ Stochastic Gradient Descent 이를 개선한 방법이 한 번의 Iteration에 하나의 Example만 사용하는 Stochastic Gradient Descent (이하 SGD) SGD는 매우 빠르지만, 추정 값이 너무 Noisy해진다는 단점이 있음 ◎ Mini Batch Stochastic Gradient Descent 이를 개선한 방법이 매 Iteration마다 적당한 Mini Batch (m examples)에 대한 Gradient를 계산하는 Mini Batch SGD 그러나 Batch Size는 Hyperparameter임. Batch Size는 어느 정도로 설정해야 하며, 학습에 어떤 영향을 미칠까?
  • 14. 14 3. Efficient Training (Large Batch Training) 3-1-2. Effect of Batch Size ◎ Large Batch Size를 사용하면 Computation Efficiency 가 좋음 (학습속도 빠름) - Full Batch Gradient Descent는 전역 최소점을 더욱 효율적으로 찾음 - Mini Batch Stochastic Gradient Descent는 더욱 비효율적인 경로를 거침 ◎ Small Batch Size를 사용하면 Generalization이 잘 됨 (Validation 성능 좋음) - Revisiting Small Batch Training for Deep Neural Networks - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima ◎ Large Batch Size를 사용하여 Computation Efficiency를 높이면서 Generalization을 잘 되게 하는 방법은 없을까? - Accurate, large minibatch SGD: Training Imagenet in 1 Hour - Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes
  • 15. 15 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - Revisiting Small Batch Training for Deep Neural Networks ◎ m의 Batch Size 을 이용하여 n의 Step만큼 Weight Update를 진행할 때 Update 되는 값은 아래와 같음 ◎ 여기에서 batch size를 n배 증가시키면 같은 example에 대해 Update되는 값은 아래와 같음 ◎ small batch size (m)의 경우 parameter space 상에서 보다 최신상태의 gradient를 사용할 수 있는데 반해, Large batch(nm)의 경우 오래 전 상태의 gradient를 사용해야함. Deep neural network의 loss function 같은 복잡한 non-convex function일수록 gradient 값은 parameter 상태에 따라 크게 변하게 되므로 large batch size를 사용하면 오래전의 부정확한 weight로 업데이트 할 가능성이 커짐 n step m examples 1 step nm examples
  • 16. 16 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - Revisiting Small Batch Training for Deep Neural Networks With Batch NormalizationWithout Batch Normalization
  • 17. 17 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima ◎ Large batch를 사용할수록 training function의 sharp minima로 수렴할 가능성이 높아지고, 이는 generalization 성능을 저하시킴 Flat한 minima의 경우 작은 변화에 대해 둔감하지만, Sharp한 minima의 경우 작은 변화에 대해서 매우 민감함 → generalization에 불리
  • 18. 18 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima ◎ Small batch’s sharpness < Large batch’s sharpness (empirical)
  • 19. 19 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima ◎ Small batch alpha = 0, Large batch alpha = 1 (empirical)
  • 20. 20 3. Efficient Training (Large Batch Training) 3-1-3. Benefit of Small Batch Training - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima ◎ batch size가 커짐에 따라 sharpness가 증가하고, 그에 따라 accuracy가 줄어듦 (empirical)
  • 21. 21 3. Efficient Training (Large Batch Training) How to Improve both generalization ability and computation efficiency? (Computation Efficiency + Generalization Ability 두 마리 토끼 잡기)
  • 22. 22 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 1) Linear Scaling Rule : Batch Size를 증가시킬 때 Learning Rate도 비례해서 증가시키자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ Mini-Batch SGD (m = batch size) ◎ 이 때 특정 스텝에서의 (weight update)를 Random Variable로 보면 기대 값(평균)은 다음과 같음 ◎ 이 때 특정 example에 대한 (weight update)의 기대 값(평균)은 다음과 같음
  • 23. 23 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 1) Linear Scaling Rule : Batch Size를 증가시킬 때 Learning Rate도 비례해서 증가시키자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ Cost of Computation의 Unit에 대한 Weight Update 기대 값 을 일정하게 유지하기 위해서는 를 일정하게 유지해야 함 ◎ Linear Scaling Rule을 적용함으로써 Batch Size에 상관없이 일정한 weight update의 기대 값을 유지하게 하였음 논문에서는 Batch Size = 256, Learning Rate = 0.1으로 선정 한 후 Batch Size를 b로 키워야 하면, Learning Rate도 0.1 * b/256 으로 키움 Same ! Same ! Same !
  • 24. 24 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 2) Learning Rate Warmup : 초반에는 낮은 Learning Rate를 유지하자 ! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ 학습초반에는 모든 파라미터가 랜덤으로 초기화 된 상태인데, 실제 최종 결과값과는 차이가 큼 ◎ 이러한 상태에서 큰 Learning Rate를 사용하게 되면 수치적으로 매우 불안정한 상태에 머물게 됨 ◎ 이 때 사용하는 것이 Warm Up 기법으로, 학습이 불안정한 초기에는 매우 낮은 Learning Rate를 설정하는 것. ◎ Weight 값들이 어느정도 안정을 찾게 되면 본래의 높은 Learning Rate를 적용하는 방식
  • 25. 25 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 2) Learning Rate Warmup : 초반에는 낮은 Learning Rate를 유지하자 ! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ Constant Warmup : 일정하게 작은 상수를 초기에 Learning Rate로 지정하고 일정 Epoch이상이 되면 본래의 Learning 적용 ◎ Gradual Warmup : 매우 작은 수를 Learning Rate로 지정하고, 일정 Epoch전까지 초기 Learning Rate까지 선형적으로 증가시킴 ◎ Detection이나 Segmentation에서는 Constant Warmup도 효과가 있었으나 Classification에서는 Gradual Warmup이 좋음 (empirical) ◎ 논문에서는 Learning Rate를 0으로 시작하여 5 Epoch 동안 초기 Learning Rate인 0.1까지 증가시킴
  • 26. 26 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」
  • 27. 27 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ Residual Block Pseudo Code def resnet_block(X): “”” Conv(X) ≡ Normalized Convolution ~ N(0,1)””” shortcut = X X = ReLU(γ * Conv(X) + β) <------------- (γ=1, β=0) X = ReLU(γ * Conv(X) + β) <------------- (γ=1, β=0) X = γ * Conv(X) + β <-------------------- (γ=0, β=0) X = shortcut + X (=매우 작은 값) <--------- X = shortcut + 0 return ReLU(X) ◎ γ 가 크게 변하기 전, 학습초반에는 그냥 ReLU Activation을 태우는 것과 비슷함 def resnet_block(X): return ReLU(X + small term)
  • 28. 28 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ 각 Layer의 γ값들이 크게 조정되기 전(학습 초기)까지는 아래와 같이 Network 구조가 단순해지고 학습이 빨라지는 현상이 생기게 됨
  • 29. 29 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 3) Zero Gamma : Resnet에서 마지막 Batch Normalization의 gamma를 0으로 초기화 하자! from 「Accurate, large minibatch SGD: Training Imagenet in 1 Hour」 ◎ Backpropagation of Batch Normalization
  • 30. 30 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 4) No Bias Decay : 오직 Weight만 Regularization 하자 ! from 「Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes」 ◎ 오직 Weight에만 Decay를 적용하고, Bias, Batch Norm Gamma, Batch Norm Beta 등은 Decay하지 않음 Loss = Loss + ½ λ (Parameters)2 : L2 Regularization Parameters = {Weight, Bias, Gamma, Beta}
  • 31. 31 3. Efficient Training (Large Batch Training) 3-1-4. improving both generalization ability and computation efficiency in Large Batch Training 4) No Bias Decay : 오직 Weight만 Regularization 하자 ! from 「Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes」 ◎ Bias, Gamma, Beta는 전체 파라미터의 0.02%에 불과한데 이 값들을 Decay시키면 상당한 Underfitting이 일어날 수 있음 Weight은 너무 큰 값을 갖지 못하게 Decay해주고, 나머지 값들은 보존할 필요가 있음 (from Deep Learning Book by Goodfellow and others)
  • 33. 33 3. Efficient Training (Low Precision Training) 3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16) from 「Mixed Precision Training」 ◎ 기존 신경망을 학습할 때 FP32를 사용하였음. 그러나 최신 GPU들이 Lower Precision 계산을 지원하면서 속도면에서 큰 이점을 얻을 수 있게 됨. NVDIA V100은 FP32에서 14TFLOPS를 제공하지만, FP16에서는 100TFLOPS가 넘는 속도를 보여줌. 논문에서는 16FP를 적용할 경우 최종적으로 2~3배 빠른 학습이 가능하다고 주장함 (TFLOPS = 초당 부동소수점 연산)
  • 34. 34 3. Efficient Training (Low Precision Training) 3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16) from 「Mixed Precision Training」 ◎ Mix Precision Training에서는 Master Weight는 FP32로, Gradient를 계산할 때는 FP16을 사용하였음. 그러나 FP16의 경우 미세한 Gradient 값들이 무시되어 정확도가 다소 감소할 우려가 있음
  • 35. 35 3. Efficient Training (Low Precision Training) 3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16) from 「Mixed Precision Training」 ◎ 때문에 Loss에 일정한 상수를 곱해 Loss Scaling을 진행함. 이로 인해 정확도를 거의 유지하면서 훨씬 빠른 속도로 학습할 수 있었음 (e.g. Loss * 500으로 Scaling, 0.000000555 → 0.000277500, 이로 인해 0.000277이라는 Gradient를 학습에 사용할 수 있게 됨) Scaling !
  • 36. 36 3. Efficient Training (Low Precision Training) 3-2. Low Precision Training : 더 낮은 Floating Point 타입을 사용하자 ! (FP32 → FP16) from 「Mixed Precision Training」 ◎ 때문에 Loss에 일정한 상수를 곱해 Loss Scaling을 진행함. 이로 인해 정확도를 거의 유지하면서 훨씬 빠른 속도로 학습할 수 있었음 (e.g. Loss * 500으로 Scaling, 0.000000555 → 0.000277500, 이로 인해 0.000277이라는 Gradient를 학습에 사용할 수 있게 됨)
  • 38. 38 3. Efficient Training (Experiment Result) 3-3. Experiment Result : 학습속도 3배↑, Top-1 Accuracy 약 0.3%↑ ◎ Baseline(BS=256 with FP32) → Efficient Setting(BS=1024 with FP16)
  • 39. 39 4. Model Tweak 4-1. ResNet Tweaks
  • 40. 40 4. Model Tweak (Baseline) ◎ Model Tweak : Convolution Layer의 Stride, Padding 등을 변경하는 것과 같은 Minor 모델 변경 작업을 의미 ◎ Baseline 모델(ResNet-A)은 Input Stem 영역(7x7 Conv)가 존재하고 이후 4개의 Stage 모듈을 지나 Output 레이어로 구성됨
  • 41. 41 4. Model Tweak (Baseline) ◎ Model Tweak : Convolution Layer의 Stride, Padding 등을 변경하는 것과 같은 Minor 모델 변경 작업을 의미 ◎ Stem 영역에서는 이미지의 크기를 4배 줄이고 채널을 64개로 늘림 (7x7 by 2 Conv to 64 channel + 3x3 by 2 Max Pool) ◎ 2~4 Stage 에서는 아래와 같은 Block을 통과하는데, Residual Connection과 Bottle Neck Block 이라고 불리는 Down Sampling 구조를 사용함 (Bottle Neck은 Network In Network , GoogLeNet의 Inception과 비슷한 컨셉의 구조)
  • 43. 43 4. Model Tweak (ResNet Tweaks) ◎ 4-1. ResNet Tweaks : ResNet-B - Torch 버전으로 처음 등장했으며, 다양한 곳에서 ResNet 구현체로 사용되고 있음 (e.g. TF Official ResNet) - Down Sampling Block (Bottle Neck)이 변경 되었음 - Baseline(ResNet-A)의 Path A에서는 정보 손실 량이 많은데, Stride가 2인 1x1 Conv를 사용했기 때문 - ResNet-B는 3x3 Conv에서 Stride를 2로 줘서 Width, Height를 줄이고, 1x1 Conv는 정말 Channel Size만 변경하는 용도로 사용 ResNet-A ResNet-B
  • 44. 44 4. Model Tweak (ResNet Tweaks) ◎ 4-1. ResNet Tweaks : ResNet-C - Inception-V2 에서 5x5 Conv와 3x3 Conv 레이어를 두 번 거치는 것이 동일한 Receptive Field를 가지지만 후자가 Computation이 적기 때문 에 작은 사이즈의 Kernel을 여러 번 사용하는 것이 좋다고 설명한 것에서 영감을 얻어서 ResNet의 7x7 Stem 영역을 수정한 모델 - 이미 SENet, PSPNet, DeepLab-V3, ShuffleNet-V2 등에서 사용 중인 Tweak임 - Stem영역의 7x7 Conv를 여러 개의 3x3 Conv로 분리함. 7x7=49 vs 3x3x3=27으로 훨씬 적은 Computation만으로 기존과 동일하게 출력할 수 있음 (64 Channel + 4배 작은 Input Image) ResNet-A ResNet-C 5x5=25 vs 3x3x2=18 작은 kernel이 더 좋음
  • 45. 45 4. Model Tweak (ResNet Tweaks) New Tweak for ResNet that proposed by this paper : ResNet-D
  • 46. 46 ◎ 4-1. ResNet Tweaks : ResNet-D - ResNet-B에서 영감을 얻은 Tweak으로 Path B의 정보 손실 량을 최소화하기 위해 도입함 - Path B의 1x1 Conv가 Stride를 2로 설정하여 정보의 ¾가 유실됨. - 실험을 통해 앞에 Stride가 2인 2x2 Average Pooling 레이어를 추가하고 1x1 Conv는 Stride를 1로 변경 - 약간의 연산 량만 증가하고 더 좋은 결과가 얻어지는 것이 확인 됨 4. Model Tweak (ResNet Tweaks) ResNet-B ResNet-D
  • 48. 48 4-2. Experiment Result : Top-1 Accuracy 약 1.0%↑ ◎ ResNet-A → ResNet-B : Path A의 Stride 2를 3x3 Conv로 옮김 : 0.5 % 성능 증가 ◎ ResNet-B → ResNet-C : Stem 영역의 7x7 Conv를 여러 개의 3x3 Conv로 나눔 : 0.2% 성능 증가 ◎ ResNet-A → ResNet-B : Path B의 Stride 2를 2x2 Average Pooling으로 옮김 : 0.3 % 성능 증가 4. Model Tweak (ResNet Tweaks)
  • 49. 49 5. Training Refinements 5-1. Cosine Learning Rate Decay 5-2. Label Smoothing 5-3. Knowledge Distillation 5-4. Mixup Training
  • 51. 51 5. Training Refinements (Cosine Learning Rate Decay = Cosine Annealing) ◎ Learning Rate Decay : mini batch 마다 다른 분포를 가지는데 동일한 learning rate로 경사를 내려가면 최소점에 도달하지 못하고 그 주위를 맴돌게 됨. 경사를 타고 내려가면 내려갈 수록 걸음의 크기를 줄여서 내려가야 최소점에 도달할 수 있음 ◎ Learning Rate Decay on Baseline : Step Decay : Baseline은 30, 60, 90번째 epoch에서 learning rate를 떨어뜨림
  • 52. 5-1. Cosine Learning Rate Decay (Cosine Annealing) from 「SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS」 ◎ Step Decay vs Cosine Decay (Cosine Annealing) Cosine Decay는 Step Decay와 다르게 부드럽게 Learning Rate를 감소시키다가 급격하게 Learning Rate를 감소시키고 일정 주기마다 다시 최고점 으로 돌아오는 (Restart) 구조를 갖고 있음. 52 5. Training Refinements (Cosine Learning Rate Decay)
  • 53. 53 5. Training Refinements (Cosine Learning Rate Decay) 5-1. Cosine Learning Rate Decay (Cosine Annealing) from 「SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS」 ◎ Cosine Decay (Cosine Annealing) 본 논문에서는 Restart는 사용하지 않고 처음부터 끝까지 천천히 Cosine 그래프를 따라 Learning Rate를 감소시키는 방식을 사용하였고 이를 적용 하여 성능이 증가하였음. Step Decay의 경우 Epoch에 맞춰서 사람이 지정해야 하는데, 어느 정도 Epoch에 어느 정도의 Learning Rate를 가지게 할지 경험적으로 평가하여 적용할 수 밖에 없음. 그에 비해 Cosine Decay는 Epoch에 맞게 적절한 Learning Rate를 지정해주기 때문에 높은 Accuracy를 얻을 수 있음
  • 55. 55 5. Training Refinements (Label Smoothing) 5-2. Label Smoothing from 「Rethinking the Inception Architecture for Computer Vision」 ◎ Softmax Function (z = 주어진 이미지의 Logit) ◎ Loss Function (L=Negative Cross Entropy, k=클래스의 개수) ◎ Optimal Solution은 다른 값들이 충분히 작을 때 = inf가 되는 것인데, 학습을 진행하면 이 방향으로 흘러가서 결국 과적합으로 이어질 가능 성이 있다고 주장. 즉, 출력된 클래스 간의 차이가 커야 정답으로 인정하게 되는 것인데, 이렇게 학습되면 모델이 해당 클래스가 정답일 것이라고 너무 확신하게 설계된다는 문제가 있음
  • 56. 56 5. Training Refinements (Label Smoothing) 5-2. Label Smoothing from 「Rethinking the Inception Architecture for Computer Vision」 ◎ Inception V2를 학습시키기 위해 제안된 Label Smoothing은 True Probability를 아래와 같이 바꾸는 것 ◎ Smoothed Label의 Logit을 구하면 다음과 같음. 만약 epsilon이 0이면 정답과 오답 사이의 Logit 무한대로 수렴하고, epsilon을 높이면 정답과 오답 사이의 Logit이 줄어듦. Empirical하게 실험해본 결과 K=1000 (ImageNet), epsilon=0.1 인 경우, Logit간의 Gap이 9.1정도로 수렴하는 것을 확인하였음. 이는 모델을 Generalize 하는 효과를 가지고, 실제로 분류 성능이 향상되었음
  • 58. 58 5. Training Refinements (Knowledge Distillation) 5-3. Knowledge Distillation from 「Distilling the Knowledge in a Neural Network」 ◎ 이미 학습된 기존의 거대한 Teacher Neural Network(ResNet-152)가 가지고 있는 Knowledge를 또 다른 작은 Student Neural Network(ResNet-50)에 효율적으로 전달할 수 있는 Knowledge Distillation 기법을 연구 ◎ Softmax는 이러한 Knowledge를 보유하고 있음. 고양이와 비슷하게 생긴 강아지를 보고 고양이일 가능성이 10%는 있다는 Knowledge를 내포
  • 59. 59 5. Training Refinements (Knowledge Distillation) 5-2. Knowledge Distillation from 「Distilling the Knowledge in a Neural Network」 ◎ Loss Function (z=student, r=teacher, T=hyper parameter, T는 출력을 더욱 Soft하게 바꿈) 기존의 정답(p)와 예측(softmax(z))의 Loss 뿐만 아니라, Teacher(ResNet-152의 예측)과 Student(ResNet-50의 예측)의 Loss Term을 추가함
  • 61. 61 5. Training Refinements (Mixup Training) 5-4. Mixup Training from 「mixup: BEYOND EMPIRICAL RISK MINIMIZATION」 ◎ Data Augmentation 기법으로 두 이미지와 Label을 각각 Weighted Linear Interpolation 하여 새로운 이미지 데이터를 만들어 내는 기법 λ ∈ [0, 1]는 Beta 분포에서 랜덤으로 뽑혀져 나온 상수이고 이렇게 만들어진 Image를 Training에 활용함
  • 63. 63 5. Training Refinements (Experiment Results) 5-5. Experiment Results (Top-1 Accuracy 약 2.0%↑) - Cosine Learning Rate Decay 적용 - Label Smoothing 적용 (epsilon = 0.1) - Distillation 적용 (T=20, Teacher = ResNet-D-152 with Cosine Decay, Label Smoothing) - Mixup 적용 (Beta 분포의 파라미터 alpha = 0.2, Epoch을 120 → 200으로 변경) ◎ Distillation의 경우 ResNet에서는 잘 작동했으나, 다른 Network에서는 오히려 성능이 감소했음
  • 64. 64 5. Training Refinements (Experiment Results) 5-5. Experiment Results (Other Dataset) ◎ ImageNet이 아닌 Place-365 데이터셋에도 적용해 봄
  • 66. 66 6. Transfer Learning ◎ 지금까지 살펴본 내용들이 Transfer Learning에도 적용가능한지 살펴봄 ◎ 특히 Object Detection(VGG19 Backbone) 과 Semantic Segmentation(FCN) 문제에 적용하여 실험 ◎ 실험 결과 적용하기 전에 비해 성능이 증가한 것을 확인할 수 있음 ◎ Semantic Segmentation의 경우 Label Smoothing, Mixup 등은 오히려 성능을 감소 시켰음
  • 67. 67 Reference - Revisiting Small Batch Training for Deep Neural Networks - On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima - Accurate, large minibatch SGD: Training Imagenet in 1 Hour - Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes - Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes - Mixed Precision Training - Deep Residual Learning for Image Recognition - Rethinking the inception architecture for computer vision - SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS - Distilling the Knowledge in a Neural Network - mixup: BEYOND EMPIRICAL RISK MINIMIZATION