最近看知乎推送的CVPR2022的一篇論文的時候發現文章提到了re-parameterized這個詞,搜了一下發現了作者關於重參數化的一個報告,於是簡單記錄了一下~
什么是重參數化(re-parameterized)
常規思想:對於一個卷積層需要的參數是\(D\times C\times K\times K\),訓練出來的參數就是\(D\times C\times K\times K\)。
重參數化方法:訓練時用的是另一套不同於\(D\times C\times K\times K\)的參數,訓練完后等價轉換為\(D\times C\times K\times K\)用於推理。
意義:提高模型的性能,改變模型的結構。
關鍵之處:想出重參數化的形式(如何不同於原來的);找到對應的轉換方法;如何利用這種形式達到目的;
作者的ICCV2019的一個工作ACNet:
訓練時多訓一會,部署時模型跟以前一樣卻能獲得性能提升。
重參數化的另一個應用是改變模型結構。
背景:Channel pruning
效果:把卷積層輸出通道變小(把層變窄)
難點:CNN的精度與寬度密切相關,如何在減小寬度的時候保證精度不降低則是一個關鍵問題。
給定一個訓練好的模型,通常的做法是:
根據某些標准選擇某些channel,將其剪掉,調整網絡的結構,做fine tune。
加入某種約束,訓練,使得某些channel接近0,剪掉,finetune。