- **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-based | teacher์ ์ต์ข ์ถ๋ ฅ(ํ๋ฅ ๋ถํฌ) | ๊ฐ์ฅ ์ผ๋ฐ์ |
| 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: ํฐ ๋ชจ๋ธ์ ์ง์์ ๋ค๋ฅธ(์์) ๋ชจ๋ธ๋ก ์ด์ (์ง์์ โ์ด์ฌยท์์ถโ).