# Distilling the Knowledge in a Neural Network 目的:讓較小的模型有更好的泛化能力 會先訓練一個比較大的老師模型,且在特定任務有高準確率 會比直接拿 one-hot vector 來直接訓練學生模型好 因為老師模型的輸出較為平滑,保留更多資訊(例如哪兩種類別很像),讓學生直接模仿 做法:先訓練一個參數量較多的 Teacher Model,再將 Teacher Model 經 Softmax 的輸出作為 Student Model 學習的 ground truth (softmax 加入 Temperature 項) ![image](https://hackmd.io/_uploads/S1e-O49J0.png) ## Temperature softmax 原本的 Softmax:![image](https://hackmd.io/_uploads/BkZfGB5k0.png) 加入 Temperature:![image](https://hackmd.io/_uploads/B1ogMS5yA.png) Temperature 對輸出影響: ![image](https://hackmd.io/_uploads/Sy6EBr9JC.png) 神奇的效果:假設是學習數字辨識,Student 學習時就算沒有看過 7 這數字,但是 Teacher 輸出指示 1 跟 7 長很像,最後還是有機會可以辨識出 7 嘗試應用: * 如果訓練了一個認印刷字 17350 類的 Model,也 Fine-tune 在 4848 類草書(但已經無法認得原本 17350 類),是否可以運用兩 model soft output 和較少量的混合資料來訓練一個新 Model,並且有認得兩者的能力? * 在 Fine-tune 時,除了新 data 的 hard-truth,同時加上原 Model 輸出的 soft-truth,兩者都算 Loss 並相加(也可以同時加入某些 Regularization?)再更新參數,不知道是否可以保留原本認字能力? 李宏毅某堂課:但是助教實驗後覺得沒有很有效(? https://ithelp.ithome.com.tw/m/articles/10268783 https://zhuanlan.zhihu.com/p/102038521 https://chtseng.wordpress.com/2020/05/12/%E7%9F%A5%E8%AD%98%E8%92%B8%E9%A4%BE-knowledgedistillation/