迁移学习通过将源任务学习到的经验应用到目标任务,从而让目标任务的训练更灵活高效,也更贴近现实情况——往往要解决的目标问题可能很难直接学习,因为训练数据不足或者无法直接与环境交互难以获得训练数据。因此将迁移学习应用到强化学习中,势必能帮助强化学习更好地落地到实际问题。本文将从迁移学习、强化学习中的迁移学习、强化学习中的迁移技术最新进展三个部分向大家分享。
Part 1 迁移学习
一、迁移学习是什么?
机器学习技术在许多领域取得了重大成功,但是,许多机器学习方法只有在训练数据和测试数据在相同的特征空间中或具有相同分布的假设下才能很好地发挥作用。当分布发生变化时,大多数统计模型需要使用新收集的训练数据重建模型。在许多实际应用中,重新收集所需的训练数据并重建模型的代价是非常昂贵的,在这种情况下,我们需要在任务域之间进行知识迁移 (Knowledge Transfer) 或迁移学习 (Transfer Learning),避免高代价的数据标注工作。
比如说,我们在一个感兴趣的领域中有一个分类任务,但我们只在另一个感兴趣的领域中有足够的训练数据,其中后者的数据可能在不同的特征空间中或遵循不同的数据分布,我们希望能够从后者中将知识进行迁移从而帮助完成前者的任务。现实生活中就有许多迁移学习的例子,比如说,掌握 C++语言有助于快速上手 Java、Python 等。人们可以聪明地应用以前学到的知识来更快更有效地解决新的问题,这就是一种迁移学习。
迁移学习的定义[1] 如下:给定一个源域 Ds 和学习任务 Ts,一个目标域 Dt 和学习任务 Tt,迁移学习致力于通过使用源域 Ds 和源任务 Ts 中的知识,帮助提升目标域 Dt 中的目标预测函数 f_T() 的学习,其中 Ds≠Dt,或者 Ts≠Tt。
二、迁移学习的三个主要研究问题
在迁移学习中主要研究以下三个问题:
迁移什么
如何迁移
何时迁移
「迁移什么」指的是跨域或跨任务迁移哪一部分知识。一些知识可能是特定于单个域或任务的,而一些知识可能在不同域之间是相同的,通过迁移知识的选择可以帮助提高目标域或任务的性能。目前,迁移学习的内容主要可分为四类:实例迁移、特征表示迁移、参数迁移、关系知识迁移。
在发现可以迁移的知识之后,需要开发学习算法来迁移知识,这就是「如何迁移」的问题。
而「何时迁移」指的是在什么情况下可以进行迁移,在哪些情况下不应该迁移。在某些情况下,当源域和目标域彼此不相关时,强行进行迁移可能会失败。而在最坏的情况下,它甚至可能损害目标域的学习表现,这种情况通常被称为负迁移。当前有关「迁移什么」和「如何迁移」的大多数迁移学习工作都暗含源域和目标域彼此相关这一假设。但是,如何避免负迁移仍旧是迁移学习领域受关注的问题。