데이터가 전혀 없는데, 이미 학습된 모델의 지식을 다른 모델로 옮길 수 있을까?
1. 들어가며
보통 knowledge distillation은 큰 모델(teacher)의 지식을 작은 모델(student)로 옮기는 방법이다.
일반적으로는 학습 데이터를 teacher에 넣고, teacher가 내는 soft prediction을 student가 따라 배우는 식으로 진행된다. 즉, distillation에도 결국 데이터가 필요하다.
그런데 현실에서는 데이터가 아예 없을 수 있다.
특히 의료, 산업, 군사처럼 개인정보나 기밀 문제가 있는 영역에서는 학습에 쓰인 원본 데이터에 접근할 수 없는 경우가 많다. 그러면 teacher 모델은 이미 주어져 있지만, 그 모델을 학습시킨 데이터는 전혀 볼 수 없다.
이 논문은 바로 그 상황을 다룬다.
“학습 데이터가 하나도 없을 때, teacher 모델의 지식을 student에게 전달할 수 있는가?”
논문의 답은 가능하다이고, 그 방법이 바로 KEGNET (Knowledge Extraction with Generative Networks) 이다. 핵심 아이디어는 teacher가 이미 학습한 조건부 분포와 결정 경계를 이용해 가짜 데이터를 생성하고, 그 가짜 데이터로 distillation을 수행하는 것이다.
2. 문제의 핵심: 왜 데이터 없이 distillation이 어려운가
겉으로 보기에는 “teacher가 있으니 random input을 넣고 student가 teacher를 따라 하면 되지 않나?” 싶을 수 있다.
하지만 이건 잘 안 된다. 이유는 deep neural network의 지식이 입력 공간 전체에 퍼져 있는 게 아니라, 실제로 본 데이터가 놓인 manifold 근처에 집중되어 있기 때문이다.
즉,
- teacher는 훈련 데이터가 있던 영역에서는 의미 있는 예측을 하지만,
- 엉뚱한 random noise 입력에는 이상한 출력을 낼 수 있다.
그런 random input으로 student를 학습시키면 teacher의 진짜 지식이 아니라 불안정한 출력만 따라 배우게 된다.
따라서 데이터가 없을 때 중요한 것은 단순히 아무 입력이나 만드는 게 아니라,
teacher가 실제로 잘 반응하는 “그럴듯한 입력들”을 만들어내는 것
이다. KEGNET은 바로 이걸 목표로 한다.
3. 논문의 핵심 아이디어
KEGNET은 직접 p(x) 를 추정하려 하지 않는다.
입력 공간은 너무 크기 때문에 데이터 없이 p(x) 자체를 바로 맞추는 건 거의 불가능하다. 대신 논문은 입력 x 를 다음 두 변수로 조건화해서 생각한다.
- y: label 정보
- z: label과는 별개인 저차원 latent variable, 즉 데이터의 숨은 의미나 스타일 같은 것
이때 논문은

라는 식으로 artificial data set을 만든다고 본다. 즉,
- label y^ 를 하나 뽑고,
- latent noise z^ 를 하나 뽑은 뒤,
- 그 둘에 가장 잘 맞는 입력 x^ 를 생성한다는 생각이다.
쉽게 말하면,
“이 label처럼 보이면서도, 이 latent code의 특징을 가진 입력”을 만들어내자
는 것이다.
4. 왜 y 와 z 를 같이 쓰는가
여기서 y 만 쓰면 어떤 문제가 생길까?
예를 들어 “숫자 3”이라는 label만 주고 이미지를 생성하면, generator는 결국 그 클래스의 대표적인 한두 패턴만 반복해서 만들 가능성이 높다. 즉, diversity가 부족해진다.
그래서 논문은 z 를 추가로 넣는다.
z 는 같은 클래스 안에서도 서로 다른 스타일을 만들어주는 변수다. 예를 들어 숫자 3이라도 굵은 3, 기울어진 3, 흐릿한 3처럼 다양한 샘플을 만들게 하는 역할을 한다.
즉,
- y: 이 샘플이 어떤 클래스인지
- z: 같은 클래스 안에서 어떤 모양/스타일인지
를 담당한다.
5. 확률식 전개: 무엇을 실제로 최적화하는가
논문은 원래 목표를

로 두고, 이를 확률적으로 전개한다.
최종적으로는 teacher classifier가 주는 p(y^∣x^) 와 decoder가 주는 p(z^∣x^) 를 크게 만드는 방향으로 근사한다. 정리하면 핵심 목표는 다음과 같다.

즉,
- 생성된 샘플 x^ 가 teacher에게 y^로 분류되어야 하고,
- 동시에 그 샘플 안에는 latent code z^ 정보도 복원 가능하게 들어 있어야 한다.
이게 KEGNET의 핵심이다.
6. 모델 구조: Generator + Decoder + 고정된 Classifier

Figure 1이 KEGNET 전체 구조를 보여준다. 구조는 비교적 단순하다.
- 고정된 classifier : 이미 학습된 teacher
- generator G: (y^,z^)를 받아 가짜 데이터 x^ 생성
- decoder : 생성된 x^ 로부터 다시 z 를 복원
흐름은 다음과 같다.
- y^ 와 z^ 를 샘플링한다.
- generator가 x^=G(y^,z^)를 만든다.
- teacher M 에 넣어서 label 예측을 본다.
- decoder D 에 넣어서 latent variable 복원을 본다.
- label reconstruction + latent reconstruction + diversity를 동시에 만족하도록 학습한다.
즉, 이 모델은 “teacher가 좋아하는 입력”을 찾으면서, 동시에 “클래스 안에서도 다양한 샘플”을 만들도록 설계되어 있다.
7. 중요한 loss 1: classifier loss
먼저 생성된 데이터가 teacher에게 원하는 label로 보이도록 해야 한다. 이를 위한 손실이 classifier loss다.

여기서 M(G(y^,z^))는 teacher가 생성 샘플을 보고 내는 class distribution이다.
해석
이 식은 결국 입력으로 넣은 label y^ 와
teacher가 생성 데이터를 보고 예측한 분포가 같아지도록 한다.
즉, generator는
“teacher가 이걸 진짜 3이라고 보게 만들어라”
같은 압박을 받는다.
이 loss 덕분에 생성 데이터는 teacher가 학습했던 manifold 쪽으로 끌려간다.
8. 중요한 loss 2: decoder loss
하지만 Lcls만 있으면 generator는 label마다 거의 똑같은 샘플만 만들 가능성이 높다.
예를 들어 “3”이면 늘 비슷한 3 하나만 만들 수도 있다.
그래서 추가하는 것이 decoder loss다.

즉, generator가 만든 샘플 x^안에서
decoder가 원래 latent variable z^를 다시 복원할 수 있어야 한다.
해석
이 식은 generator에게
“단순히 정답 클래스처럼만 보이게 만들지 말고,
샘플마다 다른 latent 정보도 같이 실어라”
라고 강제하는 역할을 한다.
즉, 같은 숫자 3이더라도 스타일이 다양한 3들이 나오게 된다.
9. 중요한 loss 3: diversity loss
그래도 여전히 생성 샘플들이 충분히 다양하지 않을 수 있다.
그래서 논문은 batch 안의 샘플 간 거리를 벌리는 diversity loss를 추가한다.

여기서 d(⋅,⋅)는 데이터 공간에서의 거리로, 논문에서는 Manhattan distance를 사용한다.
해석
latent variable끼리 멀리 떨어진 두 입력 (z^1,z^2)에 대해서는,
생성된 샘플도 실제로 서로 멀어지도록 유도한다.
즉,
- z 가 다르면
- 결과 샘플도 진짜로 달라져야 한다.
이걸 통해 generator가 더 넓은 manifold를 덮도록 만든다.
10. 최종 objective
세 loss를 합치면 최종 objective는 다음과 같다.

여기서 α,β는 하이퍼파라미터다.
정리하면 generator는 동시에 세 가지를 만족해야 한다.
- teacher가 맞는 class로 인식해야 함
- latent code도 복원 가능해야 함
- batch 안 샘플들이 다양해야 함
이 세 조건을 같이 쓰는 것이 KEGNET의 핵심 설계다.
11. distillation은 어떻게 하나
KEGNET을 학습한 뒤에는 generator G 로 artificial data를 만든다.
그 데이터를 teacher와 student에 같이 넣고, teacher의 출력 분포를 student가 따라가게 학습한다.
논문은 distillation loss를 다음처럼 둔다.

즉, 여러 generator들이 만든 데이터를 teacher와 student에 동시에 넣고, cross entropy로 맞춘다.
여기서 논문은 generator를 하나만 두지 않고 여러 개 사용한다. 그 이유는 generator마다 조금씩 다른 manifold를 학습하므로, 여러 generator를 섞으면 더 다양한 artificial data를 확보할 수 있기 때문이다.
또한 distillation 단계에서는 label y^ 를 one-hot이 아니라 elementwise uniform으로 샘플링한다.
즉, teacher가 애매한 soft prediction을 내도록 유도해서 student가 클래스 간 숨은 관계까지 더 잘 배우게 만든다.
12. 실험 결과: 정말 되는가
12.1 구조화되지 않은 데이터(UCI)

Table 2를 보면, MLP teacher를 작은 student로 distill할 때
- Tucker decomposition만 쓴 경우보다
- random uniform / Gaussian 샘플로 fine-tuning한 경우보다
- KEGNET이 항상 더 높은 정확도를 보인다.
즉, 아무 데이터 없이도 teacher의 지식을 꽤 잘 뽑아낼 수 있다는 뜻이다.
12.2 이미지 데이터(MNIST, Fashion-MNIST, SVHN)

Table 3이 더 인상적이다.
특히 SVHN, Fashion-MNIST처럼 더 복잡한 데이터에서는
Uniform이나 Gaussian으로 만든 random input은 거의 도움이 안 되거나, 오히려 Tucker만 쓴 것보다 더 나빠지기도 한다. 반면 KEGNET은 큰 폭으로 성능을 회복한다.
예를 들어 SVHN에서는 어떤 student 설정에서
- Tucker: 11.02%
- T+Uniform: 63.08%
- T+KEGNET: 87.26%
까지 올라간다.
즉, 단순 random data로는 teacher가 배운 manifold를 따라갈 수 없고,
KEGNET처럼 teacher가 실제로 의미 있게 반응하는 데이터를 생성해야 distillation이 제대로 된다.
13. 생성된 이미지의 질적 결과

Figure 2를 보면, KEGNET이 생성한 MNIST와 SVHN 이미지를 보여준다.
완전히 깔끔한 실제 데이터처럼 보이진 않지만, 숫자 패턴이 분명히 식별 가능하다. 특히 SVHN에서는 생각보다 더 선명한 숫자 모양이 나온다.
또 latent variable 를 여러 개 평균내면 더 또렷한 숫자가 보인다.
이건 KEGNET이
- 공통적인 class 특징은 유지하면서
- z 에 따라 세부 스타일을 다양하게 바꾸고 있다는 뜻이다.
즉, generator가 단순히 아무 노이즈를 뿌리는 게 아니라, teacher가 실제로 학습했던 class 특징을 어느 정도 추출해냈다고 볼 수 있다.
14. 이 논문의 장점
1) 문제 설정이 매우 흥미롭다
“데이터가 하나도 없는데 distillation을 하자”는 문제는 굉장히 현실적이다. 특히 privacy, confidentiality가 중요한 분야에서는 실제로 매우 중요하다.
2) 설계가 직관적이다
label reconstruction, latent reconstruction, diversity라는 세 가지 목적이 서로 역할이 분명하다.
왜 generator가 collapse하지 않고 다양한 샘플을 만들 수 있는지도 이해하기 쉽다.
3) 단순 random input baseline과 차이를 명확히 보여준다
복잡한 데이터일수록 단순 random noise는 안 되고, teacher의 지식을 반영한 generator가 필요하다는 점을 실험으로 잘 보여준다.
15. 한계와 생각할 점
물론 이 논문에도 한계는 있다.
1) teacher가 가진 편향을 그대로 따라간다
생성 데이터는 결국 teacher가 잘 반응하는 입력을 만들 뿐이다.
즉, teacher가 잘못 배운 편향이나 오류도 함께 추출될 수 있다.
2) 복잡한 데이터셋에서는 generator 설계가 더 중요해진다
논문도 결론에서 CIFAR-10/100 같은 더 복잡한 데이터셋에는 더 정교한 generator 설계가 필요할 수 있다고 말한다.
3) “진짜 데이터 복원”이라기보다 “teacher가 믿는 데이터 생성”에 가깝다
이건 장점이자 한계다. 원래 학습 데이터를 정확히 복원하는 건 아니고, teacher의 decision boundary와 class manifold를 반영한 synthetic data를 만드는 것이다.
16. 마무리
이 논문을 한 문장으로 요약하면 다음과 같다.
학습 데이터가 전혀 없어도, teacher 모델이 이미 학습한 label 구조와 내부 표현을 이용해 가짜 데이터를 만들고, 그 데이터로 knowledge distillation을 할 수 있다.
핵심 흐름만 다시 정리하면:
- teacher만 있고 데이터는 없다.
- generator가 (y,z) 로부터 샘플 를 만든다.
- teacher는 그 샘플을 원하는 class로 인식해야 한다.
- decoder는 그 샘플 안에서 latent code를 복원해야 한다.
- diversity loss로 샘플 다양성을 확보한다.
- 그렇게 만든 artificial data로 student를 distill한다.
결국 이 논문은 data-free knowledge distillation을 본격적으로 다룬 초기 작업으로서 의미가 크다.
특히 “teacher가 학습한 데이터 manifold를 직접 보지 못해도, teacher의 출력과 내부 제약만으로 어느 정도 재구성할 수 있다”는 점이 인상적이었다.