https://arxiv.org/abs/2308.10524

 

Dataset Quantization

State-of-the-art deep neural networks are trained with large amounts (millions or even billions) of data. The expensive computation and memory costs make it difficult to train them on limited hardware resources, especially for recent popular large language

arxiv.org

 

ICCV 2023 Accepted.

 

 

일단, 우리가 생각하는 model quantization을 기대하고 논문을 접하면 안된다.

그냥 data를 compression 하는 방법을 개선하면서, 이름을 quantization이라고 붙였을뿐....

 

 

----

 

 

Data Compression을 하려고 하는 목적은 간단하다.

 

"학습할때 사용하는 데이터가 너무 많은데, 이를 효율적으로 줄이면서 비슷한 성능을 낼 수 없을까?"

 

이러한 목적을 달성하기 위해, 주로 아래 두가지의 방법이 연구되고 있다.

  • Data distillation
  • Active Learning (coreset selection) 

이 논문을 쉽게 정리하기 위해서, 위 방법 두개에 대해서 간단하게 설명하고자 한다.

 

 

 

 

Data distillation

data distillation은 정말 말 그대로, 데이터 "압축" 이다. 

60K의 MNIST를 학습하지 않고, 이를 압축한 데이터 10장을 사용하더라도 94%의 정확도를 낼 수 있다는 것이다.

 

 


Algorithm은 다음과 같다.

  1. 압축할 생성 데이터 $\bar{x}$ 를 초기화한다.
  2. real training data에서 batch를 sampling한다.
  3. 랜덤 초기화한 모델 $n$ 개를 생성한다.
  4. $\bar{x}$를 초기화한 모델에 넣고, 초기화 모델을 업데이트한다.
  5. real training data를 업데이트한 모델에 넣고 loss를 계산한다.
  6. 4~5를 $n$번 반복하면서 loss를 쌓는다.
  7. 이렇게 구한 loss로 생성데이터 $\bar{x}$를 학습한다.

 

왜 랜덤 초기화 모델을 사용하는가?

* 학습되지 않은 다양한 랜덤 모델에서도 잘 되는 "일반화"를 노렸다.

 

 

단점은?

* 모델의 loss를 사용하다보니,ResNet18로 데이터를 압축하고 이 압축된 데이터를 다른 곳에서 사용하면 성능이 크게 하락한다.

 

 

어떻게 해결할 수 있을까?

* 모델에 독립적으로 작동할 수 있도록, 모델의 loss를 사용하지 말자.

 

 

이제 위의 문제를 해결할 수 있는 방법이 Coreset Selection 이다.

 

 

 

Coreset Selection

"전체 데이터셋을 대표하는 sample 데이터를 고르자"

위 submodular gains $P(x_{k}$ 를 최대화할 수 있는 $x_{k}$를 고르는 방법이다.

 

$C_{1}(x_{k})$의 경우 선택했던 coreset의 sample들과 $x_{k}$의 feature distiance는 커야하며 (다양성, $x_{k}$는 선택된 데이터와 다름)

선택되지 않은 sample들과, $x_{k}$의 feature distance는 작아야한다. (대표성, $x_{k}$는 남은 데이터를 대표할 수 있음.)

 

이 방법은, gradient를 사용하지 않기 때문에 다양한 모델에 적용이 가능하다.

 

 

 

Data Quantization

 

이 논문에서는 Coreset Selection의 방법이 다양성이 부족하다고 이야기한다.

항상 전체 데이터 distribution에서 선택하기 때문에, High-density regions에 있는 샘플이 과도하게 선택될 수 있다.

데이터의 압축률이 올라가면, $C_{1}(x_{k})$의 term이 작고, $C_{2}(x_{k})$의 영향만 커지게 된다.

 

저자들은 이러한 현상을 해결하기 위해 "Bin"을 도입했다.

1. 현재 $n$ step에서 submodular gains $P(x_{k})$를 최대화 시킬 수 있는 $x_{k}$를 뽑는다.

2. 다음 $n+1$ step에서, 뽑지 않은 데이터중에서 다시 $P(x_{k})$를 최대화 시키는 $x_{k}$를 뽑는다.

이 과정을 반복하면, bin은 데이터가 겹치지 않게 나눠질 것이다.

 

그 다음, 각 bin에서 균등하게 random sample하는 방법이다.

 

 

원래의 Coreset selection의 경우에는, 항상 동일한 distribution에서 다 뽑았기 때문에, 다양성이 확보가 안될 수 있지만

Data Quantization은 Bin을 나누고, Bin에서 각각 random하게 뽑았으니, 다양한 distribution에서 동일하게 sampling할 수 있다는 이야기다.

 

+ 여기에 data 저장공간을 줄일 수 있는 gradcam score based pruning + MAE reconstruction이 있긴 한데, 내용에선 뺐다. 

ResNet18-gradcam -> dropping -> pretrained MAE reconstruction

 

 

 

Experiments

낮은 압축률, 높은 압축률에서 다 성능이 좋았다.

무엇보다 기존 SOTA DM(data distillation) 방법에 비해서 약 380배정도 빨라졌다고 한다. (근데 원래 data distillation이 28,000 gpu시간쯤 걸렸다.)

 

기존 DM방법과 다르게, ResNet18에서 만든 $S^{*}$가 다른 아키텍쳐에서도 성능이 좋았다.

 

 

 

6줄 요약

“Gradient로 생성하는 압축 데이터셋은 다른 모델에서 안좋다.”

원본 데이터셋을 샘플링하는 Coreset selection을 사용하자

근데, Coreset selection에서 다양성이 확보가 안되는 문제가 있더라

다양성을 기준으로 데이터를 bin만큼 나누고, 나눈 데이터에서 uniform 하게 샘플링하자

데이터 압축을 하기 위해서, GradCAM으로 날리고, 사용할때는 MAE로 사용할 수 있다.”

성능도 높고, 기존 distillation 방법보다 약 400배 더 빠르다

 

 

+ Recent posts