white-box 에서 사용할 수 있는 지식증류 기법이다.
Teacher 모델의 레이어 특질값(Featrue)를 사용한다.
중간 계산 결과, 혹은 추론 과정이라고도 해석 가능
KL Loss 추가MSE Loss 추가
Feature-based KD를 위해서는 Teacher의 중간레이어와 Student의 중간레이어를 맞춰주는 과정이 필요하다
t와 Ds가 다르다)regressor Layer인 R을 사용하게 된다.

t와 fs가 비슷해질 것이다가 주요한 논리그렇다면 어떤 Feature들을 전달해줄 것인가?
일반적으로 중간레이어에서 추출한 (1~10레이어가 있다면 3,4번째 레이어 feature를 추출) 레이어를 사용하여 지식증류에 사용함.
그렇다면 다른 선택지는 없는가?

이미지 벡터로 해석됨



CNN 구조와 채널의 변화: 이미지 특징 추출 과정
1. 전체 신경망 구조
이 신경망은 CNN(Convolutional Neural Network)과 MLP(Multi-Layer Perceptron)를 결합한 구조로써
크게 특징 추출을 담당하는 CNN 부분과 분류를 담당하는 MLP 부분으로 구성된다.class Teacher(nn.Module): def __init__(self, num_classes=10): super(Teacher, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 128, kernel_size=3, padding=1), nn.ReLU(), nn.Conv2d(128, 64, kernel_size=3, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), nn.Conv2d(64, 64, kernel_size=3, padding=1), nn.ReLU(), nn.Conv2d(64, 32, kernel_size=3, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), ) self.classifier = nn.Sequential( nn.Linear(2048, 512), nn.ReLU(), nn.Dropout(0.1), nn.Linear(512, num_classes) )2. CNN의 핵심 구성 요소
2.1 Conv2d (합성곱 레이어)
- 2차원 합성곱 연산을 수행하는 레이어
- 주요 매개변수:
- 입력 채널 수
- 출력 채널 수
- kernel_size: 필터 크기 (3x3 사용)
- padding: 입력 주변 패딩 크기 (1로 설정)
2.2 ReLU (활성화 함수)
- Rectified Linear Unit의 약자
- 동작 방식:
- 음수 입력 → 0 출력
- 양수 입력 → 입력값 그대로 출력
- 네트워크에 비선형성을 추가하여 표현력 향상
2.3 MaxPool2d (풀링 레이어)
- 특징 맵의 크기를 줄이는 다운샘플링 수행
- 설정:
- kernel_size=2: 2x2 영역 검사
- stride=2: 2칸씩 이동
- 특징을 압축하고 계산량을 줄이면서 주요 특징 보존
3. 채널의 변화 과정
3.1 RGB에서 시작 (3채널)
- 입력 이미지는 RGB 3개 채널로 시작
- 각 픽셀은 3가지 기본 색상 정보만 포함
- 가장 기초적인 시각 정보 표현 단계
3.2 특징 확장의 단계 (3 → 128채널)
- 다양한 특징을 감지할 수 있도록 확장
- 감지 가능한 특징들:
- 다양한 방향의 엣지
- 여러 종류의 텍스처 패턴
- 색상의 미세한 변화
- 기본적인 형태들
- 이미지를 128개의 서로 다른 관점에서 분석
3.3 정보의 압축과 정제 (128 → 64채널)
- 감지된 특징들 중 중요한 정보 선별
- 덜 중요한 정보는 제거
- 더 추상적이고 고차원적인 특징으로 변환
3.4 특징 재조정 단계 (64 → 64채널)
- 같은 채널 수를 유지하며 특징을 재가공
- 이 단계의 중요성:
- 특징 재조정: 채널 수는 유지하되 각 채널의 정보를 더 정교하게 가공
- 수용 영역 확장: 3x3 커널을 한번 더 사용하여 더 넓은 영역의 정보 통합
- 네트워크 깊이 증가: 더 복잡한 패턴 학습 가능
3.5 최종 압축 (64 → 32채널)
- 최종적으로 가장 중요한 특징들만 추출
- 분류에 필요한 핵심 정보로 압축
4. MLP 구조와 2048의 의미
4.1 MLP 구조
self.classifier = nn.Sequential( nn.Linear(2048, 512), nn.ReLU(), nn.Dropout(0.1), nn.Linear(512, num_classes) )4.2 2048 입력 크기의 계산
- CNN의 출력 크기는 입력 이미지 크기에 따라 결정
- 32x32 입력 이미지 기준:
- 초기: 32x32
- 첫 MaxPool2d 후: 16x16
- 두 번째 MaxPool2d 후: 8x8
- 최종: 32채널 x 8 x 8 = 2048
5. 전체 데이터 흐름
- 이미지 입력 → CNN 특징 추출
- 추출된 특징 → MLP 분류
- 최종 출력: 분류 결과와 중간 특징
Student

기본 과제에서 KD: Feature-based를 하기 위해서는
이미지의 dimension인 (b, 3, 32, 32)을 기준으로
이때 필요한 것이 바로 Regressor이다
Feature map 사이즈를 유지하면서 filter 수를 4배로 늘리는 CNN이 필요한 것!
아까 student의 1번째 conv, maxpool이후의 출력에 대해 아래를 통과시켜 주면 된다.
nn.Conv2d(16, 64, kerenl_size = 3, padding =1)
Filter수만 건드려주는 작업!
그래서 이거 어떻게 학습하나요?
for inputs, labels in iter(train_loader): inputs = inputs.to(device) labels = labels.to(device) optimizer.zero_grad() # teacher는 freeze with torch.no_grad(): _, teacher_features = teacher(inputs) student_logits, student_features = student(inputs) # 'mse_loss' 라는 변수가 완성되어야 한다. # CODE를 완성하시오 # # ce_loss = ce_losser(input=student_logits, target=labels) loss = mse_losos_weight * mse_loss + ce_loss_weight * ce_loss
ChatGPT API, GPT4o, Claude
그런데 이런 Black-box 모델도 지식증류를 할 수 있다면 좋지 않을까?
NLP 분야에서 특히 많이 사용한다.
Imitation Learning(모방학습)
Black-box 모델의 지식을 전달 받는 방법Imitaition Learning의 과정
Vicuna ORCA WizardLMImitation Learning의 장단점
- 장점
- Black-box 모델의 유일한 KD 접근법
내부 접근이 불가능한 경우에도 모델 지식 획득 가능- 설명 가능한 지식
다른 KD 기법과 다르게 증류하는 지식이 인간이 해석 가능한 형태이다.
- 단점
- 제한된 정보량
출력된 응답만으로는 LLM의 내부 지식의 이해 및 심층적 학습이 어려움- 데이터 품질의 민감성
LLM의 응답에 수렴하여 답변의 다양성이 떨어지거나 새로운 상황에 대한 대응력이 떨어질 수 있음
- 출력의 다양성과 품질이 학습의 효과에 큰 영향을 줌
