"Neural Networks Are More Productive Teachers Than Human Raters: Active Mixup for Data-Efficient Knowledge Distillation from a BlackBox Model" (CVPR 2020)
위 논문을 읽어보려고 방금 골랐음. 왕재밌는 논문이다.
arxiv.org/pdf/2003.13960v1.pdf
github에 코드, 모델이 곧 공개된다고 한다. (근데 레포 만든지 9달이나 지났는데...?)
github.com/dwang181/active-mixup
이 논문을 읽으며 주목하여 보려는 점은,
1. 이런 신기한(?) 셋팅에서 시나리오를 어떻게 설정하고 실험을 전개했나?
완전히 정형화된 task를 하는 게 아니라, 정말 practical하게 필요해져서 일반적이지 않은 task를 시작할때 이런 고민을 하게되기 때문이다.
2. 위 과정이 논리적인가?
그래서 처음 목표한 원하는 결과를 충분히 얻었는지, computation이나 성능적인 측면에서도 괜찮았는지 궁금. 말이 거창하고 결과는 단순히 간접적인 암시라든가, 이럴 가능성이 있음을 보여줌! 수준에서 끝날 수도 있으니까. 목표가 어느정도 달성되었나 궁금하다.
Abstract.
이 논문 설정은 다음과 같음.
1. 이미 잘 학습된 blackbox teacher model이 있음. 그런데 우리 모델을 학습할 때 만큼은 data-efficient였으면 한다는 것임.
- teacher와 student가 학습되는 배경이 같은 dataset일수도 있고, 아예 domain이 다를 수도 있다.
이는 논문 뒷부분에 CIFAR10 pretrained teacher로 - CIFAR100 student 학습한 케이스가 있다.
- 처음에 이거 배경 착각을 했는데, student 학습시의 data efficiency이다. teacher는 좋은 모델이라고 가정하는 것 같다.
2. student network를 학습하고자함. knowledge distillation이 목적.
- 궁금한 것. 왜 KD를 쓰는가? KD를 개념만 들어봤기때문에 이걸 도입하는 목적이 뭔지는 잘 모르겠다.
- 대충 알기로는 dark knowledge를 활용하여 distribution을 배우도록 하면 student가 작은 모델에서 잘 배운다는 개념인데, 그러면 여기서의 핵심은 경량화된 모델을 중시하는 시나리오겠지? 준수한 성능을 내지만 작은 모델이어도 동작가능하도록 product으로 써먹을때를 생각해서 그런거라 이해하고 넘어간다.
그러면 대략 생각해보면, 이 모델의 용도는 이렇게 될 것이다.
1) 배포용으로 경량화된 모델을 사용하려고 학습하는 경우. +웬만하면 data-efficient했으면 좋겠다.
2) 추가로, teacher와 student의 domain이 다른 경우의 활용도 있을 것이다. 그런데 이건 실험 결과를 보면 오히려 KD를 하느니만 못한 경우가 있으므로 주의해야할 것으로 보인다.
3) unlabeled data를 사용하여 모델 성능을 끌어올리려고 하는 경우. 이때는 모델 경량화가 목적이 아니다.
- 먼저, 회사의 (적은 양의) labeled dataset을 가지고 teacher를 supervised pretraining.
- 그리고나서 많은 양의 unlabeled data들을 가지고 student를 학습하여 성능을 끌어올리는 데에 쓸 수 있다고 생각한다.
이 관점에서 봤을 때 아쉬운점은, 실험 Table1의 teacher보다 성능이 높아야 의미가 있다는거다. 그런데 arxiv.org/pdf/1905.08114.pdf 여기서 논문 셋팅을 확인해보면, student 모델이 더 작았기때문에 떨어질 수 밖에 없다는거다. (예를 들어 teacher가 AlexNet이면, student는 AlexNet-half이다.) 동일 모델에서도 실험한 결과가 있었다면 얼마나 가능성이 있는지 알 수 있을텐데 아쉽다.
active learning이 들어가있기 때문에, random sample vs AL method 성능비교만 할 게 아니라 데이터 다 써서 풀로 트레이닝한거랑의 gap도 얼마나 차이있는지가 궁금하다. 저 파이프라인 다 밟는 시간 고려하면 그냥 데이터를 더 달라고 요청한 다음에, 그 시간에 다른 방법으로 모델 성능개선하는게 더 효율적일수 있기 때문이다. 물론 액티브러닝이 어떻게 들어있는지에 따라 이 생각이 달라지겠지만...?
==> (다 읽은 후) : upper bound가 궁금했던건데 이건 일반 KD성능을 통해 알 수 있었다.
Intro.
논문에서 제시한 방법은 mixup과 active learning을 함께 사용한다는 점.
* mixup : original image의 (train data) convex hull에서 unlabeled image를 합성하는 기법. 두개의 이미지를 가지고 convex combination을 한다. 그렇게 만들어진게 시맨틱하게 의미 없을 수도 있음. 하지만 그래서 nature image들을 잘 포괄할 수 있다는 것 같음 (이 논문피셜. 원논문 안봄)
* AL : hard-example를 잘 뽑아서 쿼리를 날려 레이블을 얻은 후 데이터셋에 추가하자.
이 논문에서는 mixup을 도입하면 많은 이미지들을 생성해낼 수 있는데, 이걸가지고 teacher-student가 비슷한 결과를 내도록 KD를 한다는 아이디어. 우와!
그런데 쿼리를 모든 이미지에 대해서 다 할게 아니라, AL을 도입.
Procedures (Summary)
1. (그리 많지는 않은 양의) original image data (unlabeled)들을 준비한다.
이걸로 student를 학습시킬거임. teacher의 soft-label을 사용하여 학습한다.
2. 그 다음 mixup augmentation을 적용해서 이것저것 생성하고, student의 입장에서 가장 uncertain한 데이터(augmented)가 무엇인지 뽑음. (Active Learning)
3. 그 데이터들의 teacher에게 레이블을 요청한 후 이를 dataset에 합쳐서 student를 학습시킴. (말은 레이블을 요청한다고 써놨는데, teacher에게 요청한다는 말을 봐서는 GT로 teacher inference 결과를 취급함을 말하는 듯.)
4. 이를 여러번 반복. 다시 말해, augmented data에 대한 레이블은 teacher가 제공, student는 KD를 통해 그걸 반복적으로 배운다. augmentation & KD 여러번 트레이닝하는 것.
(음, 우리 비디오에 쓰려면 mixup 말고 다른 좋은 augmentation 기법이 뭐가 있는지 다시 고민해봐야겠다.)
-
역시나 논문 처음에서 느꼈던 것 처럼, data-efficiency와 query-efficiency를 모두 추구하며 이런 파이프라인을 제시한 것이 이 논문이 최초이다. 심지어 이러한 방법이 few/zero shot KD보다도 좋았음을 말한다. 저 방법들은 whitebox KD임에도 불구하고. (뭐, 중간단계 레이어에서 feature representation을 활용하는 그런 방법들이었겠지?)
이제 디테일이 궁금하다.
그 '학습'을 정확하게 어떻게 시키는가? 뭐 soft label가지고 CE loss같은거 써서 하나? 이런 의문이 듦. (뒤에 읽어보니 맞음)
Related Works를 30초만 살펴보고 넘어가자.
Related Works
1. (당연히) KD.
2. Blackbox Optimization
3. Active Learning.
4. MixUp
AL은 해봤고 나머지도 아예 모르는건 없으니 매우 궁금한 메서드를 보러가자.
Method.
Given: blackbox teacher / small number of unlabeled data.
MixUp 설명은 아래 이걸로 퉁치면 될듯.
AL scenario는 앞서 말한 것 처럼, student 입장에서 가장 confident하지 않은걸 고름. 랭킹 매겨서.
여기서 당연히 따라오는 궁금증은,
- uncertainty 측정 방법은?
람다값 0.3~0.7에서 0.04씩 인터벌 두고 계산한다고 실험부분에서 언급함. 같은 이미지 2장으로 비슷하게 합성된걸 데이터로 고르는걸 막기 위해서 이런 방식으로 이미지 중복해서 생성하지 않는 처리를 했음. 한번 등장 했으면 저 두 이미지를 이번 단계에서는 다시 augmentation pool에 없을 것임.
- query 사이즈는? -> 실험에서 나온댔음.
그리고 앞에서 궁금해했던, 그 student를 KD로 학습한다는걸 어떻게 하나? 이거, 그냥 CE loss로함. teacher의 결과를 GT로 (soft-label로) 학습하는 것.
Experiment.
Dataset
- CIFAR10, MNIST, FashionMNIST
- Places365-standard
Evaluation Metric
- Accuracy
- distillation success: teacher-student accuracy ratio. 얼마나 잘 distill 되었는지 나타내려고 추가로 표시했다고 함.
Teacher Model
Places365 제외하고는 "Zero-shot knowledge distillation in deep networks."와 동일 셋팅이라고 한다. 왜냐면 이 데이터셋은 딱히 셋팅 정해진 게 없어서 그렇다고.
- MNIST들: LeNet-5
- CIFAR: AlexNet,
- Places: ResNet-18
Competing Methods.
- ZSKD: zero-shot KD
- FSKD: few-shot KD
- vanilla KD
Teacher는 데이터 전부 써서 학습한건가? 잘 모르겠다. (아무튼 동일할 것임)
1. 당연히 일반 KD보다는 안좋다. 일반 KD를 적은 이유는 이걸 upper bound로 보기 위함
2. 매우 적은 양의 original training data만 가지고 있어도 된다! (for student) 쿼리로 날릴 데이터는 unlabeled여도 되니까. 같은 양의 데이터를 사용한 것과 비교하면 더 좋다.
- CIFAR같은 데이터셋을 보면 unlabeled가 2천. 다시 말해, 2천개의 unlabeled 데이터만 사용해서 student 모델을 학습했다는 소리이다.
- 쿼리는 teacher에게 요청한 개수를 의미. 다시말해, 4만8천개를 한번만 요청하여 active learning cycle을 딱 한번 돌렸다고 한다.
Data-Efficiency and Query-Efficiency
이건 efficiency에 대한 내용.
Real image : original data로 사용한 것. / Syn image : 합성.
여기서 주목할 점이 "when the number of synthetic images is high (e.g., 160K), the gain is diminishing as we increase the number of real images." 오 그러면 데이터가 엄청 희귀한 태스크라면, 잘 절충해서 mixup을 많이 사용함으로써 성능에서 최대한 손해를 덜 볼 수 있을 것 같다. places의 경우는 CIFAR같은 것 보다는 더 현실적인 데이터셋인데, 필요한 real image가 반으로 줄고 합성이미지를 두배로 늘리면 성능이 거의 유사했다. 하지만 합성이미지가 개수로 보면 훨씬 많긴 하기때문에, computation에 대한 걱정을 잠시 했지만 뭐 어차피 전부 미리 계산해서 저장해놓도록 코딩했을테니까 괜찮을 것 같긴 하다.
=> 아무리 augmentation된 데이터라고 해도 많은 게 성능을 더 올려준다.
Active MixUp vs Random Search vs Vanilla Active Learning
거두절미하고, 일단 이 ablation에서는 그냥 random보다는 낫다 정도로만 해석해야한다고 본다.
* Active Learning : uncertainty sampling (1994년 논문).
최근의 액티브러닝 쓴것도 아니고 걍 엄청 기초적인 옛날 모델이라서. uncertainty sampling 논문에 나온 세가지중에서 뭘 쓴건지는 모르겠는데, 표 보면 랜덤보다 안좋다. 음....?
* Random Search : Synthesized images 중에서 랜덤하게 고르는 Random Sampling을 말함.
Active Mixup with Out-of-Domain Data for Blackbox Knowledge Distillation
프라이버시 이슈때문에 데이터가 구하기 힘들어 OoD data 사용해야할 수도 있다. 그래서 실험한 것.
cifar10을 original data, cifar 100을 mixup 위한 데이터. 이떄 class 안 겹치도록 cifar10에 있는건 뺐다고 한다.
아래 실험결과는 real이 20k로 고정이었음. MIXUP pool 40k인 셋팅으로 고정하여 같은 양의 데이터를 사용했을때를 보면, cifar100에서 하면 83%, 아까 cifar10에서 했을때는 87% 나왔었다. 83%면 cifar10에서는 mixup pool 10~20k 사이이다. 없는 것 보다는 훨씬 나은 성능. 단, 다른 셋팅 각각 비교하면 (76) 81 83 86 87인거라 Out of domain의 경우, 어설픈 양의 synthesized image를 만들면 mixup 안 쓴 76%보다도 못하다!
결론?
- 논문 전반적인 아이디어는 매우 실용적이다.
- Mixup의 soft-label이 이렇게 도움될지 몰랐다. 이 논문의 학습방식은 모르는 데이터이더라해도 dark knowledge를 전부 전수해주겠다는 의미가 된다. soft-label을 GT로 두고 학습한게 다른 논문이 더 있나 궁금.
- 심지어 table1은 active learning cycle을 단 한번만 돌린 결과이다. query를 한방에 많이 날려서 학습한 것.
- 우리는 out of domain data 결과는 크게 신경쓸 필요 없을 것 같다. (unlabeled data가 어느정도 있다면...) 왜냐면 우리 회사에서 써야하는 방법은 위에 적었던 활용 방법 3가지중에 3번에 해당한다고 생각하기 때문.
- 그러면 mixup 비슷한걸 video domain에서 찾으면 괜찮을 것 같다. 아니면 다른 방법을 찾거나...?
댓글