文章目录
- 前言
- 1. 什么是多任务学习?
- 2. 为何要使用多任务学习?
- 3. 多任务学习有哪些类型?
- 3.1 基于硬参数共享的多任务学习
- 3.2 基于软参数共享的多任务学习
- 4. 为什么多任务学习能提升模型的性能?
- 4.1 隐藏数据扩充(Implicit data augmentation)
- 4.2 注意力聚焦 ( Attention focusing)
- 4.3 窃听(Eavesdropping)
- 4.4 表示偏差(Representation bias)
- 4.5 正则化(Regularization)
- 5 非神经模型的多任务学习
- 5.1 块稀疏正则化
- 5.2 学习任务关系
- 6 深度学习领域的多任务学习
- 6.1 深度关系网络(Deep Relation Networks)
- 6.2 全自适应特征共享(Fully-Adaptive Feature Sharing)
- 6.3 十字绣网络(Cross-stitch Networks)
- 6.4 低监督(Low supervision)
- 6.5 多任务联合模型(A Joint Many-Task Model)
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
本文通过对论文An Overview of Multi-Task Learning in Deep Neural Network的解读来对多任务学习做一个大概的了解,把握多任务学习的方向。
多任务学习的应用领域:自然语言处理、语音识别、计算机视觉、药物发现。
1. 什么是多任务学习?
含义:通过相关任务间的参数或权重的共享,模型的性能表现的更加优越,这便是多任务学习。
界定:同时优化多个损失函数便可界定为多任务学习。
目标:通过利用包含在相关任务的训练参数中特定领域的训练参数,多任务学习提高了模型的泛化能力。
2. 为何要使用多任务学习?
在生物学角度,多任务学习受到人类学习的启发——在认识新事物的时候,人会使用之前认识旧事物时所获得的旧知识。
在教与学角度,不断学习的简单技术能够为我们提供掌握复杂技术的必要技能。
机器学习角度,归纳转移。
3. 多任务学习有哪些类型?
注 :此处的多任务学习类型是指在深度学习领域下的多任务学习类型。
3.1 基于硬参数共享的多任务学习
在各个任务的共有隐藏层中共享权重参数,在各任务的隐藏层中独享参数,这大大降低了模型过拟合的风险;
3.2 基于软参数共享的多任务学习
每个任务都有自己的模型和自己的参数,通过正则化模型中部分隐藏层参数之间的距离来促进参数的相似性。
4. 为什么多任务学习能提升模型的性能?
注:假设存在相似的任务A和B,A与B有相同的隐藏层F。
4.1 隐藏数据扩充(Implicit data augmentation)
多任务学习有效地增加了用于训练模型的样本数量。不同的任务有不同的偏差,一个同时学习两个任务的模型能够学习一个更一般的权重表示。只学习A任务,A任务存在过拟合的风险,而共同学习A任务和B任务可以使模型通过对偏差的平均获得更好的隐藏层F的权重表示。
4.2 注意力聚焦 ( Attention focusing)
若在一个任务中,其数据集中数据偏差较大或数据维度较高且数据量有限,那么单任务获得的一个模型可能很难区分相关的和不相关的特征。由于在多任务学习中其他任务能为原任务中的某些特征提供相关性大小的参考,所以在多任务学习中模型能够将其注意力集中在那些有用的特征上。
4.3 窃听(Eavesdropping)
有些特性G对于B任务很容易学习,而对于A任务则很难学习 (这可能是因为A以一种更复杂的方式与特征进行交互,或者是因为其他特征阻碍了模型学习G的能力)。通过多任务学习,A任务能够窃听到B任务学习到的特征G。
4.4 表示偏差(Representation bias)
多任务学习在训练的过程中偏向于选择其他任务也喜欢的权重参数,这将有助于模型泛化到新任务中,由于模型在来自同一个环境的多个任务中表现良好,那么其在来自相同环境的任务上也会表现良好。
4.5 正则化(Regularization)
多任务学习引入一个归纳偏置来作为一个正则化器。其降低了模型过拟合的风险以及模型的复杂性。
5 非神经模型的多任务学习
存在模型:线性模型、核方法和贝叶斯算法
通过范数正则化来加强任务间的稀疏性;以及建模任务之间的关系
5.1 块稀疏正则化
注:假定存在T个任务,对于其中的每一个任务t,都有与其对应的模型 m t m_t mt和一个维度为d的权重参数向量 a t a_t at:
a t = [ a 1 , t . . . a d , t ] T a_t = \left[ \begin{matrix} a_{1,t}\\ . \\ . \\ . \\ a_{d,t} \end{matrix} \right] ^T at= a1,t...ad,t T
5.2 学习任务关系
6 深度学习领域的多任务学习
6.1 深度关系网络(Deep Relation Networks)
在计算机视觉的MTL中,通常共享卷积层,学习特定任务的全连接层。通过对任务层设定先验,使模型学习任务间的关系。
6.2 全自适应特征共享(Fully-Adaptive Feature Sharing)
首先构建共享参数的权重共享层以及各个分任务的任务层,之后使用贪心算法从底层开始将权重共享层不断拓宽网络(网络结构不变,不同组的权重共享层中的权重参数不一样),贪心方法可能无法做到全局最优。
6.3 十字绣网络(Cross-stitch Networks)
构建两个独立的模型架构,在模型的池化和完全连接的层后放置十字绣单元,从而允许模型学习其他任务的特征,本质上是一种软参数共享的多任务学习,十字绣单元如下,详情请参考Cross-stitch Networks for Multi-task Learning。
6.4 低监督(Low supervision)
低层任务在网络低层建模的性能高于在网络高层建模。低层任务在低层建模,高层任务才能使用低层任务的共享表示,预训练+微调。
6.5 多任务联合模型(A Joint Many-Task Model)
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。