Paper | 学习多任务中的最佳分/ 合结构(十字绣结构)
论文:Cross-stitch Networks for Multi-task Learning
Misra, Ishan, et al. "Cross-stitch networks for multi-task learning." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
Over 160 citations (2019).
1. 问题
假设我们有任务A和B,并且这两个任务存在一定的关联性。最常见的做法是:对相同的输入,A和B共享同一个输入特征提取网络,然后在同样的特征上,各自单独训练,得到最终结果。
至于在哪里分开(独立),我们可以做遍历实验,尝试所有可能的网络结构,如图:

显然,这种暴力穷举法非常笨拙,并且找到的最佳结构也不是通用的。尽管我们缺乏理论指导,但有没有更好的实验方法?
有的!下面介绍的这篇文章Cross-stitch Networks for Multi-task Learning,来自卡耐基梅隆机器人所,是CVPR2016高引论文。
首先,作者选择了两对关联任务:语义分割(Semantic segmentation)和曲面法线预测(Surface normal prediction),以及物体检测(Object detection)和属性预测(Attribute prediction)。根据上图的分、合模式,我们可以得到对应的实验结果:

图中的数据,是与task-specific网络(即上上图最右)比较的结果。作者总结出两点:
- 多任务相较于单任务,有一定的优势;
- 最佳分、合结构因任务而异。
接下来才是我们的重点。
2. 十字绣结构(Cross-stitch architecture)
看图秒懂:

啥?不知道怎么分合?让它变成超参数!
是的,十字绣结构就这么简单。在每一层的输出后,增加这样的分、合结构,然后再接入下一层的输入。
为了保证可导(可反向传播),这里的分合不是开关结构,而是由超参数加权控制。
图中的\(\alpha_S\)意为the same-task values,\(\alpha_D\)意为the different-task values。\(\alpha_S=1\)就是task-spec结构,\(\alpha_D\)越大共享程度越高。
但在引入新结构以后,出现了以下问题:
这些超参数怎么初始化?
为了保证十字绣结构前后数据量级不变,很自然地,我们最好规定初始状态下超参数之和\(\alpha_S+\alpha_D=1\)。
但注意,这只是初始化的规定,在训练过程中超参数可以自由发展。
其次,具体怎么设置,还得靠实验,所以是因任务而异的:

由于这些超参数的初始值是网络中一般参数的一到二倍大,因此在实验中发现,这些超参数调整过慢。
为了加快收敛,这些超参数的学习率被直接乘以10的若干次方。
通过实验发现,10的2到3次方最佳,此时收敛速度更快,实验结果也更好。

- A和B网络如何初始化?统一还是各自初始化?
还是实验解答。
- 在ImageNet特征上,分别进行20K次迭代,得到one-task initialized的两个网络;再进行10K次统一迭代。
- 直接在ImageNet特征上进行30K次迭代。
结果是前者更好:

因此推荐分别各自初始化。
- Det+Attr实验中发现,如果十字绣结构连接每一层的对应channel,会导致学习不稳定。
因此这一对任务的十字绣结构,在每一层之间只用一个。
3. 实验设计
实验关注以下几点:
在4个任务的实验中,使用cross-stitch都达到了对比算法中的最佳效果,个别除外。
一些对比算法的参数规模是本方法的2倍。
对比算法中包括当时最好的结构穷举方法。
在语义分割任务中,不同类别的数据量不同。实验发现,数据量越少的分类,其准确率上升大致上反而越多(十字绣帮助越大):

对于SS和SN组合,它们的最优分、合模式不完全一样(下图横坐标是通道index):

Paper | 学习多任务中的最佳分/ 合结构(十字绣结构)的更多相关文章
- Java学习——方法中传递参数分简单类型与复杂类型(引用类型)编程计算100+98+96+。。。+4+2+1的值,用递归方法实现
package hello; public class digui { public static void main(String[] args) { // TODO Auto-generated ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- 10 个学习iOS开发的最佳网站(转)
10 个学习iOS开发的最佳网站 作者 jopen 2012-09-26 08:59:56 1) Apple Learning Objective C Objective-C,通常写作ObjC和较少用 ...
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
- 【转】C# Async/Await 异步编程中的最佳做法
Async/Await 异步编程中的最佳做法 Stephen Cleary 近日来,涌现了许多关于 Microsoft .NET Framework 4.5 中新增了对 async 和 await 支 ...
- Flink 从0到1学习 —— Flink 中如何管理配置?
前言 如果你了解 Apache Flink 的话,那么你应该熟悉该如何像 Flink 发送数据或者如何从 Flink 获取数据.但是在某些情况下,我们需要将配置数据发送到 Flink 集群并从中接收一 ...
- C#异步编程中的最佳实践(做法)
原文地址Stephen Cleary 写得很详细,尤其讲到了 GUI 上下文调用,在APS.NET中它会阻塞 GUI 线程,从而导致死锁.而控制台中却不存在这个问题. 比如开发过程中本地写控制台程序测 ...
- Zookeeper学习笔记(中)
Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...
- 学习PHP中的国际化日期格式化操作
对于国际化功能来说,日期相关的格式化操作也是一块重头戏,毕竟不同的时区,不同的国家对于日期的表示方式都会有些不同.今天我们主要来学习的就是国际化地表示日期相关的信息内容. 日期格式化 首先就是最直接的 ...
随机推荐
- 随想:目标识别中,自适应样本均衡设计,自适应模型结构(参数可变自适应,模型结构自适应,数据类别or分布自适应)
在现在的机器学习中,很多人都在研究自适应的参数,不需要人工调参,但是仅仅是自动调参就不能根本上解决 ai识别准确度达不到实际生产的要求和落地困难的问题吗?结论可想而知.如果不改变参数,那就得从算法的结 ...
- 大数据入门到精通16--hive 的条件语句和聚合函数
一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...
- python--第十六天总结(bootstrap)
一. 实现原理 网格布局是通过容器的大小,平均分为12份(可以修改),再调整内外边距,和表格布局有点类似但是也存在区别. 实现步骤如下: (1) 数据行.row 必须包含在容器.container 中 ...
- java、asp.net 通用分页码函数
<script type="text/javascript"> $(document).ready(function(){ ajaxGetPaging(1); }); ...
- 获取当前div中的文本(只获取当前div的, 子元素不要, 基于layui)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Exp2 后门原理与实践 20165110
Exp2 后门原理与实践 一.实验要求 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shell, 任务计划启动 3.使用MSF meterpreter(或其 ...
- jquery 中dataTable显示加载中,图片或文字
引入js文件 <script type="text/javascript" src="${basePath}/lib/datatables/1.10.0/jquer ...
- 通过ssh StrictHostKeyChecking解决自动化git项目问题
SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击.但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查. 首 ...
- windows安装MongoDB副本集,通过Java程序实现数据的插入与查询
我本地的环境 MongoDB 4.0 jdk 1.7.x 安装参考主要博客 https://blog.csdn.net/wanght89/article/details/77677271#commen ...
- Java--druidAPI查询
maven依赖<dependency> <groupId>in.zapr.druid</groupId> <artifactId>druidry< ...