C.W.K.
Stream
Lesson 05 of 07 · published

Knowledge distillation

~8 min · advanced

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

큰 teacher model 의 *softmax 분포* 를 student model 이 모방하게 학습 — ground truth label 만 보다 더 풍부한 신호. student 가 작아도 teacher 의 *모르는 것까지* (어떤 클래스끼리 헷갈렸는지 — dark knowledge) 배움.

구현: teacher.predict 로 soft label 받고, student 의 loss 를 (CE with hard label) + (KL divergence with soft label) 로. temperature 도 한 hyperparameter — 클수록 soft 분포 더 평탄.

Code

class <span class="dc">Distiller</span>(keras.Model):
    def __init__(self, student, teacher, temperature=3.0, alpha=0.1):
        super().__init__()
        self.student = student
        self.teacher = teacher
        self.temperature = temperature
        self.alpha = alpha

    def train_step(self, data):
        x, y = data
        # Teacher predictions (soft labels)
        teacher_pred = self.teacher(x, training=False)

        # Student predictions
        student_pred = self.student(x, training=True)

        # Distillation loss (soft) + student loss (hard)
        loss = (
            self.alpha * hard_loss(y, student_pred) +
            (1 - self.alpha) * soft_loss(teacher_pred, student_pred)
        )
        ...

External links

Exercise

CIFAR-10 의 'teacher' ResNet50 학습. 'student' MobileNet 을 두 방식으로 학습 — (a) hard label 만, (b) hard + teacher soft label (KL div). student accuracy 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.