Yolo 비전 선전
선전
지금 참여하기
용어집

지식 증류

지식 증류가 어떻게 대규모 교사 모델의 지능을 소형 학습 모델로 이전하는지 알아보세요. 빠르고 효율적인 에지 배포를 위해 Ultralytics 최적화하세요.

지식 증류는 기계 학습에서 정교한 기법으로, 소형 신경망(학생)을 훈련시켜 더 크고 복잡한 신경망(교사)의 동작과 성능을 재현하도록 합니다. 이 과정의 주요 목적은 모델 최적화로, 개발자가 무거운 아키텍처의 예측 능력을 리소스 제약 하드웨어에 배포하기 적합한 경량 모델로 이전할 수 있게 합니다. 교사 예측에 인코딩된 풍부한 정보를 포착함으로써 학생 모델은 원시 데이터만으로 훈련했을 때보다 훨씬 높은 정확도를 달성하는 경우가 많으며, 이는 고성능과 효율성 사이의 격차를 효과적으로 해소합니다.

지식 전수의 메커니즘

전통적인 지도 학습에서는 모델이 훈련 데이터로부터"확정 라벨"을 사용하여 훈련됩니다. 여기서 이미지는 명확하게 분류됩니다(예: 100% "개" 및 0% "고양이"). 그러나 사전 훈련된 교사 모델은 모든 클래스에 확률을 할당하는 소프트맥스 함수를 통해 출력을 생성합니다. 이러한 확률 분포는 "소프트 레이블" 또는 "암시적 지식"으로 알려져 있습니다.

예를 들어, 교사 모델이 늑대 이미지를 분석할 때 90% 늑대, 9% 개, 1% 고양이로 예측할 수 있습니다. 이 분포는 늑대가 개와 시각적 특징을 공유한다는 점을 보여주는데, 이는 하드 레이블이 무시하는 맥락 정보입니다. 증류 과정에서 학생 모델은 쿨백-라이블러 분산과 같은 손실 함수를 최소화하여 자신의 예측을 교사 모델의 소프트 라벨과 일치시킵니다. 제프리 힌턴의 연구로 대중화된 이 방법은 학생 모델의 일반화 능력을 향상시키고 소규모 데이터셋에서의 과적합을 줄여줍니다.

실제 애플리케이션

지식 증류는 계산 자원이 부족하지만 고성능이 필수적인 산업 분야에서 핵심적인 역할을 합니다.

  • 엣지 AI와 모바일 비전: 스마트폰이나 IoT 기기에서 복잡한 객체 탐지 작업을 실행하려면 낮은 추론 지연 시간을 가진 모델이 필요합니다. 엔지니어들은 대규모 네트워크를 YOLO26 (특히 나노 또는 소형 변형)과 같은 모바일 친화적 아키텍처로 압축합니다. 이를 통해 얼굴 인식이나 증강 현실 필터와 같은 실시간 애플리케이션이 배터리 소모 없이 원활하게 실행될 수 있습니다.
  • 자연어 처리(NLP): 현대적인 대규모 언어 모델(LLM) 은 엄청난 GPU 클러스터가 필요합니다. 증류(Distillation)를 통해 개발자는 핵심 언어 모델링 능력을 유지하면서도 더 작고 빠른 모델 버전을 생성할 수 있습니다. 이는 반응형 챗봇과 가상 비서를 일반 소비자용 하드웨어나 더 단순한 클라우드 인스턴스에 배포할 수 있게 합니다.

관련 최적화 용어 구분하기

지식 증류는 다른 압축 전략과 근본적으로 다른 방식으로 모델을 수정하므로, 이를 구분하는 것이 중요하다.

  • 전이 학습: 이 기법은 방대한 벤치마크 데이터셋에서 사전 훈련된 모델을 가져와 새로운 특정 작업(예: 일반 이미지 분류기를 detect 이상 detect 미세 조정 )에 적용하는 것을 포함합니다. 반면 증류는 도메인을 변경하기보다는 동일한 지식을 더 작은 형태로 압축하는 데 초점을 맞춥니다.
  • 모델 정제: 정제는 기존 훈련된 네트워크에서 중복 연결이나 뉴런을 물리적으로 제거하여 스파스하게 만드는 과정이다. 증류는 일반적으로 교사의 지도를 활용하여 완전히 별개의 더 작은 학생 아키텍처를 처음부터 훈련하는 방식을 포함한다.
  • 모델 양자화: 양자화는 모델 가중치의 정밀도를 낮춤으로써(예: 32비트 부동소수점에서 8비트 정수로) 메모리를 절약하고 계산 속도를 높입니다. 이는 종종 TensorRT와 같은 엔진과 호환되는 모델 배포의 최종 단계로 수행됩니다. TensorRT 이나 OpenVINO과 호환되는 모델 배포의 마지막 단계로 수행되며, 최대 효율을 위해 모델 증류와 결합될 수 있습니다.

학생 모델 구현

실용적인 워크플로우에서는 먼저 학생 역할을 수행할 경량 아키텍처를 선택합니다. Ultralytics 활용하여 데이터셋을 관리하고 이러한 효율적인 모델들의 track 수 있습니다. 아래는 엣지 배포에 이상적이며 학생 네트워크로 활용하기에 적합한 컴팩트한 YOLO26 모델을 초기화하는 예시입니다:

from ultralytics import YOLO

# Load a lightweight YOLO26 nano model (acts as the student)
# The 'n' suffix denotes the nano version, optimized for speed
student_model = YOLO("yolo26n.pt")

# Train the model on a dataset
# In a custom distillation loop, the loss would be influenced by a teacher model
results = student_model.train(data="coco8.yaml", epochs=5, imgsz=640)

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기