지식증류 (Knowledge Distillation)
쉽게 풀면
오랜 경력의 숙련된 전문가가 신입에게 일을 가르치는 상황을 떠올려 보세요. 전문가는 단순히 "정답은 이거야"라고만 말하지 않고, "이 경우는 A일 확률이 높지만 B일 가능성도 조금 있어"처럼 판단 과정까지 함께 알려줍니다. 지식증류도 비슷합니다. 크고 성능 좋은 교사 모델이 단순한 정답뿐 아니라 각 선택지에 대해 매긴 확률 정보(소프트 레이블)까지 학생 모델에게 전달해, 학생 모델이 교사의 판단 방식을 더 풍부하게 흉내 내도록 학습시킵니다. 결과적으로 학생 모델은 크기는 작아도 교사와 비슷한 수준의 성능을 낼 수 있습니다.
왜 중요한가
대규모 모델은 성능은 뛰어나지만 연산 비용과 지연시간이 커서 모바일, 임베디드 기기, 실시간 서비스에 그대로 배포하기 어렵습니다. 지식증류는 이런 배포 제약을 해결하면서도 성능 저하를 최소화하는 대표적인 모델 경량화 기법이라, 대규모 언어모델이나 비전 모델을 실서비스에 적용하려는 논문에서 양자화, 가지치기와 함께 자주 다뤄지는 핵심 주제입니다.
논문에서는 이렇게 쓰입니다
이 문장은 "크고 무거운 모델이 각 클래스에 부여한 확률값 정보를 활용해, 더 작고 빠른 모델이 비슷한 판단 능력을 갖도록 훈련시켰다"는 뜻입니다. 모바일 기기나 실시간 서비스처럼 계산 자원이 제한된 환경에 모델을 배포할 때 자주 사용됩니다.
컴퓨터 비전 분야에서 최종 출력뿐 아니라 모델 내부의 표현까지 전달하는 지식증류 변형을 다룬 예시이다.
자연어처리 분야에서 교사 모델이 만든 텍스트 출력 자체를 학습 신호로 쓰는 지식증류 방식의 예시이다.
조금 더 깊게 보면
지식증류에서는 교사 모델의 출력을 그대로 쓰지 않고, 온도(temperature)라는 값으로 확률분포를 부드럽게 만들어 각 클래스 사이의 상대적 관계 정보를 더 잘 드러나게 하는 것이 일반적입니다. 손실함수도 정답 레이블과의 오차뿐 아니라 교사와 학생의 확률분포 차이(주로 KL divergence)를 함께 반영하는 형태로 구성됩니다. 최근에는 최종 출력만이 아니라 중간 계층의 특징맵이나 어텐션 패턴까지 전달하는 특징 기반 증류, 그리고 교사 없이 모델 스스로를 앙상블처럼 활용하는 자기증류(self-distillation) 방식도 함께 연구되고 있습니다.
주의할 점
지식증류로 만든 학생 모델이 항상 교사 모델과 동일한 성능에 도달하는 것은 아닙니다. 모델을 지나치게 작게 압축하면 정보 손실이 커져 성능이 눈에 띄게 떨어질 수 있으며, 이는 파인튜닝과 같은 추가 조정으로 어느 정도 보완하기도 합니다.