Accelerating Deep Unsupervised Domain Adaptation with Transfer Channel Pruning
- 首先是一种UDA(Unsupervised Domain Adaptation),而且是TCP(Transfer Channel Prunnning)
- 测试数据集Office31&ImageCLEF
- 目前的Transfer办法都没有部署Resource Constrained场景
- 表示能够同时完成Prunning和迁移训练
- 还说因为自己考虑了Distribution Discrepancy就可以去避免Negative Transfer
- 传统的Compression方法不能用,以为
- 其场景是Supervised Learning,需要Label去Finetune,但是我们的场景没有
- 传统的方式没有考虑Distribution Discrepancy,会导致Negative Transfer
- AdaBN的方法是否有效?
- 该种方法:对实际场景(Targert Domain)中的数据其实只用到了数据去做前向
Related Works
- UDA(无监督自适应迁移)
- Subspace Learning: 找到一个两个Domain都适用的特殊特征空间
- SDA(Subspace Distribution Alignment) 直接对齐Vevtor
- CORAL:对齐的是特征的二阶统计量(协方差)
- Distribution Alignment
- JDA(Joint Distribution Alignment)
- 去Map到同样的数据分布
- 后来JDA还被改进到使用Domain Invariant Clustering
- 还有一些很数学很玄学的Manifold Embedded Distribution
- JDA(Joint Distribution Alignment)
- NN嵌入到以上的方法中
- Subspace Learning: 找到一个两个Domain都适用的特殊特征空间
- Channel Prunning
- 更fast&efficient
- 实际上没有引入稀疏性,也不需要额外的架构
- 作者认为剪去的是对两个Domain都不重要的,需要经过一个Transfer Channel Evaluation的过程
Implemention
- 两个Domain需要有相同的Label Space(也就是解决的问题是一样的,分类的类别是一样的)
- 首先正常训练并用正常的UDA方法Finetune
- 主体是一个DAN
- 需要计算MMD(Maximum Mean Discrepancys)\
- 而DAN的Backbone可以是VGG或者是Res
- 然后对卷积层做Transfer Channel evaluation做剪枝Finetunes
原本Channel Prunning的指标,贪心地去寻找使Loss变化最小的Channel- 泰勒展开舍弃余项
- 最后化简到
,需要找这个值
- Train-Flow
- 这个贪心很烦!
- iter,直到精度和模型大小满足TradeOFF
- 最后化简到
Experiment
- 对比了3个Scenario
- 传统的2-Stage方法
- 不加MMD-Loss的训练
- 完整的
Code
- (待分析)
- ⌛
🤔THINK
- 拿AdaBN过来到底怎么样(但是ADABN不是UDA呀!fintune得拿东西过来tune啊)
- 但是AdaBN也不拿过来Train呀!所以说其实它也不需要去训练