迁移学习(Transfer)、强化学习(Reinforcement) & 多任务

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 迁移学习(Transfer)、强化学习(Reinforcement) & 多任务

13.迁移学习(Transfer)

1. 什么是迁移学习

迁移学习(Transfer Learning)是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。

2. 为什么需要迁移学习?

  1. 大数据与少标注的矛盾:虽然有大量的数据,但往往都是没有标注的,无法训练机器学习模型。人工进行数据标定太耗时。
  2. 大数据与弱计算的矛盾:普通人无法拥有庞大的数据量与计算资源。因此需要借助于模型的迁移。
  3. 普适化模型与个性化需求的矛盾:即使是在同一个任务上,一个模型也往往难以满足每个人的个性化需求,比如特定的隐私设置。这就需要在不同人之间做模型的适配。
  4. 特定应用(如冷启动)的需求

3. 迁移学习的基本问题有哪些?

基本问题主要有3个:

  • How to transfer: 如何进行迁移学习?(设计迁移方法)
  • What to transfer: 给定一个目标领域,如何找到相对应的源领域,然后进行迁移?(源领域选择)
  • When to transfer: 什么时候可以进行迁移,什么时候不可以?(避免负迁移)

4. 迁移学习有哪些常用概念?

  • 基本定义
  • 域(Domain):数据特征和特征分布组成,是学习的主体
  • 源域 (Source domain):已有知识的域
  • 目标域 (Target domain):要进行学习的域
  • 任务 (Task):由目标函数和学习结果组成,是学习的结果
  • 按特征空间分类
  • 同构迁移学习(Homogeneous TL): 源域和目标域的特征空间相同,

1698842846441.png

  • 按迁移情景分类
  • 归纳式迁移学习(Inductive TL):源域和目标域的学习任务不同
  • 直推式迁移学习(Transductive TL):源域和目标域不同,学习任务相同
  • 无监督迁移学习(Unsupervised TL):源域和目标域均没有标签
  • 按迁移方法分类
  • 基于样本的迁移 (Instance based TL):通过权重重用源域和目标域的样例进行迁移

基于样本的迁移学习方法 (Instance based Transfer Learning) 根据一定的权重生成规则,对数据样本进行重用,来进行迁移学习。下图形象地表示了基于样本迁移方法的思想源域中存在不同种类的动物,如狗、鸟、猫等,目标域只有狗这一种类别。在迁移时,为了最大限度地和目标域相似,我们可以人为地提高源域中属于狗这个类别的样本权重。

1698842859928.jpg


  • 基于特征的迁移 (Feature based TL):将源域和目标域的特征变换到相同空间

基于特征的迁移方法 (Feature based Transfer Learning) 是指将通过特征变换的方式互相迁移,来减少源域和目标域之间的差距;或者将源域和目标域的数据特征变换到统一特征空间中,然后利用传统的机器学习方法进行分类识别。根据特征的同构和异构性,又可以分为同构和异构迁移学习。下图很形象地表示了两种基于特征的迁移学习方法。

1698842872033.jpg

  • 基于模型的迁移 (Parameter based TL):利用源域和目标域的参数共享模型

基于模型的迁移方法 (Parameter/Model based Transfer Learning) 是指从源域和目标域中找到他们之间共享的参数信息,以实现迁移的方法。这种迁移方式要求的假设条件是: 源域中的数据与目标域中的数据可以共享一些模型的参数。下图形象地表示了基于模型的迁移学习方法的基本思想。

1698842889045.jpg

  • 基于关系的迁移 (Relation based TL):利用源域中的逻辑网络关系进行迁移

基于关系的迁移学习方法 (Relation Based Transfer Learning) 与上述三种方法具有截然不同的思路。这种方法比较关注源域和目标域的样本之间的关系。下图形象地表示了不同领域之间相似的关系。

1698842901180.jpg

1698842907262.jpg

5. 迁移学习与传统机器学习有什么区别?

1698842916235.jpg

6. 迁移学习的核心及度量准则?

迁移学习的总体思路可以概括为:开发算法来最大限度地利用有标注的领域的知识,来辅助目标领域的知识获取和学习。

迁移学习的核心是:找到源领域和目标领域之间的相似性,并加以合理利用。这种相似性非常普遍。比如,不同人的身体构造是相似的;自行车和摩托车的骑行方式是相似的;国际象棋和中国象棋是相似的;羽毛球和网球的打球方式是相似的。这种相似性也可以理解为不变量。以不变应万变,才能立于不败之地。

有了这种相似性后,下一步工作就是, 如何度量和利用这种相似性。度量工作的目标有两点:一是很好地度量两个领域的相似性,不仅定性地告诉我们它们是否相似,更定量地给出相似程度。二是以度量为准则,通过我们所要采用的学习手段,增大两个领域之间的相似性,从而完成迁移学习。

一句话总结: 相似性是核心,度量准则是重要手段。

7. 迁移学习与其他概念的区别?

  • 迁移学习与多任务学习关系:
  • 多任务学习:多个相关任务一起协同学习;
  • 迁移学习:强调信息复用,从一个领域(domain)迁移到另一个领域。
  • 迁移学习与领域自适应:领域自适应:使两个特征分布不一致的domain一致。
  • 迁移学习与协方差漂移:协方差漂移:数据的条件概率分布发生变化。

8. 什么情况下可以使用迁移学习?

迁移学习最有用的场合是,如果你尝试优化任务B的性能,通常这个任务数据相对较少。 例如,在放射科中你知道很难收集很多射线扫描图来搭建一个性能良好的放射科诊断系统,所以在这种情况下,你可能会找一个相关但不同的任务,如图像识别,其中你可能用 1 百万张图片训练过了,并从中学到很多低层次特征,所以那也许能帮助网络在任务在放射科任务上做得更好,尽管任务没有这么多数据。

假如两个领域之间的区别特别的大,不可以直接采用迁移学习,因为在这种情况下效果不是很好。在这种情况下,推荐以上的方法,在两个相似度很低的domain之间一步步迁移过去(踩着石头过河)。

9. 什么是finetune?

深度网络的finetune也许是最简单的深度网络迁移方法。Finetune,也叫微调、fine-tuning, 是深度学习中的一个重要概念。简而言之,finetune就是利用别人己经训练好的网络,针对自己的任务再进行调整。从这个意思上看,我们不难理解finetune是迁移学习的一部分。

为什么需要已经训练好的网络?

在实际的应用中,我们通常不会针对一个新任务,就去从头开始训练一个神经网络。这样的操作显然是非常耗时的。尤其是,我们的训练数据不可能像ImageNet那么大,可以训练出泛化能力足够强的深度神经网络。即使有如此之多的训练数据,我们从头开始训练,其代价也是不可承受的。

为什么需要 finetune?

因为别人训练好的模型,可能并不是完全适用于我们自己的任务。可能别人的训练数据和我们的数据之间不服从同一个分布;可能别人的网络能做比我们的任务更多的事情;可能别人的网络比较复杂,我们的任务比较简单。

10. 什么是深度网络自适应?

深度网络的 finetune 可以帮助我们节省训练时间,提高学习精度。但是 finetune 有它的先天不足:它无法处理训练数据和测试数据分布不同的情况。而这一现象在实际应用中比比皆是。因为 finetune 的基本假设也是训练数据和测试数据服从相同的数据分布。这在迁移学习中也是不成立的。因此,我们需要更进一步,针对深度网络开发出更好的方法使之更好地完成迁移学习任务。

以我们之前介绍过的数据分布自适应方法为参考,许多深度学习方法都开发出了自适应层(AdaptationLayer)来完成源域和目标域数据的自适应。自适应能够使得源域和目标域的数据分布更加接近,从而使得网络的效果更好。

11. GAN在迁移学习中的应用

生成对抗网络 GAN(Generative Adversarial Nets) 受到自博弈论中的二人零和博弈 (two-player game) 思想的启发而提出。它一共包括两个部分:

  • 一部分为生成网络(Generative Network),此部分负责生成尽可能地以假乱真的样本,这部分被成为生成器(Generator);
  • 另一部分为判别网络(Discriminative Network), 此部分负责判断样本是真实的,还是由生成器生成的,这部分被成为判别器(Discriminator) 生成器和判别器的互相博弈,就完成了对抗训练。

GAN的优缺点

优点

  • GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链
  • 相比其他所有模型,GAN可以产生更加清晰,真实的样本
  • 无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域
  • GANs是渐进一致的,但是VAE是有偏差的
  • GAN应用到一些场景上,比如图片风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难

缺点

  • 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到
  • GAN不适合处理离散形式的数据,比如文本
  • GAN存在训练不稳定、梯度消失、模式崩溃的问题

如何训练GAN网络?

  • 输入规范化到(-1,1)之间,最后一层的激活函数使用tanh (BEGAN除外)
  • 使用wassertein GAN的损失函数,
  • 如果有标签数据的话,尽量使用标签,也有人提出使用反转标签效果很好,另外使用标签平滑,单边标签平滑或者双边标签平滑
  • 使用mini-batch norm,如果不用batch norm可以使用instance norm或者weight norm
  • 避免使用RELU和pooling层,减少稀疏梯度的可能性,可以使用leakyrelu激活函数
  • 优化器尽量选择ADAM,学习率不要设置太大,初始1e-4可以参考,另外可以随着训练进行不断缩小学习率,
  • 给D的网络层增加高斯噪声,相当于是一种正则等等

GAN 的目标很明确:生成训练样本。这似乎与迁移学习的大目标有些许出入。然而,由于在迁移学习中,天然地存在一个源领域,一个目标领域,因此,我们可以免去生成样本的过程,而直接将其中一个领域的数据 (通常是目标域) 当作是生成的样本。此时,生成器的职能发生变化,不再生成新样本,而是扮演了特征提取的功能:不断学习领域数据的特征使得判别器无法对两个领域进行分辨。这样,原来的生成器也可以称为特征提取器 (Feature Extractor)。

14.强化学习(Reinforcement) & 多任务

1. 什么是强化学习

其他许多机器学习算法中学习器都是学得怎样做,而强化学习(Reinforcement Learning, RL)是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewards,还会影响之后的状态和一系列的rewards。RL最重要的3个特定在于:

  1. 基本是以一种闭环的形式;
  2. 不会直接指示选择哪种行动(actions);
  3. 一系列的actions和奖励信号(reward signals)都会影响之后较长的时间。

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题 。

1698842929619.jpg

上图中agent代表自身,如果是自动驾驶,agent就是车;如果你玩游戏它就是你当前控制的游戏角色,如马里奥,马里奥往前走时环境就一直在发生变化,有小怪物或者障碍物出现,它需要通过跳跃来进行躲避,就是要做action(如向前走和跳起的动作);无人驾驶的action就是车左转、右转或刹车等等,它无时无刻都在与环境产生交互,action会反馈给环境,进而改变环境,如果自动驾驶的车行驶目标是100米,它向前开了10米,那环境就发生了变化,所以每次产生action都会导致环境改变,环境的改变会反馈给自身(agent),就是这样的一个循环;反馈又两种方式:

  1. 做的好(reward)即正反馈,
  2. 做得不好(punishment惩罚)即负反馈。

Agent可能做得好,也可能做的不好,环境始终都会给它反馈,agent会尽量去做对自身有利的决策,通过反反复复这样的一个循环,agent会越来越做的好,就像孩子在成长过程中会逐渐明辨是非,这就是强化学习。

2. 强化学习模型

1698842941238.jpg

如上图左边所示,一个agent(例如:玩家/智能体等)做出了一个action,对environment造成了影响,也就是改变了state,而environment为了反馈给agent,agent就得到了一个奖励(例如:积分/分数),不断的进行这样的循环,直到结束为止。

上述过程就相当于一个马尔可夫决策过程,为什么这样叫呢?因为符合马儿可夫假设

  • 当前状态 St 只由上一个状态 St-1 和行为所决定,而和前序的更多的状态是没有关系的。

上图右边所示,S0 状态经过了 a0 的行为后,获得了奖励 r1 ,变成了状态S1,后又经过了 a0 行为得到奖励 r2,变成了状态 S2 ,如此往复循环,直到结束为止。

2.1 打折的未来奖励

通过以上的描述,大家都已经确定了一个概念,也就是agent(智能体)在当下做出的决定肯定使得未来收益最大化,那么,一个马儿可夫决策过程对应的奖励总和为:

1698842956545.png

接下来,当前的情况下做出的动作是能够得到结果的,但对于未来的影响是一个不确定的,这也符合我们的真实世界,比如谁都不知道一只蝴蝶只是煽动了一次翅膀会造成飓风式的影响(蝴蝶效应)。所以,当前的行为对于未来是不确定性的,要打一个折扣,也就是加入一个系数gamma,是一个 0 到 1 的值:

1698842973758.png

离当前越远的时间,gamma的惩罚系数就会越大,也就是越不确定。为的就是在当前和未来的决策中取得一个平衡。gamma取 0 ,相当于不考虑未来,只考虑当下,是一种很短视的做法;而gamma取 1 ,则完全考虑了未来,又有点过虑了。所以一般gamma会取 0 到 1 之间的一个值。

Rt 可以用 Rt+1 来表示,写成递推式:

1698842985260.png

2.2 Q-Learning算法

Q(s, a)函数(Quality),质量函数用来表示智能体在s状态下采用a动作并在之后采取最优动作条件下的打折的未来奖励(先不管未来的动作如何选择):

1698842999918.png

这就是著名的贝尔曼公式。贝尔曼公式实际非常合理。对于某个状态来讲,最大化未来奖励相当于 最大化即刻奖励与下一状态最大未来奖励之和。

Q-learning的核心思想是:我们能够通过贝尔曼公式迭代地近似Q-函数。

2.3 Deep Q Learning(DQN)

Deep Q Learning(DQN)是一种融合了神经网络和的Q-Learning方法。

2.3.1 神经网络的作用

1698843013165.jpg

使用表格来存储每一个状态 state, 和在这个 state 每个行为 action 所拥有的 Q 值. 而当今问题是在太复杂, 状态可以多到比天上的星星还多(比如下围棋). 如果全用表格来存储它们, 恐怕我们的计算机有再大的内存都不够, 而且每次在这么大的表格中搜索对应的状态也是一件很耗时的事. 不过, 在机器学习中, 有一种方法对这种事情很在行, 那就是神经网络.

我们可以将状态和动作当成神经网络的输入, 然后经过神经网络分析后得到动作的 Q 值, 这样我们就没必要在表格中记录 Q 值, 而是直接使用神经网络生成 Q 值.

还有一种形式的是这样, 我们也能只输入状态值, 输出所有的动作值, 然后按照 Q learning 的原则, 直接选择拥有最大值的动作当做下一步要做的动作.

我们可以想象, 神经网络接受外部的信息, 相当于眼睛鼻子耳朵收集信息, 然后通过大脑加工输出每种动作的值, 最后通过强化学习的方式选择动作.

2.3.2 神经网络计算Q值

这一部分就跟监督学习的神经网络一样了我,输入状态值,输出为Q值,根据大量的数据去训练神经网络的参数,最终得到Q-Learning的计算模型,这时候我们就可以利用这个模型来进行强化学习了。

1698843026110.jpg

3. 强化学习和监督学习、无监督学习的区别

  • 监督式学习就好比你在学习的时候,有一个导师在旁边指点,他知道怎么是对的怎么是错的。

强化学习会在没有任何标签的情况下,通过先尝试做出一些行为得到一个结果,通过这个结果是对还是错的反馈,调整之前的行为,就这样不断的调整,算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果。

  • 监督式学习出的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出。监督学习做了比较坏的选择会立刻反馈给算法。

强化学习出的是给机器的反馈 reward function,即用来判断这个行为是好是坏。 另外强化学习的结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏。

  • 监督学习的输入是独立同分布的。

强化学习面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入。

  • 监督学习算法不考虑这种平衡,就只是 exploitative。

强化学习,一个 agent 可以在探索和开发(exploration and exploitation)之间做权衡,并且选择一个最大的回报。

  • 非监督式不是学习输入到输出的映射,而是模式(自动映射)。

对强化学习来说,它通过对没有概念标记、但与一个延迟奖赏或效用(可视为延迟的概念标记)相关联的训练例进行学习,以获得某种从状态到行动的映射。

强化学习和前二者的本质区别:没有前两者具有的明确数据概念,它不知道结果,只有目标。数据概念就是大量的数据,有监督学习、无监督学习需要大量数据去训练优化你建立的模型。

1698843042765.jpg

4. 什么是多任务学习

在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI。为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务。然后,我们通过精细调参,来改进模型直至性能不再提升。尽管这样做可以针对一个任务得到一个可接受得性能,但是我们可能忽略了一些信息,这些信息有助于在我们关心的指标上做得更好。具体来说,这些信息就是相关任务的监督数据。通过在相关任务间共享表示信息,我们的模型在原始任务上泛化性能更好。这种方法称为多任务学习(Multi-Task Learning)

在不同的任务中都会有一些共性,而这些共性就构成了多任务学习的一个连接点,也就是任务都需要通过这个共性能得出结果来的。比如电商场景中的点击率和转化率,都要依赖于同一份数据的输入和神经网络层次。多语种语音识

1698843054416.jpg


相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
|
9月前
|
机器学习/深度学习 数据可视化 大数据
深度学习实践篇 第七章:transfer learning for computer vision
简要介绍如何使用预训练好的模型做训练。
|
10月前
|
机器学习/深度学习 算法 数据挖掘
【计算机视觉】Zero-shot, One-shot和Few-shot
机器学习任务按照对 **样本量** 的需求可以分为:传统监督式学习、Few-shot Learning、One-shot Learning、Zero-shot Learning。
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(3)
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型
144 0
|
12月前
|
机器学习/深度学习 自然语言处理 算法
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(1)
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型
|
12月前
|
机器学习/深度学习 自然语言处理
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(2)
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型
106 0
|
机器学习/深度学习 Java C#
迁移学习Transfer Learning 详解
迁移学习Transfer Learning 详解
173 0
|
机器学习/深度学习 编解码 数据可视化
AAAI2023 | DeMT: CNN+Transformer实现多任务学习(分割/深度等)
人类视觉可以从一个视觉场景执行不同的任务,如分类、分割、识别等。因此,多任务学习(MTL)研究是计算机视觉领域的热点。期望开发一个强大的视觉模型,以在不同的视觉场景中同时执行多个任务,有望高效工作。如图1所示,本文旨在开发一个强大的视觉模型同时学习多个任务,包括语义分割、人体部位分割、深度估计、边界检测、显著性估计和normal estimation。
AAAI2023 | DeMT: CNN+Transformer实现多任务学习(分割/深度等)
|
机器学习/深度学习 人工智能
Transformer 与 Bayesian深度学习
Transformer 与 Bayesian深度学习
200 0
|
自然语言处理
ICLR2021对比学习(Contrastive Learning)NLP领域论文进展梳理(一)
ICLR2021对比学习(Contrastive Learning)NLP领域论文进展梳理(一)
397 0
ICLR2021对比学习(Contrastive Learning)NLP领域论文进展梳理(一)