DAFL:无数据网络压缩算法之通俗易懂小白教程
理解此图就算理解一半了。。。。。。。
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算法)来更新网络参数的。
注:笔者也是菜鸡,如有错误,望各位大神指正!!