极简笔记 Cross-stitch Networks for Multi-task Learning
论文地址: https://arxiv.org/abs/1604.03539
本篇文章研究的问题是不同层级的网络权值共享对multi-task learning的影响,同时在此基础上提出Cross-stitch units(十字绣单元),以实现自动学习最优网络共享结构。
首先,本篇文章在AlexNet的基础上,在不同层级展开task-specific分支,测试任务各自性能。文章采用<属性分类, 检测>和<平面法向量预测, 语义分割>两组直观上有一定相关性的任务对进行多任务学习。实验结果如上图所示,<属性分类, 检测>任务对,无论specific分支在什么层级,都无法同时提高两个任务的性能,说明这组任务对本质存在矛盾,不能用于共同训练。而<平面法向量预测, 语义分割>则在中间部分出现同时提高性能的现象,说明这组任务对相关性大,同时也显示specific分支层级的选择对最终性能有较大影响。
于是接下来文章就提出了cross-stitch unit,道理很简单,就是原本有两个相同结构不同单任务的网络,然后在每个对应feature map进行逐channel线性组合,然后各自输入到接下来的网络(线性组合参数可学习)。(但是逐channel线性组合在<属性分类, 检测>训练时导致不稳定)
然后就是Ablative analysis。文章指出cross-stitch unit初始参数加和为1(保持convexity),但是训练过程不进行限制,以及其参数学习率大于backbone net学习率有助于加速收敛。此外,先训练两个task-specific network然后加cross-stitch进行finetuning,性能优于直接multi-task训练。文章还是试验了一下cross-stitch不同初始权重最终的训练结果cross-stitch的权值(如下图),结果显示初始权重设定的影响还是很大的,以及从有限的试验结果看比值越大性能越好
文章还利用该结构尝试解决训练样本过少的问题,实验结果显示这种multi-task的形式能够很好地提升小样本的分类性能