清华大学开源迁移学习算法库:基于PyTorch实现,支持轻松调用已有算法
近日,清华大学大数据研究中心机器学习研究部开源了一个高效、简洁的迁移学习算法库 Transfer-Learn,并发布了第一个子库——深度领域自适应算法库(DALIB)。
项目地址:
https://github.com/thuml/Transfer-Learning-Library
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)
领域自适应的目标是将机器学习模型在源领域 (Source) 学到的知识迁移到目标领域 (Target)。
例如在计算机模拟生成训练数据的例子中,合成数据是源领域,真实场景的数据是目标领域。领域自适应有效地缓解了深度学习对于人工标记数据的依赖,受到学术界和工业界的广泛关注。
目前已广泛应用到图像分类、图像分割、目标检测、情感分析、机器翻译等众多任务上。
吴恩达曾说过:「在监督学习之后,迁移学习将引领下一轮机器学习技术商业化浪潮。」图灵奖得主 Bengio 也认为迁移能力是深度学习进一步发展的基础能力之一。
随着产品级机器学习应用进入数据稀缺领域,监督学习得到的尖端模型性能大打折扣,领域自适应变得越来越重要。
统计距离。通过最小化源领域和目标领域分布的统计距离,实现不同领域特征分布对齐。例如深度适配网络 DAN、联合适配网络 JAN。
对抗训练。领域对抗网络 DANN 是最早的工作,它引入领域判别器,鼓励特征提取器学习领域无关的特征。在 DANN 的基础上衍生出了一系列方法,例如条件领域对抗网络 CDAN、最大分类器差异 MCD。
理论启发。通过严格的理论推导,得到可以显式控制迁移学习泛化误差的算法,如间隔分歧散度 MDD 等。
复用性差。领域自适应方法和模型架构、数据集耦合在一起,不利于领域自适应方法在新的模型、数据集上复用。
稳定性差。部分对抗训练方法随着训练进行,准确率会大幅度下降。
目前,所有的模块和损失函数均已提供详细的 API 说明文档:
https://dalib.readthedocs.io/en/latest/
领域自适应算法研究往往关注方法的创新性或理论价值,而忽视了工程实现中的稳定性和可复现性。在复现现有算法的过程中,出现了部分算法准确率不稳定的问题。
DALIB 通过对数值计算方面的改进,解决了这些问题。(具体实现此处不再展开。)
DALIB 在常见的领域自适应基准集上的测试准确率都比原论文汇报准确率高,在部分数据集上的准确率甚至高出 14%。
下图分别是 Office-31 和 VisDA-2017 三个基准集上的测试结果:
领域自适应算法子库 DALIB 的下一个版本将支持领域自适应算法的各种复杂设定,包括部分集领域自适应任务(Partial Domain Adaptation)、开放集领域自适应任务(Open-Set Domain Adaptation)、通用域自适应任务(Universal Domain Adaptation)等。
同时,还将支持多功能领域自适应算法(Versatile Domain Adaptation)。
当前版本由龙明盛老师课题组的江俊广、付博两名同学维护。清华大学软件学院、大数据系统软件国家工程实验室为研发该算法库提供了强大的平台支撑。
项目地址:
https://github.com/thuml/Transfer-Learning-Library