뉴럴네트워크 Harder, Better, Faster, Stronger 학습하기…

daewoo kim
12 min readAug 15, 2021

--

공부도 공부하는 방법에 따라 성적이 달라지듯, 뉴럴 네트워크도 공부하는 방법에 따라 그 성능은 천지차이가 된다…

1. Harder & Faster Training

뉴럴 네트워크 모델을 빠르게 학습하는 일반적인 방법은 large-batch를 사용한 training과 low-precision을 활용한 training으로 구분할 수있다.

1.1 분산 Multi-GPU 학습

뉴럴 네트워크의 학습 속도는 batch size와 관계가 크다. 즉 batch size가 클수록 단위시간당 처리할 수 있는 데이터셋의 크기가 증가하므로 학습 속도 또한 더 증가한다. 따라서 일반적으로 큰 batch size를 돌리기 위해 Data Parallelism을 이용하여 Multi-GPU에서 분산처리를 수행한다.

예를들어 batch size가 256이라면 GPU 8대에 분산처리하게 되면 GPU 1대당 mini-batch size는 32이며, GPU 개수를 늘릴수록 더 큰 batch size를 돌릴 수 있게 된다.

1.2 Mixed Precision Training 학습

Mixed Precision Training은 모델 학습시 FP32 연산대신 FP16을 활용하여 학습 속도를 증가시키는 방법이다. GPU V100의 경우, FP32의 성능이 15.7 Tflops인 반면 TensorCore로 실행하는 FP16의 성능은 125 Tflops으로 FP16가 8배가 더 빠른 점을 활용한다.

FP16를 활용 시 FP16가 표현할 수 있는 범위의 제약이 있어 오차 누적에 따른 학습 시 Loss가 증가하는 문제가 있으나 Scaling Factor를 곱하여 FP16이 표현할 수 있는 범위로 값을 shift하여 해결할 수 있다.

Mixed Precision Training은 HW 교체나 뉴럴네트워크 구조 수정이 필요없어 효과적으로 학습 속도를 증가시키는 방법이다.

2. Better & Stronger Training

모델의 정확도를 높이는 방법은 뉴럴네트워크의 아키텍처를 수정하는 것 뿐만이 아니라 어떻게 학습하느냐에 따라 모델 정확도의 개선을 이룰 수 있다.

2.1 Linear Scaling Learning

앞서 Harder & Faster Training 중 large batch로 학습 시 gradient의 variance를 줄여(Smoother Gradient) 같은 epoch 수에서 매우 큰 batch size로 학습한 모델은 더 작은 배치 사이즈로 학습 모델에 비해 validation accuracy가 더 나빠지는 문제점이 있다.

Large batch training의 문제점을 경감하기 위한 trick 중에 하나는 “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour” 논문에서 소개하는 것과 같이 large mini-batch가 갖는 평균 효과를 보상하기 위해 lr를 선형적으로 scale하는 방법이 있다.

예를들어 GPU 4대로 분산학습하여 batch size가 4배가 될 경우 lr을 4배한다. 즉 batch size=256, initial lr=0.1일 경우, batch size를 1024로 늘리려면 initial lr=0.4와 같이 batch size의 증가에 따라 선형적으로 lr을 증가시켜 주는 방법이다.

2.2 Learning Rate Warmup

이 방법 또한 “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”에서 제안한 방법이다. 일반적으로 lr가 너무 높으면 빠르게 학습할 수 있지만 학습 최적화에 어려움이 있고 lr가 너무 낮을 경우 최적 학습이 가능하나 학습 속도가 너무 느린 문제점이 있다.

따라서 일반적인 lr 전략은 시작할 때는 상대적으로 큰 lr으로 시작하고 시간이 갈수록 lr을 decay하는 learning rate decay를 사용한다.

학습 초반에는 모든 파라미터가 랜덤값으로 초기화된 상태이므로 너무 큰 lr을 사용하게 되면 수치적으로 매우 불안정한 상태로 빠질 수 있다. 이때 사용하는 방법이 learning rate warm-up 전략을 사용한다.

Learning rate warm-up의 전략은 시작 시 매우 작은 lr로 시작하여 초기 lr 값에 도달하도록 하는 것으로 weight가 안정화될 때까지 정말 작은 lr값으로 학습을 수행하면 초기 학습이 안정적으로 수행된다라고 한다. 보통 5 epoch까지 warm-up을 적용한다. Learning rate warm-up은 배치 사이즈와 GPU 개수와 관계 없이 모델 학습 시 더 강하게 안정화를 돕는다.

2.3 Mixup: Beyond Empirical Risk Minimization

Mixup 기법은 Mixup은 입력 샘플을 랜덤하게 섞는 매우 직관적인 데이터 증강 기술로 Overfitting을 줄이고 적대적인 예제에 모델 민감도를 줄인다.

Mixup 기법은 두 샘플 이미지를 랜덤하게 표본 추출하고 weighted average를 계산하여 새로운 샘플 이미지와 label을 생성한다. 아래는 다람쥐와 새를 Mixup한 결과를 보여준다.

2.4 Label Smoothing

전형적인 classification 데이터셋에서 label은 one-hot 벡터로 구성되어 있다.(true만 1, 나머지는 모두 0). 하지만 모델 끝에 softmax 함수는 결코 one-hot vector를 출력하지 않으므로 ground truth labels과 모델 예측의 분포간 차이를 생성한다.

Label smoothing은 그 차이를 shrink하여 true 라벨로 부터 입실론을 빼고, 그 입실론을 다른 라벨에 더하는 방법으로 모델이 너무 당연한 것(“too sure”)을 방지하고, Regularizer로 동작하는 것이다.

입실론 값이 너무 크면 Label을 지나치게 평평하게 만드므로 label smoothing이 더 강할수록, 레이블링 유지하는 정보가 더 줄어든다는 것을 주의해야 한다.

2.5 Deep Double Descent

일반적으로 테스트 데이터셋의 모델 에러는 학습 데이터셋의 모델 에러보다 더 높다. 이 차이를 generalization gap이라고 부르는데 이는 overfitting으로 설명할 수 있는데 overfitting이 시작되기 시작하면 generalization 능력을 잃어버리고 학습 데이터셋에 샘플을 기억하기 시작하기 때문이다.

이때 모델 사이즈를 증가시키는 것은 overfitting을 가중시키는데 어떠한 포인트 이상이 되면 모델 사이즈가 증가할수록 Test/Train Error ratio가 증가한다. 하지만 여러 연구자들이 모델 사이즈가 커지면 Test/Train Error ratio가 증가하다가 어떠한 포인트부터 다시 감소하는 것을 발견하였다.

이와 같은 모델의 Test/Train Error ratio 변화는 bias-variance trade-off의 전통적인 개념과 모순되어 보인다. (그럼에도 불구하고 모델이 overfitting한다면 모델 사이즈를 shrink하는 것은 좋은 아이디어이다.)

아래 그림과 같이 모델 사이즈가 critical regime을 지나면, generalization gap이 다시 개선되기 시작하는데 이 현상은 모델 사이즈 뿐만이 아니라 training epoch에 의해서도 영향을 받는다고 한다.

Deep Double Descent는 데이터가 많을 경우 뉴럴 네트워크를 최대한 크게하고 오랫동안 학습시키는 편이 성능을 높이는데 효율적이라는 것을 의미한다.

2.6 Early Stopping

학습 시 validation 에러가 증가하면 overfitting이 시작되므로 학습을 정지하는 방법이다.

그러나 어떠한 지점에서 학습 프로세스가 overfitting과 반대로 가는 지점으로 진입하는 경우가 발생하기도 한다. Reconciling modern machine learning practice and the bias-variance trade-off 논문의 저자들은 왜 이와 같은 현상이 벌어지는 이유를 설명하기도 한다.

2.7 Transfer Learning

맨땅에서 학습하는 대신 다른 모델로 부터 온 weight를 전이하는 것으로 모델 학습을 시작하는 방법이다.

레퍼런스

[1] Introduction to Mixed Precision Training

https://nvlabs.github.io/iccv2019-mixed-precision-tutorial/files/dusan_stosic_intro_to_mixed_precision_training.pdf

[2] Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour

[3] Keras learning rate schedules and decay

[4] Bag of tricks for image classification

[5] Model Selection, Underfitting and Overfitting

[6] Deep Learning Tips and Tricks cheatsheet

[7] Bag of Tricks for Image Classification with Convolutional Neural Networks

[8] Reconciling modern machine learning practice and the bias-variance trade-off

[9] Transfer Learning Guide: A Practical Tutorial With Examples for Images and Text in Keras

--

--

daewoo kim
daewoo kim

Written by daewoo kim

AI developer & Author | Working@semiconductor-industry. I write and share about what I learn.

No responses yet