多任务深度学习(MultiTask Learning)
来源:互联网 发布:顶级时尚杂志知乎 编辑:程序博客网 时间:2024/06/10 08:06
多任务学习给出多个监督信息(标签),利用任务之间的相关性互相促进。
案例1-人脸识别
香港中文大学汤晓鸥组发表在NIPS14的论文《Deep Learning Face Representation by Joint Identification-Verification》,提出了一种联合训练人脸确认损失和人脸分类损失的多任务人脸识别网络DeepID2(Deep IDentification-verification features),网络结构如下图所示:
DeepID2中共有两个损失函数,分别为人脸分类损失函数,对应于Caffe中的SoftmaxLoss:
另外一个是人脸确认损失函数,对应于Caffe中的Contrastive Loss:
训练过程如下:
补充:
第二次看这篇论文,有了些新的体会:
论文也一直在强调为什么结合分类学习和对比学习效果会更好,论文原话:
“The face identification task increases the inter-personal variations by drawing DeepID2 extracted from different identities apart, while the face verification task reduces the intra-personal variations by pulling DeepID2 extracted from the same identity together”
总结为一句话就是:扩大类间距离和缩小类内距离。
第一次看时不是很理解,现在有了新的看法:
- 分类任务旨在区分不同类,理论上,只要类别不同学习到的特征肯定不同,但是如果类别相同的话就无法保证特征一定相同,可能会出现同一个人脸由于表情不同学习到了不同的特征。
- 验证这个任务从另一个方面提取特征:只要类别相同(即相似),提取到的特征相似,类别不同,特征就不同。但是呢提取到的特征不能用于分类,只能做区分。所以说两个任务具有一定的互补性。
而这篇论文主要目的是为了人脸识别,也就是说验证为主(分类任务是为了进一步提高验证的精度)。所以论文说了这句话:“ while the classification accuracy on identities in the training set is not crucial for us”。
下面实验为证:
案例2-Text-CNN
《Text-Attentional Convolutional Neural Network for Scene Text Detection》一文中介绍了TextCNN在传统CNN基础上加上了两个辅任务(auxiliary tasks)。
- 主任务:判断图片块是否含有字符(text/non-text,二分类问题)
- 辅任务1:给图片块中的字符分类(‘0-9,a-z,A-Z’,62类分类问题)
- 辅任务2:用Binary Mask表示字符位置(回归问题)
传统MTL训练过程中将所有任务的重要性视为相同,但是在这个模型中显然三个任务的重要性不同,比如低层的字符区域学习(辅任务2)比主任务的二分类要复杂得多,这会导致学习难度和收敛速率不同,因此引入的重要性因子
这里
损失函数的具体表示(分别对应上述的三个任务):
其中
训练过程类似于人眼识别图片中是否含有文字的过程:首先从复杂背景中定位文字区域(where),然后识别文字内容是什么(what),最后判断图片中是否含有文字(whether)。
先联合训练两个辅任务,接着停止训练辅任务2,继续训练辅任务1和主任务。
案例3-细粒度车辆分类
《Embedding Label Structures for Fine-Grained Feature Representation》介绍了将SoftmaxLoss和TripletLoss结合在一个网络中进行多任务训练的方法。
网络结构如下:
提醒注意的是为了计算Tiplet Loss,特征进行了L2范数归一操作。图中涉及到的Structured Label是为了进一步提升分类效果。
SoftmaxLoss:
其中
TripletLoss:
其中
最终的Loss:
- 多任务深度学习(MultiTask Learning)
- 多任务学习-Multitask Learning
- 模型汇总-14 多任务学习-Multitask Learning概述
- 迁移学习(transfer learning)、多任务学习(multi-task learning)、深度学习(deep learning)概念摘抄
- 多任务学习(Multi-task learning)
- 多任务深度学习
- 多任务深度学习
- Deep Learning(深度学习)之(十)神经网络在机器学习分类任务中的应用
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- Deep Learning(深度学习)
- 深度学习(Deep Learning)
- oracle入门很简单:三、配置oracle监听程序
- vim 全选复制操作 on mac
- Android 5.0中的CoordinatorLayout使用技巧
- Divide and Conquer&Count Inversions归并排序求逆序数
- 静态工厂类java
- 多任务深度学习(MultiTask Learning)
- Rreact Native 常见错误总结
- css解析原理
- JavaScript-对闭包的理解
- 线段树
- idea 15.0.2 破解
- Java面试题大全(Java基础十)
- leetcode 400. Nth Digit解题报告
- static关键字