加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
作者:梁浩赞
https://zhuanlan.zhihu.com/p/52566508
来源:知乎,已获作者授权转载,禁止二次转载。
原论文链接:https://arxiv.org/abs/1706.05098
一旦发现正在优化多于一个的目标函数, 你就可以通过多任务学习来有效求解;
即使对于最特殊的情形下你的优化目标只有一个, 辅助任务仍然有可能帮助你改善主任务的学习性能, 多任务学习通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能。
为了学习一个新的任务,我们通常会使用学习相关任务中所获得的知识;
从教学法的角度来看, 首先学习的任务是那些能够帮助我们掌握更复杂技术的任务;
从机器学习的角度来看, 将多任务学习视为一种归约迁移. 归约迁移通过引入归约偏置来改进模型, 使得模型更倾向于某些假设(例如L1稀疏假设). 在多任务学习场景中,归约偏置是由辅助任务来提供的, 这会导致模型更倾向于那些可以同时解释多个任务的解, 这样会使得模型的泛化性能更好。
它可以应用到所有任务的所有隐层上, 而保留任务相关的输出层, 硬共享机制降低了过拟合的风险, 共享参数过拟合风险的阶数是N, 其中N为任务的数量, 其比任务相关参数的过拟合风险要小;
直观上来说, 越多任务同时学习, 模型就能捕捉到越多任务的同一个表示, 从而导致在我们原始任务上的过拟合风险越小。
参数的软共享机制
每个任务都有自己的模型,自己的参数;
对模型参数的距离进行正则化来保障参数的相似, 例如L2正则化和迹正则化, 用于深度神经网络中的软共享机制的约束很大程度上是受传统多任务学习中正则化技术的影响。
定义两个任务A和B, 两者的共享隐藏层用F表示。
隐式数据增加机制. 多任务学习有效的增加了训练实例的数目. 由于所有任务都或多或少存在一些噪音, 同时学习到两个任务可以得到一个更为泛化的表示. 如果只学习任务A要承担对任务A过拟合的风险, 然而同时学习任务A与任务B对噪音模式进行平均, 可以使得模型获得更好表示F;
注意力集中机制. 若任务噪音严重, 数据量小, 数据维度高, 则对于模型来说区分相关与不相关特征变得困难. 多任务有助于将模型注意力集中在确实有影响的那些特征上, 是因为其他任务可以为特征的相关与不相关性提供额外的证据;
窃听机制. 对于任务B来说很容易学习到某些特征G, 而这些特征对于任务A来说很难学到. 这可能是因为任务A与特征G的交互方式更复杂, 或者因为其他特征阻碍了特征G的学习. 通过多任务学习, 我们允许模型窃听, 即任务A使用任务B来学习特征G;
表示偏置机制. 多任务学习更倾向于学习到一类模型, 这类模型更强调与其他任务也强调的那部分表示. 由于一个对足够多的训练任务都表现很好的假设空间, 对来自于同一环境的新任务也会表现很好, 所以这样有助于模型展示出对新任务的泛化能力;
正则化机制. 多任务学习通过引入归纳偏置起到与正则化相同的作用, 它减小了模型过拟合的风险, 降低了拟合随机噪声的能力。
对任务之间的不同强制添加稀疏性约束的正则化项;
建模任务之间的关系。
Long M, Cao Z, Wang J, et al. Learning multiple tasks with multilinear relationship networks[C]//Advances in Neural Information Processing Systems. 2017: 1594-1603.
(链接:http://papers.nips.cc/paper/6757-learning-multiple-tasks-with-multilinear-relationship-networks.pdf)
共享卷积层
对全连接层添加矩阵先验, 允许模型学习任务间的关系
这个方法依赖于事先预定义的共享结构, 可能对于新任务有错误倾向
Lu Y, Kumar A, Zhai S, et al. Fully-adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attribute Classification[C]//CVPR. 2017, 1(2): 6.
(http://openaccess.thecvf.com/content_cvpr_2017/papers/Lu_Fully-Adaptive_Feature_Sharing_CVPR_2017_paper.pdf)
自底向上, 从瘦的网络开始, 使用对相似任务自动分组的指标, 贪心地动态加宽网络
然而这种贪心的做法并不能做到全局最优, 为每一个分支分配一个精确的任务, 并不能允许模型学到更加复杂的任务间的交互
Misra I, Shrivastava A, Gupta A, et al. Cross-Stitch Networks for Multi-task Learning[C]//Computer Vision and Pattern Recognition (CVPR), 2016 IEEE Conference on. IEEE, 2016: 3994-4003.
(http://openaccess.thecvf.com/content_cvpr_2016/papers/Misra_Cross-Stitch_Networks_for_CVPR_2016_paper.pdf)
将两个独立的网络用参数软共享的方式连接起来
十字绣单元决定怎么将这些任务相关的网络利用其他网络学习得到得知识, 并与前面层的输出进行线性组合
Søgaard A, Goldberg Y. Deep multi-task learning with low level tasks supervised at lower layers[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2016, 2: 231-235.
(链接:https://www.aclweb.org/anthology/P16-2038)
这方面主要是NLP领域中所使用的, 如词性标注和命名体识别等, 应该被作为辅助任务, 在较低层次时进行有监督学习
Hashimoto K, Xiong C, Tsuruoka Y, et al. A joint many-task model: Growing a neural network for multiple NLP tasks[J]. arXiv preprint arXiv:1611.01587, 2016.
(https://arxiv.org/pdf/1611.01587.pdf)
多个NLP任务的层次结构, 并用来做多任务学习的联合模型
采取一种正交的方法来考虑每个任务的不确定性, 基于同方差不确定性度量, 调整每个任务在代价函数中的相对权重, 基于最大化任务相关的不确定性似然函数原理, 来得到多任务学习的目标
需要注意的是, 以下公式在实际的应用中会使得loss变成负值
所以另一篇论文对此做出了改进, 修改了正则项, 使得loss始终保持正值
(链接:https://arxiv.org/pdf/1805.06334.pdf)
Yang Y, Hospedales T. Deep multi-task representation learning: A tensor factorisation approach[J]. arXiv preprint arXiv:1605.06391, 2016.
(链接:https://arxiv.org/pdf/1605.06391.pdf)
将已有的一些使用张量分解技术推广到模型参数划分来分解出每层的共享参数于任务的相关系数
Ruder12 S, Bingel J, Augenstein I, et al. Sluice networks: Learning what to share between loosely related tasks[J]. stat, 2017, 1050: 23.
(链接:https://arxiv.org/pdf/1705.08142.pdf)
对多种基于深度神经网络的多任务学习方法的泛化, 这种模型可以学习到每个层中哪些子空间是需要被共享的, 以及哪些是用来学习到输入序列的一个好的表示的
在以往的大多数多任务学习中, 关注点都在那些处于相同分布的任务. 尽管这种场景对于共享是有益的, 但并不能总是成立, 为了研发更加健壮的多任务模型, 我们必须处理那些不相关的任务
早期用于深度学习的多任务模型需要预定义任务间的共享结构, 但这种策略不适合扩展, 严重依赖于多任务的结构. 尽管参数的硬共享机制在许多场景中有用, 但是若任务间的联系不那么紧密或者或需要多层次的推理, 则硬共享技术很快失效. 若模型已知, 学习一个任务的层次结构也是有用的,尤其在多粒度的场景中
多任务不应仅仅局限于将所有任务的知识都局限于表示为同一个参数空间, 而是更加关注于如何使我们的模型学习到任务间本应该存在的交互模式
对于同时获得多个任务的预测结果的场景, 多任务学习是天然适合的. 但大多数情况下, 我们仅关注一个任务
以下研究讲将如何找到合适的辅助任务, 以便仍然获得多任务学习的好处
使用相关任务作为一个辅助任务, 对于多任务学习来说, 是一个典型的选择
[Caruana, R. (1998). Multitask Learning. Autonomous Agents and Multi-Agent Systems, 27(1):95–133.]将预测不同道路的特征作为辅助任务来帮助预测自动驾驶中汽车转向方向
[Zhang Z, Luo P, Loy C C, et al. Facial landmark detection by deep multi-task learning[C]//European Conference on Computer Vision. Springer, Cham, 2014: 94-108.]使用头部姿态估计和面部属性推断作为面部关键点检测的辅助任务
[Liu, X., Gao, J., He, X., Deng, L., Duh, K., and Wang, Y.-Y. (2015). Representation Learning Using Multi-Task Deep Neural Networks for Semantic Classification and Information Retrieval. NAACL-2015, pages 912–921.]联合学习查询分类和网络搜索
[Girshick, R. (2015). Fast R-CNN. In Proceedings of the IEEE International Conference on Computer Vision, pages 1440–1448.]联合学习一张图片中物体的类别和坐标
[Arık, S. Ö., Chrzanowski, M., Coates, A., Diamos, G., Gibiansky, A., Kang, Y., Li, X., Miller, J., Raiman, J., Sengupta, S., and Shoeybi, M. (2017). Deep Voice: Real-time Neural Text-to-Speech. In ICML 2017.]联合预测文本到语音的音素持续时间和频率分布
通常情况下, 对于一个相关任务来说, 不能得到标注好的数据. 然而, 在一些场合, 我们可以实现任务和我们想要实现的目标是相反的, 这些数据可以用来做对抗损失. 这些损失不是用来做最小化的, 而是使用剃度反转层来最大化训练误差
这种设置在领域自适应方面取得了成功, 对抗任务用于预测输入的领域. 通过对抗任务的梯度求逆, 使对抗任务损失最大化. 这样对主任务是有利的, 可以促使模型学习到不能使用两个域来区分的表示
使用提示机制就是在辅助任务中预测特征
在NLP领域中, 一个例子是情感分析任务将一个输入句子中是否包含正负面情感词作为辅助任务, 另一个例子是错误名字识别任务将判断一个句子是否包含名字作为辅助任务
辅助任务可以用来将注意力集中在网络可能忽略的图像的某部分上, 因为该部分对于整张图像来说可能太小或者是在所有图像中出现频率较小
对于自动驾驶来说, 单模型容易忽略车道标记, 那么就可以将车道标记预测作为一个辅助任务, 强制模型学习表征它们
对于面部识别, 也可以将预测面部关键点的位置作为辅助任务
对于多任务来说, 优化目标是已经被量化的. 通常连续型的目标是更合理的, 而可得到的标注是离散集合, 大多数情况下需要人工评价来收集数据, 例如预测一个疾病的风险(低/中/高)或者是情绪分析(积极/中立/负面)
由于目标函数更加平滑, 所以使用少量量化的辅助任务会使学习变得容易, 即尽量让辅助任务去拟合连续型分布
Caruana R, De Sa V R. Promoting poor features to supervisors: Some inputs work better as outputs[C]//Advances in Neural Information Processing Systems. 1997: 389-395.
(http://papers.nips.cc/paper/1231-promoting-poor-features-to-supervisors-some-inputs-work-better-as-outputs.pdf)
在某些情况下, 使用某些特征作为输入是不切实际的,因为它们对于预测所需目标没有帮助. 然而, 它们可能能指导监督学习的过程. 在这些情况下, 这些特征作为输出而不是输入
许多场景中一些特征仅在做出预测后才可用. 模型有一些额外的数据由于在输入时不可用, 所以不能作为特征输入, 然而, 其可以用于辅助任务来为模型传授额外的知识以辅助训练
例如, 对于自动驾驶汽车, 一旦汽车通过, 就可以更精确地测量障碍物和车道标记; 对于肺炎预测, 在预测了患肺炎之后将提供额外的医学实验结果
Cheng H, Fang H, Ostendorf M. Open-domain name error detection using a multi-task rnn[C]//Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015: 737-746.
(链接:https://www.aclweb.org/anthology/D15-1085)
Rei M. Semi-supervised multitask learning for sequence labeling[J]. arXiv preprint arXiv:1704.07156, 2017.
(链接:https://arxiv.org/pdf/1704.07156.pdf)
多任务学习中辅助任务的目标在于使得模型学习到共享或者有用的表示, 以帮助主任务的学习. 辅助任务都是隐式地在做这件事情, 由于它们和主任务相关, 所以在学习的同时可能允许这些模型学习到有利于主任务的表示
更显示的建模是利用一个已知的任务使模型能够学习得到一个可迁移的表征
寻找辅助任务的一种基本假设是: 辅助任务应该是与主任务密切相关的或者是能够对主任务的学习过程有益的
但是我们并不知道什么样的两个任务是相关的或者相似的. 一些定义是: 若两个任务使用相同的特征来做决策, 那么两个任务是相似的; 理论上讲的相关任务共享一个最优的假设类, 也就是同样的归纳偏置; 若两个任务中的数据都是产生自同一类变换F得到的固定概率分布, 那么两个任务是F相关的. 尽管可以适用于同一个分类问题, 但是不能用于处理不同问题的任务; 若两个任务的边界闭合的, 那么两个任务是相似的
任务相似性不是二值的, 而是一个范围. 更相似的两个任务在多任务学习中收益更大, 而反之依然, 使得我们的模型能够学习到共享哪些参数可能只是暂时克服了理论上的缺失, 以及更好地利用联系不密切的任务; 有人指出具有完备且统一的标注分布的辅助任务对于序列标注主任务应该更加有益
-End-
*延伸阅读
添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~
△长按添加极市小助手
△长按关注极市平台
觉得有用麻烦给个在看啦~