• **Knowledge Distillation(์ง€์‹ ์ฆ๋ฅ˜)**์€ ํฐ teacher ๋ชจ๋ธ์˜ ์ง€์‹์„ ์ž‘์€ student ๋ชจ๋ธ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ชจ๋ธ ์••์ถ• ๊ธฐ๋ฒ•
  • teacher์˜ ์ถœ๋ ฅ(ํ™•๋ฅ ๋ถ„ํฌยทsoft label)์„ student๊ฐ€ ๋ชจ๋ฐฉํ•˜๋„๋ก ํ•™์Šต์‹œํ‚ค๋Š” teacher-student ํ•™์Šต ๊ตฌ์กฐ
  • ์ •ํ™•๋„๋ฅผ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ชจ๋ธ ํฌ๊ธฐยท์ถ”๋ก  ๋น„์šฉ์„ ์ค„์ด๋Š” ๊ฒฝ๋Ÿ‰ํ™” ๋ฐฉ๋ฒ•
  • ๊ฐ€์ค‘์น˜ ๋ณต์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๊ฐ€๋ฅด์ณ์„œ ํ‰๋‚ด๋‚ด๊ฒŒโ€ ํ•˜๋Š” ๊ทผ์‚ฌ์  ์ง€์‹ ์ „๋‹ฌ

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • ํฐ ๋ชจ๋ธ์€ ์ •ํ™•ํ•˜์ง€๋งŒ ๋А๋ฆฌ๊ณ  ๋ฌด๊ฑฐ์›Œ ์˜จ๋””๋ฐ”์ด์Šคยท์‹ค์‹œ๊ฐ„์—” ๋ถ€๋‹ด
  • ์ž‘์€ ๋ชจ๋ธ์„ scratch๋กœ ํ•™์Šตํ•˜๋ฉด ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง
  • teacher๊ฐ€ ์ฃผ๋Š” โ€œ๋ถ€๋“œ๋Ÿฌ์šด ์ •๋‹ต(soft label)โ€œ์ด ํ’๋ถ€ํ•œ ํ•™์Šต ์‹ ํ˜ธ ์ œ๊ณต

AS-IS / TO-BE

flowchart LR
    subgraph A["AS-IS โ€” ์ž‘์€ ๋ชจ๋ธ์„ ํ˜ผ์ž ํ•™์Šต"]
        A1[์ž‘์€ ๋ชจ๋ธ] --> A2["hard label๋งŒ์œผ๋กœ ํ•™์Šต<br/>(์ •๋‹ต/์˜ค๋‹ต 1๊ฐœ์”ฉ)"] --> A3["์„ฑ๋Šฅ ํ•œ๊ณ„"]
    end
    subgraph B["TO-BE โ€” distillation"]
        T["teacher (ํฐ ๋ชจ๋ธ)"] -->|"soft label ์ „๋‹ฌ"| B2
        B1["student (์ž‘์€ ๋ชจ๋ธ)"] --> B2["teacher ํ‰๋‚ด๋‚ด๋ฉฐ ํ•™์Šต"] --> B3["์ž‘์ง€๋งŒ ๋˜‘๋˜‘ํ•œ ๋ชจ๋ธ"]
    end

soft label์ด ํ•ต์‹ฌ โ€” ์ง๊ด€

  • hard label: ์ •๋‹ต ํ•˜๋‚˜๋ฟ. ์˜ˆ) ์ด๋ฏธ์ง€ โ†’ โ€œ๊ณ ์–‘์ดโ€
  • soft label: teacher๊ฐ€ ๋‚ธ ํ™•๋ฅ ๋ถ„ํฌ. ์˜ˆ) ๊ณ ์–‘์ด 0.7, ๊ฐœ 0.2, ์—ฌ์šฐ 0.1

soft label์—๋Š” โ€œ๊ณ ์–‘์ด์ง€๋งŒ ๊ฐœ์™€ ํ—ท๊ฐˆ๋ฆด ๋งŒํ•˜๋‹คโ€๋Š” ์ถ”๊ฐ€ ์ •๋ณด(dark knowledge) ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋‹ค. student๊ฐ€ ์ด ๋ถ„ํฌ๊นŒ์ง€ ๋”ฐ๋ผ ๋ฐฐ์šฐ๋ฉด, ๋‹จ์ˆœ ์ •๋‹ต๋งŒ ์™ธ์šฐ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์ž˜ ์ผ๋ฐ˜ํ™”ํ•œ๋‹ค. ์„ ์ƒ์ด โ€œ์ •๋‹ต์€ A์ธ๋ฐ, B๋„ ๋น„์Šทํ•ด์„œ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์›Œโ€๋ผ๊ณ  ์งš์–ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

distillation ์ข…๋ฅ˜

์ข…๋ฅ˜๋ฌด์—‡์„ ๋ชจ๋ฐฉ๋น„๊ณ 
Response-basedteacher์˜ ์ตœ์ข… ์ถœ๋ ฅ(ํ™•๋ฅ ๋ถ„ํฌ)๊ฐ€์žฅ ์ผ๋ฐ˜์ 
Feature-based์ค‘๊ฐ„ ๋ ˆ์ด์–ด์˜ ํ‘œํ˜„(feature)๊ตฌ์กฐ ํ˜ธํ™˜ยทprojection ํ•„์š”
Relation-based์ƒ˜ํ”Œ ๊ฐ„ ๊ด€๊ณ„ ๊ตฌ์กฐ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•

๊ณผ์ • (์ฝ”๋“œ ํ๋ฆ„)

teacher.eval()   # teacher๋Š” ๊ณ ์ • (ํ•™์Šต ์•ˆ ํ•จ)
for x, y in dataloader:
    with no_grad():
        soft_target = softmax(teacher(x) / T)     # T = ์˜จ๋„, ๋ถ„ํฌ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ
    pred = student(x)
    # โ‘  teacher ํ‰๋‚ด(์ฆ๋ฅ˜) + โ‘ก ์ง„์งœ ์ •๋‹ต(hard label) ๋‘˜ ๋‹ค ํ•™์Šต
    loss = KL(softmax(pred / T), soft_target) + CE(pred, y)
    loss.backward(); optimizer.step()
  • ์˜จ๋„(Temperature, T): ํด์ˆ˜๋ก ํ™•๋ฅ ๋ถ„ํฌ๊ฐ€ ๋ถ€๋“œ๋Ÿฌ์›Œ์ ธ dark knowledge๊ฐ€ ์ž˜ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

Gemma์— ์ ์šฉํ•˜๋ฉด

  • Gemma๋ฅผ teacher๋กœ ๋‘๊ณ  ๋” ์ž‘์€ student ๋ชจ๋ธ์„ ํ•™์Šต์‹œ์ผœ ์ง€์‹์„ ์ด์ „ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ™์€ ๊ณ„์—ด์˜ ์ž‘์€ ๋ชจ๋ธ๋กœ๋Š” ๋น„๊ต์  ์‰ฝ๊ณ , ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ตฌ์กฐ๋กœ๋Š” ๋” ์–ด๋ ต๊ณ  ๊ทผ์‚ฌ์น˜์— ๊ฐ€๊น๋‹ค.
  • โ€œํ†ต์งธ ์ด์‹โ€์ด ์•„๋‹ˆ๋ผ โ€œ๊ฐ€๋ฅด์ณ์„œ ํ‰๋‚ด๋‚ด๊ฒŒโ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (๊ตฌ์กฐ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ทธ๋ƒฅ ๊ฐ€์ค‘์น˜ ๋ณต์‚ฌ = ํ†ต์งธ ๋ณต์ œ)
  • โš ๏ธ ๋ผ์ด์„ ์Šค ํ™•์ธ ํ•„์ˆ˜: teacher ์ถœ๋ ฅ์œผ๋กœ ํ•™์Šตํ•œ ๋ชจ๋ธ์˜ ๋ฐฐํฌยท์ƒ์—…ํ™” ์กฐํ•ญ์„ ๋ชจ๋ธ ์นด๋“œ์—์„œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

Fine-tuning๊ณผ์˜ ์ฐจ์ด

  • Fine-tuning: ๊ฐ™์€ ๋ชจ๋ธ์„ ๋‚ด ๋ฐ์ดํ„ฐ๋กœ ๋” ํ•™์Šตํ•ด ํŠนํ™” (์ง€์‹์˜ โ€œ๊ฐฑ์‹ ยท์ถ”๊ฐ€โ€).
  • Distillation: ํฐ ๋ชจ๋ธ์˜ ์ง€์‹์„ ๋‹ค๋ฅธ(์ž‘์€) ๋ชจ๋ธ๋กœ ์ด์ „ (์ง€์‹์˜ โ€œ์ด์‚ฌยท์••์ถ•โ€).

์ฐธ๊ณ  ๋ฌธ์„œ