问题

什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?

回答
迁移学习:知识的传递与智能的飞跃

想象一下,你学会了骑自行车,是不是很容易就能掌握骑摩托车?又或者,你精通了绘画,再学习雕塑,也能事半功倍。这种将已知知识应用到新领域的学习能力,正是我们今天要探讨的“迁移学习”(Transfer Learning)的核心思想。在人工智能领域,迁移学习是一种强大的技术,它允许我们将在一个任务上训练好的模型,应用到另一个相关但不同的任务上,从而加速学习过程、提高模型性能,并减少对大量新数据的依赖。

简单来说,迁移学习就像是在学习新事物时,“站在巨人的肩膀上”。我们不是从零开始,而是利用已经积累的知识作为起点。

迁移学习的运作方式:剥丝抽茧与重塑新生

迁移学习通常包含以下几个关键步骤:

1. 预训练模型(Pretrained Model)的选择: 这是迁移学习的基石。我们会选择一个在海量数据上(例如ImageNet图像数据集、维基百科文本数据等)训练过的、在某个通用任务上表现出色的模型。这些模型已经学会了识别图像中的基本特征(如边缘、纹理、颜色)或理解语言的结构和语义。例如,在计算机视觉领域,VGG, ResNet, Inception 等模型都是常见的预训练模型。在自然语言处理领域,BERT, GPT 系列模型则是行业的标杆。

2. 特征提取(Feature Extraction)或模型微调(Finetuning): 这是将预训练模型应用到新任务的关键环节。
特征提取: 将预训练模型的早期层(通常是提取通用特征的层)作为固定的特征提取器。这些层的输出将作为新任务的输入,然后我们在这些特征上训练一个新的、较小的模型(例如一个简单的分类器或回归器)。这种方法适用于新任务的数据量较少,且与预训练任务差异不大的情况。
模型微调: 更进一步,我们可以保留预训练模型的绝大部分结构,只对模型的最后几层进行修改,并用新任务的数据对整个模型(或一部分层)进行重新训练(微调)。在微调过程中,学习率通常会设置得比较低,以避免破坏预训练模型已经学到的良好特征。微调通常能取得更好的性能,尤其当新任务的数据量相对较多时。

3. 新任务的应用: 经过特征提取或模型微调后,模型就可以在新任务上进行预测或生成了。

为何迁移学习如此重要?

迁移学习的出现,极大地推动了人工智能的进步,主要体现在以下几个方面:

减少数据需求: 训练一个高性能的深度学习模型通常需要海量标注数据。然而,在许多实际应用场景中,获取大量标注数据是昂贵且耗时的。迁移学习允许我们利用在大型数据集上训练的模型,即使新任务的数据量有限,也能取得不错的表现。这对于医疗影像分析、罕见病诊断等领域尤为重要,因为相关数据往往非常稀缺。
加速训练过程: 从头开始训练一个大型模型需要大量的计算资源和时间。通过使用预训练模型,我们已经具备了一个“良好的起点”,大大缩短了训练时间,降低了计算成本。
提升模型性能: 预训练模型通常学习到了非常丰富和泛化的特征表示。将这些特征迁移到新任务上,可以帮助模型学习到更鲁棒、更具泛化能力的特征,从而在各种下游任务上取得更好的性能,尤其是在处理复杂数据时。
实现更广泛的应用: 迁移学习使得人工智能技术能够更便捷地应用于各种垂直领域和小型项目, democratizing 了深度学习的应用。

迁移学习的历史发展脉络:从萌芽到繁荣

迁移学习并非一夜之间出现的概念,它的发展经历了一个逐步深化和技术迭代的过程:

早期探索(20世纪8090年代): 迁移学习的思想在机器学习早期就已经有所萌芽。研究人员开始探索如何在不同任务之间共享知识,例如在模式识别、迁移学习的理论框架构建等方面进行初步尝试。早期的研究更多集中在符号学习和基于规则的学习。
连接主义的兴起与初步实践(20世纪90年代末 21世纪初): 随着神经网络(神经网络)的复兴,特别是反向传播算法的成熟,研究人员开始将迁移学习应用于神经网络。例如,通过将一个已训练好的神经网络的一部分权重传递到另一个网络中,或在训练过程中引入一个“正则化项”来鼓励新模型保留预训练模型的知识。这一时期,多任务学习(Multitask Learning)和零样本学习(Zeroshot Learning)等相关概念也开始受到关注,它们都旨在让模型具备更强的泛化能力。
深度学习时代的催化(2010年代初至今): 深度学习的爆发是迁移学习发展的黄金时期。随着计算能力的提升(GPU的普及)和大数据集的涌现(如ImageNet),深度神经网络在图像、语音和文本等领域取得了前所未有的成功。
2012年AlexNet在ImageNet竞赛中取得的压倒性胜利,证明了深度卷积神经网络(CNN)的强大之处,并催生了后续一系列优秀的预训练模型(如VGG, GoogLeNet, ResNet等)。这些模型成为了迁移学习的天然基石。研究人员发现,将这些在ImageNet上训练好的模型用于其他视觉任务(如物体检测、语义分割、人脸识别等),效果显著。
自然语言处理(NLP)领域也迎来了迁移学习的春天。 词嵌入技术(如Word2Vec, GloVe)的出现,使得词语的语义信息能够被量化并迁移到下游任务中。随后,Transformer架构的提出,以及BERT、GPT系列等预训练语言模型的诞生,更是将NLP领域的迁移学习推向了极致。 这些模型通过在海量文本数据上进行自监督预训练,学习到了深层的语言表示能力,可以轻松地通过微调适应各种NLP任务,如文本分类、问答、机器翻译等。
方法论的不断创新: 迁移学习的方法也在不断演进,除了传统的特征提取和微调,还出现了许多更精细化的策略:
领域自适应(Domain Adaptation): 解决源域和目标域数据分布不一致的问题,让模型在新领域表现良好。
少样本学习(Fewshot Learning)和零样本学习(Zeroshot Learning): 即使在新任务上只有极少数甚至没有样本,也能进行学习和预测。
元学习(MetaLearning / Learning to Learn): 让模型学会如何“学习”,从而快速适应新任务。
知识蒸馏(Knowledge Distillation): 将一个大型、复杂的预训练模型(教师模型)的知识迁移到一个小型、高效的模型(学生模型)中,以实现模型的压缩和加速。

迁移学习的未来展望:更智能、更普惠的AI

迁移学习在人工智能的未来发展中扮演着至关重要的角色,其前景充满光明:

更通用、更强大的预训练模型: 随着技术的发展,我们将看到在更多模态(如多模态、3D数据)和更复杂任务上训练的预训练模型出现。这些模型将拥有更强的通用性和更深的理解能力。
自动化迁移学习(Autotransfer Learning): 研究将更加关注如何自动化地选择预训练模型、确定最佳的迁移策略,以及自动调整微调的超参数,从而降低迁移学习的使用门槛。
跨领域、跨模态的深度迁移: 未来将有更多研究致力于实现更广泛的迁移,例如将视觉知识迁移到音频任务,或者将常识性知识迁移到具体应用中,实现更深层次的知识融合。
可解释性与鲁棒性: 随着模型规模的增大和应用的深入,迁移学习模型的解释性和鲁棒性将变得更加重要。研究将集中于理解迁移过程中知识是如何传递的,以及如何确保模型在新环境下的稳定性和可靠性。
个性化与定制化AI: 迁移学习将使AI能够更轻松地适应个体的需求和偏好,为每个人提供更加个性化的智能服务。例如,一个为普通用户训练的语音助手,可以通过迁移学习快速适应特定用户的口音、用词习惯甚至情绪状态。
更广泛的社会应用: 迁移学习将继续赋能各个领域,从医疗诊断、自动驾驶到科学研究、教育普及,让先进的AI技术惠及更广泛的人群,解决更多现实世界的挑战。

总而言之,迁移学习不仅仅是一种技术,它更是一种人工智能的学习范式和哲学。它反映了人类学习的本质,即能够从过往的经验中汲取养分,并灵活地应用于新的挑战。随着研究的不断深入和技术的持续创新,迁移学习必将引领人工智能走向一个更加智能、高效和普惠的未来。

网友意见

user avatar

2018.1. 二次更新 / 重点介绍迁移学习和其相关方向,完整删除之前的答案,并重新规整了迁移学习内容和代表性文章。


什么是/为什么要迁移学习?

迁移学习(Transfer learning) 顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习(starting from scratch,tabula rasa)。

迁移学习的粗略介绍

早在2009年,Sinno Jialin Pan 和 Qiang Yang 就发表了一篇迁移学习的survey [link]。他们将迁移学习通过Source (迁移源) / Target (迁移目标) Domain Label 更细节的分支为以下几个方向:

并给出了数学定义:

Given a source domain and learning task , a target domain and learning task , transfer learning aims to help improve the learning of the target predictive function in using the knowledge in and , where , or .

Inductive Transfer Learning

Inductive 的语义解释为归纳,我们可以直接理解为学习适用于Target Domain的网络特征。尤其注意,在 inductive 的迁移学习里,我们有 Target Domain 的 Ground Truth Label,这就意味着我们想要迁移的数据所在 Domain 将直接会学习网络和其特征提供指导作用(假设用深度学习方法,则通过Back-progagation方式)。

Self-Taught Learning

Self-Taught Learning 若直接放在现在深度学习的背景下意义并不明。根据原作者引用的文献来看,他们先从网络上下载大量的图片,通过 Sparse Coding 的方式学习通用普世的图片特征,再直接从中找给定的任务比如图片分类所用的图片特征来做迁移学习。(注意文章发表于09年前,所以那时候 Sparse Coding 的热潮相当于现在 Deep Learning 的热潮)

我们把这个思想放在现在的深度学习上,有点类同于通过 ImageNet 或其他大型数据集学习到的网络特征运用于一个图片分类或其他基于图片特征的任务。

而基于 pre-trained model 的网络训练对于 train-from-scratch 的提升有多少,相信大家对于不同的实验任务里有自己的经验。但不可否认,在绝大多数的情况下,有 ImageNet pre-trained 训练的模型在泛化能力上有或多或少的提升。其中有一篇论文也论述了好的初始值对于模型训练的重要性:[ALL YOU NEED IS A GOOD INIT]

由于神经网络训练局限于一个性质叫 Catastrophic Forgetting,意思是如果我们将 pre-trained 的模型作为初始值训练一个全新的任务,模型之前学习到的特征将灾难性遗忘,也意味着之前网络训练的任务结果将非常糟糕。

由于这一的性质,所有单一基于最原始的深度学习的任务看上去都像暴力求解,只适用于特定任务,并无法得到像人类一样通向普世的学习特征。

当然,也有部分工作尝试寻找解决 Catastrophic Forgetting 的方法,认知度较高的是:

  • Progressive Neural Networks - 通过 Lateral Connection 的方式将一学习好的模型参数通过另一层网络教给一个新的任务。由于在网络设计中,已训练完成的模型将会被 Freeze 因此在 back-propagation 优化参数的方式并不影响已学习完成的网络。这种网络设计很自然的避免了 Catastrophic Forgetting 的出现,但也引出了一些新的问题。
  1. 不断的加入新的任务会引出新的网络分支,以及 lateral connection 分支,这种学习效率显然是很低的,因为我们一次只能学一个任务。
  2. 我们无法确定先学哪个任务将会给后续的任务有一个最好的结果。i.e. 我们不清楚任何关于任务的相关和层级信息,因此找到最优方法需要 n 个任务的排列也就是 n! 种方式,再一次突出了学习效率之低。(better to learn from A -> B or B -> A?)
  • Overcoming catastrophic forgetting in neural networks - 显然 DeepMind 自己也不会满足这样的网络设计,对此问题再次进行研究。这次他们不直接用于 Deep Learning 的 back-propagation 方式而专注于 Bayesian Learning 通过 Full Bayesian posterior distribution 来计算网络参数。他们的方法,Elastic Weight Consolidation (EWC), 通过 Laplace Approximation 的方式来计算 Bayesian 那也无法进行数值计算的 log-likelihood,最后取得相当不错的效果。更多 comment 和介绍可参看这篇博文 [link]

Multi-task Learning

多任务学习 (multi-task learning) 与上个章节介绍的方向最大的不同是我们需要把 Source 和 Target 两个或者更多任务同时学好。在多任务学习中,任一任务的训练目标都是同等重要的。因此,这里 Source/Target Domain 的分类姑且没有太大意义(除非特定情况)。

进行多任务学习我们主要希望观察并研究:

  1. 多任务学习是否可以帮助网络学习一个泛化能力更好的特征?
  2. 通过多任务学习,我们能否寻找并理解不同任务的相关性和层级性?

最简单直接的多任务学习网络就是直接应用一个普通的网络结构在最后输出层前分叉到不同的任务预测层。而这样的设计真的可以帮助网络学习到好的特征么?

  • Cross-stitch Networks for Multi-task Learning - 这篇文章就直接暴力了测试了所有分叉的可能性,并指出不同的任务在不同的分叉上效果。后续他们提出了一个叫 Cross-Stitch Network 的网络结构,通过矩阵中 linear combination 的方式来融合不同任务里学到的特征。
  • Multi-task Self-Supervised Visual Learning - 类似的想法也出现在 Zisserman 最新的文章里。与 Cross-stitch Network 最大的不同是,这篇文章里并未将不同的任务分成不同的网络分支,而使用单一的网络结构,仅仅在基于 ResNet-101 的网络结构尾部 block 3 里的 23个 residual unit 通过 sparse linear combination的方式来输出各自的任务预测层。

除了网络设计,多任务学习中还有一个 Open Question 就是,如何寻找训练权重?

由于任务难度和数据集不同的缘故,在进行多任务学习中,有一种情况是网络中学到的特征被某一任务 dominate。一个简单的例子:我们同时训练 MNIST 和 ImageNet。由于我们知道MNIST是一个极其简单的数据集,而ImageNet是一个数据量大且复杂的多的数据集。那么模型训练将飞快的收敛 MNIST 的识别任务,且慢慢变成是基于 MNIST 特征网络的初始值的 ImageNet 训练。

近期 Kaiming He 提出的 Focal Loss for Dense Object Detection 重新刷新了我们对分类和识别任务的认知,尤其对 gradient propagation 的重要性有了新的理解。那么我们能否也找到一种类似的改进 loss function 的方法来帮助网络去训练一个 unbiased feature representation 呢?

对于 Multi-task Learning 的更多介绍可参考这个博文:An Overview of Multi-Task Learning for Deep Learning

Transductive Transfer Learning

Transductive 的字面意思是转导,通常来说要比 inductive transfer learning 要难的多。由于直接缺乏 Target Domain Label,在这个情况,我们只能依赖于 Source Domain 信息来尽可能的训练出泛化能力强的特征。

Domain Adaptation / Generalisation

Domain Adaptation 目标是学习 domain-invariant feature 使得学习到的特征不受限于 Source Domain 而导致 over-fitting。其主要会测试于 Office Dataset - Domain Adaptation - UC Berkeley,其中分为三个 Domain 其一是 Amazon 上扒的图片,另外两个是实体拍摄图片但一个高分辨率一个是低分辨率。

比较具有代表性的作品:

  • Unsupervised Domain Adaptation by Backpropagation - 个人很喜欢这篇文章。这篇文章的新颖点是利用 classifier 在 Source 和 Target Domain 的相似性,通过 Source Domain 的 back-propagation 同时算出 Source 和 Target Domain 的 gradient 并将两者梯度结合来更新 feed-forward 的 feature extractor 。这样的设计会将 feature extractor 在没有 Target Label 的情况下也能学会 Target Domain 的 feature。
  • Learning Transferable Features with Deep Adaptation Networks - 本文作者是清华大学的 Mingsheng Long 也是 Domain Adaptation 的专家,可从 Google Scholar 上看出他的近乎所有文章都在研究这个问题。这篇文章包括作者后续的文章里都用到了一个叫作 max mean discrepancies (MMD) 定义为 Source Target Domain 的 feature 距离方式。将此距离包含于 loss function 会有助于网络避免出现 co-variant shift 使得学习到的特征是 domain-invariant。

因此不可否认,现在尝试解决 Domain Adaptation 的方法都不得不利用 Target Domain 的信息去缩小 co-variant shift. 完全只利用于 Source Domain 的信息仍然是个重要的课题。

Unsupervised Transfer Learning

在这个方向可适用于的任务非常有限,比如 Dimension Reduction。由于缺乏 Source Label 因此也无法采用绝大部分的 Deep Learning 方法,(但比如Auto-encoder 是其中一个基于 Deep Learning 的降维方式,但很难归类于 Transfer Learning)。因此这里不展开讨论了。

关于迁移学习大致概括到此为止,更多相关文献希望读者直接找相关的论文研读。

后面是我提出一些公开问题,让大家重新思考迁移学习的意义和重要性。

重新思考1:迁移学习一定有用吗?

事实上,即使在前文 survey 的数学定义里都提到了迁移学习是 "aim to improve"。但事实上,在特定情况下迁移学习甚至会产生相反的效果。这种情况叫 negative transfer。在进行迁移学习的时候,我们都默认不同的任务具备相关性,但如何定义相关性,如何数学描述任务之间相关性的强弱都是偏向人类的主观决定。我们经常使用 ImageNet 作为 fine-tuning 的 pre-trained model 因为 ImageNet 本身数据集之大保证了学习的网络有较高的泛化性,但如果用的小的数据集呢?结果还会一样么?还是会比从零学习的网络更差?

e.g. DeepMind 新出的 AlphaGo Zero 就是从零学习的比前一个版本基于人类图谱的 AlphaGo Lee 要强的多。

重新思考2:多任务学习一定在学通用的特征吗?

即使有相当多的实验结果表明,多任务学习比单任务学习的准确率较高,或者说泛化能力更强。但是多任务学习是否真正在学通用的特征我们无从得知。也有可能多任务学习仅仅是部分神经元负责负责特定网络,由于这多任务的分配导致网络结构比单任务小了而提高准确度我们也可说不是不可能。如何理解多任务网络结构,如何观察并确认特征的泛化能力也是一个重要的问题。

一些总结和展望

迁移学习无疑是机器学习里重要的问题之一。理解迁移学习不仅可以让我们理解学习到的特征而且让我们重新理解了神经网络”学习“的本质和方式。近期在迁移学习上的文章和研究不断的增多,但仍然有很多公开问题值得我们去挖掘和思考。希望这篇回答能给读者对迁移学习有着一定的认知,后期我会继续更新此回答如果有高价值的研究更新。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有