본문 바로가기
딥러닝

[딥러닝 논문 리뷰] Deep Double Descent : Where Bigger Models And More Data Hurt

by 미스터탁 2020. 2. 5.

이번에 리뷰할 논문은 Deep Double Descent : Where Bigger Models And More Data Hurt 라는 논문으로 2020ICLR에 accept된 논문이며, openAI에서 작성한 논문입니다. 수식은 거의 없고 거의 실험만 가지고 ICLR에 accept된 논문 입니다. 그런데 그 실험의 양이 어마어마합니다;;

 

Bias-variance trade-off 는 통계적인 learning theory의 기본 컨셉이죠. 전통적인 통계분야에서는 '모델이 크면 좋지 않다'라고 주장을 하고 딥러닝은 이러한 인식을 깨는 모델입니다. 일반적으로 '모델이 크면 클수록 좋다'라고 말할 수 있습니다(물론, 복잡한 문제에 대해서 한해서). 그리고 전통적인 통계분야와 딥러닝 분야가 모두 동의하는 것은 '데이터는 많으면 많을 수록 좋다' 입니다.

 

논문의 저자들은 deep learning 모델은 두개의 다른 regime(지역 또는 구간이라고 이해하시면 될것 같습니다)을 가진다 라고 주장합니다. 

 

첫번째가 under-parameterized regime (모델이 underfitting되는 구간) 으로 이구간에서는 classical bias/variance tradeoff 가 일어나고 두번째 구간은 모델이 overfitting되는 구간으로서 다음과 같이 표현하고 있습니다. "zero training error, then increasing complexity only decreases test error, following the modern intuition of “bigger models are better”". 결국에 overfitting되는 구간에서는 모델이 크면 클수록 더 좋다라고 주장을하고 이러한 현상을 'double descent'라고 부릅니다.

 

 

 

논문의 내용을 매우 짧게 요약한다면 다음 그림을 보시면 됩니다.

논문에서는 다음과 같이 표현을 하고 있는데요.

 

“We increase model size, performance first gets worse and then gets better. Moreover, we show that double descent occurs not just as a function of model size, but also as a function of the number of training epochs.”

 

결국에 model size가 커지면 처음엔 나빠지지만 결국에 다시 좋아진다 라는 것이고 이러한 현상을 double descnet라고 부릅니다. 이 현상은 2018년도 Belkin이라는 사람에 의해 처음 제시되었습니다. 그리고 이 현상은 model size 뿐만이 아니라 training epoch에 의해서도 영향을 받는다라고 저자들은 주장합니다.

 

위 그림을 보시면(왼쪽), 가로축이 resnet의 모델크기를 의미하고 새로축은 각각 train/test error를 의미하는데, 모델이 커지면서 training error는 자연스레 0에 가까워지지만, test error는 중간 모델에서 모형의 성능이 떨어지다가 다시 좋아지는 모습을 보입니다. 오른쪽 그림을 보시면 epoch에 의해서도 영향을 받는다 라는 것을 알수 있는데요. 가로축의 맨 우측을 보시면 모델이 가장 무거울 때에는 epoch가 증가함(색상변화)에 따라 test error가 감소한다는 것을 알 수가 있죠. 이는 모델의 크기가 매우 작을(우측그림의 맨 왼쪽부분) 때에도 동일하게 일어납니다. 하지만 중간 모델의 경우 (with parameter=10~20) 오히려 중간 epoch에 test error가 낮고 학습이 계속되면서 test error가 다시 증가하는 모습을 볼수 있습니다. 

 

 

논문의 저자들은 EMC(Training error가 매우 적어지게 하는 표본 수의 최대 값)라는 것을 정의하여 double descent가 EMC의 function이라고 볼 수 있다 라고 주장합니다.

그리고 다음과 같이 가정을 세웁니다.

 

Under-fit 되는 구간 : EMC가 충분히 작다면, test error가 작아질 것이다

Over-fit 되는 구간 : EMC가 충분히 크다면, test error가 작아질 것이다

Critically interval = underfit되는 구간과 overfit되는 구간이 교차되는 지점

 

 

 

여기서 e는 hueristic하게 0.1로 설정, “sufficient smaller or larger”에 대하여 공식적인 수는 없습니다(사실 이부분이 굉장히 많은 사람들이 궁금해 할 것 같지만...).

 

 

실험의 경우에는 CNN과 RNN에 대해서 실험을 하였고 각각의 모델들은 다음과 같이 setting하였습니다.

 

 

ResNet18, standard CNN(4conv-layers)

 - layers of widths [k; 2k; 4k; 8k] 의 k를 변화시키며 실험

 - standard ResNet18, k = 64

 - Adam optimization (learning rate 0.0001, 4K epoch) /  SGD

 

Transformer

 - 6 layer encoder – decoder

 - embedding dimension/FC layer의 dimension을 변화시키며 실험

 - 80K gradient step, 10% label smoothing

 

 

 

Model-Wise Double Descent

아래 그림은 Label noise에 따른 model wise double descent현상을 보인 것입니다. 왼쪽그림은 cifar100, 오른쪽 그림은 cifar10에 대한 train/test error 그래프입니다. Cifar100의 경우에는 noise가 있든 없든 double descent현상이 발생하는 것을 볼 수 있고 noise label이 비율이 커지면 커질수록 현상은 더 심화 되는 것을 볼 수 있습니다. Cifar10의 경우에는 noise label이 없는 경우에는 거의 일어나지 않지만 noise가 추가되면서 double descent현상이 심화되는 것을 볼 수 있습니다. 

 

 

 

아래 그림은 Label noise/Data augmentation에 따른 model wise double descent 현상을 보인 것입니다. Data augmentation을 하든 하지 않든 double decent가 일어나는 모습을 보이지만, augmentation을 수행하면 현상이 완화되는 것을 볼 수 있습니다.

 

 

 

 

아래 그림은 Optimizer에 따른 따른 model wise double descent 현상을 보인 것입니다. Optimizer를 어떤것을 쓰든 double descent는 일어나는 것을 볼 수 있습니다. 

 

아래 그림은 Transformer의 embedding dimension에 따른 model wise double descent 현상을 보인 것입니다. 일반적으로 embedding size가 크면 클수록 모델의 성능이 좋아지지만 (traing loss), test loss를 확인해보면 embedding dimension이 적을 때 더 성능이 좋은 것을 확인 할 수 있습니다. 

 

 

아래 그림은 weight decay 따른 model wise double descent 현상을 보인 것입니다. Weight decay를 하냐 안하느냐와 상관없이 double descent현상은 발생하고 했을 경우에는 현상이 완화 되는 것을 보입니다. 더불어 우측 그림을 보시면 weight decay를 더 강하게 했을때에 현상이 더 완화되는 것을 알 수 있습니다.

 

반응형

 

Epoch-Wise Double Descent

위 그림은 epoch wise double descent 현상을 보인 것입니다. 왼쪽 그림 부터 보시면 작은 모델은 학습함에 따라 test error가 감소하는 것을 볼수 있지만, 큰 모델은(빨간색) 중간에 double desent현상이 생기고, 중간 모델의 경우에는 large 모델 보다 더 뒤에 현상이 발생하는 것을 알 수 있습니다. 우측 그림을 보시면 (보라색에 가까울수록 test error가 낮다라는 것을 의미합니다), small모델을 보시면 우리가 기존에 알던 방식으로 epoch가 증가함에따라(세로축으로 올라감에 따라 ) test error가 낮아지는 것을 볼수 있습니다(색상이 보라색에 가까워짐). 그리고 Large모델의 끝부분을 보시면 학습 초기에 test error가 매우낮아지다가 다시 증가하고 학습 뒷부분으로 갈수록 점차 test error가 다시 감소하는 것을 알수 있습니다. 사실 이부분만 보시면, large모델에 대해서 무한히 학습을 많이 시키면 되겠구나 라고 생각이 들 수 있지만, 문제는 중간 모델입니다. small모델에서 중간 모델로 넘어가는 부분을 보시면 double descent현상이 매우 급격하게 일어나는 것을 볼수 있습니다. 그리고 이러한 현상은 large model로 넘어가면서 점차 완화되는 것을 볼 수 가 있는데, 이에 대한 원인은 아직 알 수 없습니다. 

 

 

 

또한 epoch-wise double descent 현상은 optimizer의 종류/learning rate와는 상관없이 일어난 다는 것을 보였습니다. (정말 엄청나게 많은 실험을 했다라는 것을 알수 있죠....ㄷㄷ)

 

 

Sample-Wise Non-Monotonicity

Double descent는 sample 수(학습 데이터의 수)에도 영향을 받습니다. 아래 그림의 왼쪽그림을 보시면 sample 수가 많으면 현상이 완화 되는 것을 볼수 있지만, 일어나기는 합니다. 그리고 아래 우측 그림을 보시면 Transformer의 데이터의 수가 10k미만일 때 데이터의 수가 증가함에 따라 성능이 small/large 모델 둘다 안좋아지는 것을 볼 수 있습니다. 다만 10k가 넘어가면서 다시 성능이 좋아지는 것을 볼 수 있는데, 특이한건 small model이 더 성능이 좋게 나온다 라는 것입니다.  

 

Transformer의 Embdding dimension과 샘플수에 따른 test loss를 보시면 학습 데이터의 수가 적은 모델이 더 좋은 성능을 내는 구간이 존재한다 라는것을 알 수 있습니다.

 

CNN의 경우 데이터가 많을 때에는 모델의 크기가 적든 크든 도움이 되지만 중간 모델이면 악영향을 끼칩니다. 이는 아래 그림을 통해서도 확인이 가능합니다. 특히 아래 우측 그림을 보시면 샘플 수가 증가함에 따라 중간 모델의 training error가 증가하고 test error는 낮아지지만 오히려 small model보다 성능이 좋지 않은 것을 확인 하실 수 있습니다. 

 

이러한 현상은 DNN에 국한 되서 발생하는 현상이 아닙니다. Random Fourier Feature에 대해서도 실험을 했는데 embedding dimension에 따라 double descent 현상이 발생하는 것을 볼 수 있습니다.

 

아래 표는 모든 실험에 대해 요약한 것입니다. 표를 보시면 label noise가 없는 경우에는 double descent가 잘 일어나지는 않지만, 그렇다고 해서 모든 경우에 일어나지 않는 것은 아닙니다. (처음에는 noise가 없으면 double descent가 잘 일어나지 않으니 상관없네 라고 생각이 들었지만, 그렇다고해서 noise가 꼈을때 double descent현상이 일어나는 것이 직관적으로 이해가 되지는 않습니다. 그리고 우리가 사용하는 대부분의 데이터는 noise가 있을 가능성이 매우 높습니다. 특히 text쪽은 noise data가 매우 많죠.) Noise가 없더라고 double descent는 일어날 수 있고, noise가 끼면 대부분의 경우에서 double descent가 일어난다는 것을 알수 있습니다. 이 Double descent는 noise가 어느정도 꼈다는 가정하에, model/epoch wise double descent가 일어난다고 말 할 수 있으며, weight dacay/optimizer/learning rate와는 상관없이 일어난다 라고 정리 할 수 있습니다. 더불어, Sample수에 따라서도 double descent현상이 다르게 일어난다는 것을 확인 하였습니다. 

 

이 논문을 읽고 들었던 생각은, 결국에 데이터가 많다라는 전제 하에서는 네트워크를 최대한 크게하고 오랫동안 학습시키는게 좋다라는 것이고, 애매한 모델을 활용할 경우에는 오히려 독이 될 수도 있다 라는 것입니다. 사실 데이터의 수가 적고/많음 그리고 모델의 크기가 크고/작음에 대해서는 기준이 없기 때문에 애매하긴 하지만, 위 실험결과를 참고하여 모델링 할 필요가 있을 것 같습니다. 

 

그리고 근본적인 질문을 할 수 있습니다. 그래서 이게 왜 일어나는데..? 

논문의 저자들은 이 질문에 대해서는 답을 해주지는 못합니다. 다만 모델의 크기/데이터의 수/epoch등에 따라 이러한 현상에 다르게 일어날수 있다 라고 이야기 하고 있습니다. 근본적인 물음에 대해서는 해결 해주지 못하지만, 어마어마한 실험양으로 double descent현상에 대해 일반화 시켰다고 할 수 있겠습니다.

반응형

댓글