理解此圖就算理解一半了。。。。。。。
1.總體3個大網絡:
- Generative Network爲生成對抗網絡GAN(??這是啥??後面解釋)的生成器G;
- Teacher Network兩個作用:a.作爲GAN的判別器D b.知識蒸餾的教師網絡(??知識蒸餾??後面解釋)
- Student Network:將教師網絡蒸餾得到的壓縮小型網絡
2.Random Signal是什麼呢?這時候可能就要去了解CNN了,學術表達爲高斯噪聲,換句話來說,就是用來生成圖片用的一個輸入值,這裏的G可以理解爲一個反向的CNN,輸入爲隨機值,輸出爲圖片。
3.算法分爲兩步:GAN(Generative Network+Teacher Network)來生成圖片,這些圖片代替了原始數據;
知識蒸餾(Teacher Network+Student Network)來壓縮Teacher Network得到Student Network。
這裏一定要注意要壓縮Teacher Network,故而與傳統的GAN有些不同,這裏判別網絡D不需要調參和修改,不然怎麼做到壓縮?又不是動態壓縮。。。。。
GAN生成對抗網絡
通俗易懂的話:道高一尺,魔高一丈,道更高,魔更高。
G用來作假,D用來辨別真僞,傳統的GAN是這樣的:G做的越來越逼真,D辨別能力越來越強,結果G變成了僞造大師,D變成了辨僞大師,最後趨於穩定,均只有50%的機會能打敗對方。
此算法將G固定爲Teacher network,同時D輸出不再是真假,而是Teacher network的輸出,這裏就要修改GAN的損失函數了,因此本算法的第二個重點圖:
α,β爲固定值,爲調節幾個loss中的比重,第一個loss是交叉熵爲了讓圖片更真實,第二個是激活損失函數爲了讓生成的圖片能激活Teacher Network的圖片提取器,第三個是爲了讓生成的圖片更加接近原始數據集的分佈(爲什麼?和知識蒸餾有關)
知識蒸餾
通俗解釋:學生在老師的引導下去爬老師曾經爬過無數次的山,而且這個山的道路上還留有各種老師留下的記號。
這裏可能要先了解softmax函數才更好深入瞭解蒸餾。
此算法給出蒸餾時訓練Student Network的loss,如下圖:
目的:爲了讓學生網絡的輸出Ys和教師網絡的輸出Yt更加接近。
算法流程
最後,在這裏訓練GAN中的生成網絡和蒸餾中的學生網絡均是通過LOSS函數通過反向傳播(BP算法)來更新網絡參數的。
注:筆者也是菜雞,如有錯誤,望各位大神指正!!