HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

딥러닝을 위한/SOTA(State-of-the-Art)

[딥러닝 논문 리뷰] BiT(Big Transfer) - 2019

KM-Hana 2021. 1. 22. 02:32

Google Brain팀에서 발표한

Big Transfer (Bit) : General Visual Representation Learning 논문에 대해서 소개하고자 합니다.

 


종합 : ⭐⭐⭐

1. 논문 중요도 : 4점

2. 실용성 : 3점

설명 : Transfer Learning에 인사이트를 줌

   - 대용량 데이터를 사전학습 할 때와 그 모델을 Fine-tuning할때에 대한 고찰

   - Transfer Learning에 좋은 참고가 될 수 있다

   - 단, Google 전용 데이터를 사용했으며, 엄청난 자원이 필요하다는 점은 큰 단점이다.

Big Transfer (BiT) 의의

1. '어떻게 해야 Transfer Learning을 잘 할 수 있을까?'에 대한 Insight를 얻을 수 있다.

2. 게다가, imagenet에서, 2019년도에 1등을 기록했기 때문에 읽어볼 가치가 높다.

[Imagenet에서의 우수한 성능]

 

 

 

Transfer Learning의 목적

'잘 만든 Pre-Trained(사전 학습) 모델하나, 여러 모델 안부럽다!'입니다.

 

사전학습만 잘 해두면, 여러 DownStream Task에 활용할 수 있기 때문입니다.

 

BiT 요약

BiT는 두 가지 관점(Upstream, Down Stream)으로 나누어서 논문을 진행하고 있습니다.

 

1. Upstream Pre-Training

 

   1) 데이터 수, 모델의 크기, 계산량(Training time)간의 연관성을 파악

 

   2) Group Normalization(GP) + Weight Standardization(WS)의 중요성 

 

      - Small, Big Batch size 모두에서 좋은 성능을 보인다. (Batch size에 중요성에 대해서 이야기 해주고 있다.)

 

      - 기존의 Batch Normalization은 안정적인 학습에 도움이 되었으나,

         But, 1. 분산처리하는 GPU 장치간의 효율성이 저하

               2. Transfer에 안 좋은 영향( ∵ BN은 통계량을 업데이트 하므로) 

 

 

2. Transfer to Dowstream 

 

   1) One Hyper-parameter Search - 휴리스틱 Rule(저자는 이것을 BiT-HyperRule라고 명칭)

      - Transfer를 진행할 때 필요한 fine-tuning 시에 필요한 Hyper-Paramter를 줄여서,

        간편하게 Downstream Task를 해결하고자 했다.

      - Hyper-parameter 휴리스틱하게 결정했지만, Transfer 실용시에 많은 참고가 될수 있을 거 같다.

      - 이미지 해상도와 데이터셋 크기를 통해, 학습 스케줄과 Mixup 사용여부를 결정한다.

 

   2) Task 마다의 Data Augmentation이 다름 

      - 예 : object orientationr Task 같은경우 Flip이나 Crop이 악영향을 줌

 

   3) Training과 Test에서 발생되는 해상도 차이 해결

      - Fine-Tuning 단계에서 해결

 

   4) Transfer 진행 시, weight decay나 Dropout 같은 Regularization  사용 X

      - 매우 큰 모델 + 매우 작은 데이터의 Downstream Task에서도, 저런 Regularization을 사용하지 않아도 좋은 성능

 

 

 

HyperRule 및 모델구성 설명

BiT가 제안한 HyperRule이 사실 이 논문에 핵심입니다.

 

1. Upstream Pre-Training

   - 모델 Architecture: ResNet-v2 

 

   - 모델 크기(디폴트) : ResNet 152x4d

 

   - Optimizer : SGD with momentum ( Lr = 0.03, m = 0.9)  

                    * Adaptive 계열을 써도 더 좋은 성능계선은 없었다.

 

   - 학습 데이터 : BiT-S - 130만 장( ILSVRC-2012) / BiT-M - 1400만 장(ImageNet-21k) /

                       BiT-L - 3억 장( JFT)

 

※ JFT dataset : 여기서 부터 자본주의의 중요성이 나온다. 구글이 만든 dataset이고 오픈되지 않았다.

                    개인적인 견해로, 형평성 관점에서 SOTA에서 JFT dataset 사용 여부를 분리하는게 좋을것같다.

                    Google 팀에서, JFT dataset을 활용하여, 엄청난 성과를 보이고 있다.

 

    - 이미지 크기 : 224x224

 

    - Train Schedule : BiT-S와 BiT-M - 90 epochs(30,60, 80에서 Lr decay 10)

                            BiT-L - 40 epochs(10, 23, 30, 37에서 Lr decay 10)

 

    - Warm-up : 5000 steps (매 스탭마다 batch size / 256 씩 곱한다.)

※ Warm-up은 요즘 CNN에서 필수 덕목처럼 보인다. 

 

    - Batch Size : 4096 - 엄청난 숫자이며.. 사용한 TPU는 512 장 (chip 당 8 이미지 학습)

※ 실무의 입장에서, 함부로 사용할 수 없는 자원 규모이다.

 

    - weight decay : 0.0001 ( Transfer learning에서는 사용하지 않는다)

 

 

2. Downstream Fine-Tuning

* 기준 : 2만 장 - Small task / 50만 장 미만 - Medium task /  50만 장 이상 - Large task라고 정의

 

    - Optimizer : SGD with momentum ( Lr = 0.003, m = 0.9)  → 사전 학습보다 0.1 낮음

 

    - Batch Size : 512

 

    - 이미지 크기 : 96x96↓ ▶ 160x160변환  128 crop

                        448x448↑ ▶ 384 crop

 

    - Fine-Tuning Schedule : 공통 - 30, 60, 90%에서 Lr decay (10 factor)

                                     S task - 500 steps (최소 약 12.8 epoch) 

                                     M task - 1만 steps (최소 약 10.2 epoch)

                                     L task - 2만 steps (최대 20.5 epoch)

 

    - Mixup 유무 : M과 L task에서만 Mixup 사용(alpha = 0.1)

 

실험 세팅은 참고정도만 하자!

 

더보기
[휴리스틱 Rule을 정하기 위한, 실험 Hyperparamter]

* 위에의 실험세팅을 통해, HyperRule을 제안했다.

 

BiT 결과 

결과는 매우 뛰어났다!

덜 중요한 결과그림은 본 리뷰에서 더보기 처리하거나 생략하고자한다.(당연히 좋다고 할테니)

 

   1. Transfer 결과 매우 적은 데이터만으로도 엄청난 성능을 보였다.

 

   2. Semi-Supervised Learning 보다 더 좋은 성능

더보기
[BIT - Transfer 성능 그림]

   3. Classification 뿐만아니라 여러 Task(Object Detection 등)에서도 좋은 성능을 보임

 

BiT 결과 분석 

1) 사전학습시, 데이터 증가의 효가는 뛰어나다.

[Model Capacity와 Dataset 사이즈의 관계]

* X축 : Upstream 데이터 사이즈 / Y축 : 정확도  / 원의 크기 : Capacity

 

   1. 작은데이터를 쓰는데, 큰 모델을 사용하면 역효과가 날 수 있다.( ILSVRC-2012 dataset은 이제 작은 데이터 셋..)

 

   2. 작은 모델을 쓰는데, 큰 데이터 셋도 좋지 않다.( ResNet-50x1은 작은 모델..)

 

   3. 큰 데이터 + 큰 모델을 사용 →  Downstream에서도 뛰어난 성능을 보인다.

더보기
[사전학습 시, 데이터 증가의 효과]

 

2) 큰 데이터를 학습 시키기 위해선, 큰 학습 자원이 필요하다

 

   1. 큰 데이터를 학습키 위해선, 더 긴 시간 학습 해야한다. ← 그렇지 않다면, 오히려 성능이 저하된다.

 

   2. 학습시, 주(Week) 단위에서는 성능향상이 되지 않는것 처럼 보이지만, 개월(Month)단위로 보면 증가 중이다.

 

   3. 높은 Weight Decay 학습 시 : 더 빠르게 수렴하나, 최종적으로 더 낮은 성능으로 수렴 

      낮은 Weight Decay 학습 시 : 수렴은 느리나, 최종적으로 더 좋은 성능으로 수렴

 

3) Large Batches, Group Normalization, Weight Standardization

 

   1. 모델의 Capacity가 커서, 하나의 GPU chip당 작은 Mini-Batch가 할당 되어 BN의 단점이 부각됨

 

   2. Group Normalization와 Weight Standardization를 같이 썼을 때, Up/Downstream에서 좋은 성능

더보기
[GN + WS의 효과]

* Table 4 : 사전 학습시 성능

* Table 5 : Transfer시 성능

 

Group Normalization, Weight Standardization에 대해선 간단하게 소개하고자한다.

Group Normalization와 Weight Standardization [https://arxiv.org/abs/1903.10520]

 Group Normalization : Batch Norm의 mini-batch 사이즈가 작아질 수록 성능이 저하되는 단점을 보안

 

 

 Weight Standardization : Mini-batch와 관련없이, Weight 행렬을 표준화

                                     → Optimzation landscape를 Smooth하게 만듬

 

기존의 Batch Nomalization은, internal covariate shift를 줄임으로써 성능향상에 크게 기여한다고 알려져왔다.

covariate shift

하지만, arxiv.org/pdf/1805.11604.pdf 저자는 covariate shift 보다는 Optimzation landscape를 Smooth하게 만들기 때문에, 좋은 효과가 있는 것이라고 설명한다.

 

https://www.jeremyjordan.me/nn-learning-rate/

 

Weight standardization에 관한 좀 더 자세한 사항은, Lunit의 blog에서 참고해도 좋다!

 

BiT 총평

 

   1. 엄청난 양의 데이터, 학습자원이 중요하다.

      작은 기업과 글로벌 회사간의 격차는 점점 더 빠른속도로 벌어진다 - 국내 대기업에서도 벅차보인다.

 

   2. 그럼에도, 우리는 Transfer Learning에 대한 Insight를 얻을 수 있다.

       - 필요한 hyperparameter가 무엇인지, 그 조합은 어떻게 구성하는 지 등등..