清华大学大数据研究中心作者魔王报道

清华大学开源迁移学习算法库:基于PyTorch实现,支持轻松调用已有算法

近日,清华大学大数据研究中心机器学习研究部开源了一个高效、简洁的迁移学习算法库 Transfer-Learn,并发布了第一个子库——深度领域自适应算法库(DALIB)。

清华大学大数据研究中心机器学习研究部长期致力于迁移学习研究。近日,该课题部开源了一个基于 PyTorch 实现的高效简洁迁移学习算法库:Transfer-Learn。使用该库,可以轻松开发新算法,或使用现有算法。

项目地址:https://github.com/thuml/Transfer-Learning-Library

目前,该项目发布了第一个子库——领域自适应算法库(DALIB),其支持的算法包括:

  • Domain Adversarial Neural Network (DANN)

  • Deep Adaptation Network (DAN)

  • Joint Adaptation Network (JAN)

  • Conditional Domain Adversarial Network (CDAN)

  • Maximum Classifier Discrepancy (MCD)

  • Margin Disparity Discrepancy (MDD)

领域自适应背景介绍

目前,深度学习模型在一部分计算机视觉、自然语言处理任务中超越了人类的表现,但是它们的成功通常依赖于大规模标记数据。在实际应用场景中,标记数据往往是稀缺的。

解决标记数据稀缺问题的一个方法是通过计算机模拟生成训练数据,例如使用计算机图形学技术合成训练数据(如下图所示)。此外,还可以从相关的领域 “借用” 标记数据。

但是,在此场景下,训练数据和测试数据不再服从独立同分布,使训练得到的深度网络准确率大打折扣。为了解决数据集偏移造成的泛化难题,领域自适应 (Domain Adaptation) 的概念被提出。

领域自适应的目标是将机器学习模型在源领域 (Source) 学到的知识迁移到目标领域 (Target)。例如在计算机模拟生成训练数据的例子中,合成数据是源领域,真实场景的数据是目标领域。领域自适应有效地缓解了深度学习对于人工标记数据的依赖,受到学术界和工业界的广泛关注。目前已广泛应用到图像分类图像分割目标检测、情感分析、机器翻译等众多任务上。

吴恩达曾说过:「在监督学习之后,迁移学习将引领下一轮机器学习技术商业化浪潮。」图灵奖得主 Bengio 也认为迁移能力是深度学习进一步发展的基础能力之一。随着产品级机器学习应用进入数据稀缺领域,监督学习得到的尖端模型性能大打折扣,领域自适应变得越来越重要。

研究现状

深度领域自适应方法主要包括以下三大类:

  1. 统计距离。通过最小化源领域和目标领域分布的统计距离,实现不同领域特征分布对齐。例如深度适配网络 DAN、联合适配网络 JAN。

  2. 对抗训练。领域对抗网络 DANN 是最早的工作,它引入领域判别器,鼓励特征提取器学习领域无关的特征。在 DANN 的基础上衍生出了一系列方法,例如条件领域对抗网络 CDAN、最大分类器差异 MCD。

  3. 理论启发。通过严格的理论推导,得到可以显式控制迁移学习泛化误差的算法,如间隔分歧散度 MDD 等。

DANN 网络架构图。

MDD 网络架构图。

上述方法在实验数据上表现出良好的性能。然而目前学术界领域自适应方法的开源实现存在下述问题:

  • 复用性差。领域自适应方法和模型架构、数据集耦合在一起,不利于领域自适应方法在新的模型、数据集上复用。

  • 稳定性差。部分对抗训练方法随着训练进行,准确率会大幅度下降。

针对这些不足,深度领域自适应算法库(DALIB)设计的初衷就是:用户通过少数几行代码,即可将领域自适应算法应用到实际项目中,无需考虑领域自适应模块的实现细节

易用性

DALIB 将现有领域自适应训练代码中的领域自适应损失函数分离出来,按照 PyTorch 交叉熵损失函数的形式进行封装,以方便用户使用。

领域自适应损失函数也和模型架构进行了解耦,不依赖于具体的分类任务,所以算法库很容易扩展到图像分类以外的机器学习任务。

如下所示,使用两行代码即可定义一个与任务无关的领域对抗损失函数

各种领域自适应损失函数中有一些公用的模块,例如所有算法中都用到的分类器模块、对抗训练中用到的梯度反转模块和领域判别器模块、统计距离中用到的核函数模块等。

这些公用模块和提供的领域自适应损失函数是分离的。因此,在 DALIB 中,用户可以像搭积木一样,重新定制自己需要的领域自适应损失函数

例如,在核方法中,用户可以自定义不同参数的高斯核函数或其他核函数,然后将其传入到多核最大均值差异(MK-MMD)的计算中。

目前,所有的模块和损失函数均已提供详细的 API 说明文档:https://dalib.readthedocs.io/en/latest/。

稳定性

领域自适应算法研究往往关注方法的创新性或理论价值,而忽视了工程实现中的稳定性和可复现性。在复现现有算法的过程中,出现了部分算法准确率不稳定的问题。DALIB 通过对数值计算方面的改进,解决了这些问题。(具体实现此处不再展开。)

DALIB 在常见的领域自适应基准集上的测试准确率都比原论文汇报准确率高,在部分数据集上的准确率甚至高出 14%。下图分别是 Office-31 和 VisDA-2017 三个基准集上的测试结果:

Office-31 上不同算法的准确率。

VisDA-2017 上不同算法的准确率。

DALIB 算法库提供了所支持的算法在 Office-31、Office-Home 和 VisDA-2017 三个基准集上的测试结果,以及完整的测试脚本。清华大学龙明盛老师课题组认为开源这一算法库有助于更好地推进迁移学习方向的未来研究工作。

未来的工作

领域自适应算法子库 DALIB 的下一个版本将支持领域自适应算法的各种复杂设定,包括部分集领域自适应任务(Partial Domain Adaptation)、开放集领域自适应任务(Open-Set Domain Adaptation)、通用域自适应任务(Universal Domain Adaptation)等。同时,还将支持多功能领域自适应算法(Versatile Domain Adaptation)。

迁移学习算法库 Transfer-Learn 目前还处于初期开发阶段。该研究团队表示,随着迁移学习方向的不断发展,今后 Transfer-Learn 算法库将不断跟进新工作中比较好的算法,不断扩展优化,为迁移学习提供一个稳定可靠的评测基准。

当前版本由龙明盛老师课题组的江俊广、付博两名同学维护清华大学软件学院、大数据系统软件国家工程实验室为研发该算法库提供了强大的平台支撑

工程迁移学习清华PyTorch迁移学习算法库清华大学大数据研究中心
2
相关数据
清华大学机构

清华大学(Tsinghua University),简称“清华”,由中华人民共和国教育部直属,中央直管副部级建制,位列“211工程”、“985工程”、“世界一流大学和一流学科”,入选“基础学科拔尖学生培养试验计划”、“高等学校创新能力提升计划”、“高等学校学科创新引智计划”,为九校联盟、中国大学校长联谊会、东亚研究型大学协会、亚洲大学联盟、环太平洋大学联盟、清华—剑桥—MIT低碳大学联盟成员,被誉为“红色工程师的摇篮”。 清华大学的前身清华学堂始建于1911年,因水木清华而得名,是清政府设立的留美预备学校,其建校的资金源于1908年美国退还的部分庚子赔款。1912年更名为清华学校。1928年更名为国立清华大学。1937年抗日战争全面爆发后南迁长沙,与北京大学、南开大学组建国立长沙临时大学,1938年迁至昆明改名为国立西南联合大学。1946年迁回清华园。1949年中华人民共和国成立,清华大学进入了新的发展阶段。1952年全国高等学校院系调整后成为多科性工业大学。1978年以来逐步恢复和发展为综合性的研究型大学。

相关技术
图像分割技术

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。

计算机图形技术

图像数据处理、计算机图像(英语:Computer Graphics)是指用计算机所创造的图形。更具体的说,就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

迁移学习技术

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

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~