논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Revisiting ResNets: Improved Training and Scaling Strategies

Problem

기존의 연구들을 성능을 높이기 위해 모델의 구조에 대해 집중하는 경향이 있었다. 하지만 모델 구조 외에도 학습 방법론이나 하이퍼 파라미터을 어떻게 사용하였는지에 대한 변화 또한 성능에 큰 영향을 끼친다. 더군다나 새로 제안되는 모델 구조의 성능을 비교할 때 기존의 최적화되지 않은 학습 방법론과 잘못 비교되기도 한다.

Essence

먼저, 학습 방법론 측면에서는 기존의 ResNet에서 학습 방법론만 변경하는 것만으로 3.2%의 정확도가 증가하였다.

또한 논문에서는 모델 구조를 scaling 하는 새로운 관점 또한 제안한다. 여러 scale에 대해 학습을 완전히하여 조사한 결과, 최상의 성능은 학습 환경 (epoch, 모델 크기, dataset 크기)과 깊은 연관성이 있다는 것을 발견하였다. 하나라도 놓친다면 sub-optimal scaling decision을 내리게 될 수 있다. 결과를 분석하였을 때 (1) 모델의 depth scaling은 overfitting을 유발할 수 있고 (2) 이미지의 해상도는 좀 더 느리게 늘려야 한다로 정리할 수 있다.

이러한 내용들을 이용하여 ResNets의 rescaled된 버전인 ResNet-RS를 제안하였다. 이는 기존의 EfficientNet보다 더 낮은 메모리를 사용하면서도 더 빠르며 좋은 성능 보인다. 또한 제안하는 방법의 generality를 실험하기 위해 EfficientNet-RS를 디자인하여 검증하였다.

Detail

Training Methods

학습 방법론은기존의 EfficientNet의 연구를 기초로 하였고 350 epochs 동안 학습시켰다. 변경된 점은 다음과 같다.

Cosine learning rate scheduling을 이용하였고, augmentation을 위해 RandAugment를 사용하였다. 마지막으로 RMSProp 대신 momentum optimizer를 사용하였다.

Regularization을 위해서는 weight decay와 label smoothing, dropout, stochastic depth를 적용하엿다.

하이퍼 파라미터는 training set의 2%를 minival-set으로 정하여 이를 이용 적절한 값을 결정하였다.

Improved Training Methods

기존 ResNet-200에서의 ImageNet top-1 accuracy 79.0%를 baseline으로 정하였다. 여기서 어떠한 모델 변경도 없이 학습 방법만 변경하여 82.2%의 성능을 얻을 수 있었다. 여기에 Squeeze-and-Excitation과 ResNet-D의 간단한 모델 변경을 적용하면 83.4%으로 성능 향상이 되었다.

Weight decay에 대해서는, RandAugment와 label smoothing이 적용될 때에는 기본 값은 1e-4를 그대로 사용하여도 되었으나 dropout과 stochastic depth를 적용하면 weight decay 또한 낮춰야 하였다. 이는 weight decay가 regularizer로 작동하게 되는데, 위와 같은 방법들이 동시에 적용될 경우 너무 과하게 regularize되지 않도록 값을 낮춰줘야했던 것으로 생각된다.

Improved Scaling Strategies

Scaling에 대한 정보를 얻기 위해 width는 [0.25, 0.5, 1.0, 1.5, 2.0], depth는 [26, 50, 101, 200, 300, 350, 400], resolution [128, 160, 224, 320, 448]의 경우에 대하여 실험을 결과를 토대로 분석하였다.

FLOPs do not accurately predict performance in the bounded data regime

작은 모델에서는 scaling configuration에 크게 영향을 받지 않고 FLOPs가 늘어남에 따라 error가 줄어드는 모습을 보였다. 하지만 이러한 경향은 큰 모델을 사용할 경우 깨지게 되며, 같은 FLOP를 가지는 모델들 사이에서도 큰 성능 차이를 보이게 된다. 따라서 scaling configuration에 따라 성능에 큰 영향이 있다고 생각할 수 있다.

The best performing scaling strategy depends on the training regime

FLOP 대신 latency와 scaling strategy 간의 관계를 조사해보았다. 성능에 큰 영향을 끼치는 것은 scale depth와 width, 그리고 training 환경에도 큰 영향이 있었다.

Depth scaling outperforms width scaling for longer epoch regimes

350 epoch까지 학습을 한 환경에서 depth scaling이 다른 scaling보다 가장 효과가 좋았다. Width scaling은 regularization을 높여도 overfitting되어 성능이 하락하는 경우도 있었다. 이는 width scaling인 경우 파라미터의 수가 더 크게 증가하기 때문인 것으로 보인다.

Width scaling outperform depth scaling for shorter epoch regimes

10 epochs만 학습하는 경우 width scaling이 다른 것들보다 더 효과가 좋았다. 100 epoch 에서는 width나 depth scaling에서는 image resolution에 따라 다른 양상을 보였다. 이는 곧 extrapolating scaling rule를 이용한 scaling strategy를 사용할 때 잘못 선택할 위험이 있음을 알 수 있다.

Slow Image Resolution Scaling

큰 이미지 해상도에 대한 효과는 점점 약해지기 때문에 이미지 해상도를 올리는 것은 천천히 올리는 것이 좋다고 생각하였다.

Extrapolating scaling strategies from small-scale regimes

작은 환경에서 찾은 scaling strategies을 큰 모델에 적용하는 것은 일반화되지 않을 수 있기 때문에 작은 환경에서 scaling rule을 생성하지 않는 것을 추천한다.

Extrapolating scaling strategies from a single and potentially sub-optimal initial architecture

모델 구조 또한 sub-optimal에서 생성된 scaling strategy는 skew된 scaling result를 만들어 낼 수 있다. 예를 들어 EfficientNet-B0에서 정해진 FLOPS와 특정 이미지 해상도로 생성된 scaling rule은, 이미지 해상도 또한 그 FLOPS 수준 내에서 sub-optimal이기 때문에 그것으로부토 유도된 scaling strategy 또한 sub-optimal일 것이다.


Add a Comment Trackback