深度网络重参数化
最近看知乎推送的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。