机器之心报道

编辑:魔王

作者:清华大学大数据研究中心

近日,清华大学大数据研究中心机器学习研究部开源了一个高效、简洁的迁移学习算法库 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 算法库将不断跟进新工作中比较好的算法,不断扩展优化,为迁移学习提供一个稳定可靠的评测基准。

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

© THE END

转载请联系 机器之心 公众号获得授权

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

  1. 清华大学开源迁移学习算法库:基于PyTorch实现已有算法

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  2. 南加州大学等开源元学习研究库learn2learn

    近日,南加州大学单位等开源了一个元学习研究库learn2learn,旨在促进越来越多的元学习的研究,该库基于PyTorch,文档完善,样例丰富,是从事相关研究值得参考的开源库. 相关论文: learn ...

  3. Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构

    Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet.AlexNet.VGG.NIN.GoogleNet.ResNet)--从代码认知CNN经典架构 目录 CNN经典算 ...

  4. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

  5. 如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 组合、混合推荐算法FoodRecommendSystem

    如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 组合.混合推荐算法FoodRecommendSystem ...

  6. 2019 outlook 数据迁移_清华开源迁移学习算法库

    清华大学龙明盛老师课题组长期致力于迁移学习研究.今天,我们很高兴地宣布,我们开源了基于PyTorch实现的一个高效.简洁的迁移学习算法库--Trans-Learn. 目前我们发布了第一个子库--深度域 ...

  7. 原创 | 清华开源迁移学习算法库

    作者:清华大数据软件团队机器学习组 本文长度为1700字,建议阅读6分钟 本文为你介绍 Trans-Learn 算法库. Trans-Learn是基于PyTorch实现的一个高效.简洁的迁移学习算法库 ...

  8. 分布对齐 目标函数 迁移学习_原创 | 清华开源迁移学习算法库

    本文长度为1700字,建议阅读6分钟 本文为你介绍 Trans-Learn 算法库. Trans-Learn是基于PyTorch实现的一个高效.简洁的迁移学习算法库,目前发布了第一个子库--深度域自适 ...

  9. pytorch 语义分割loss_vedaseg:基于pytorch的开源语义分割工具库,更多模型支持,更易拓展...

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

最新文章

  1. 如何关闭360自定义错误页面
  2. html的vue项目怎么兼容ie,vue 项目在ie浏览器的兼容问题
  3. java学绘图吗_Java绘图
  4. Usb设备驱动3:root hub守护进程2
  5. 注解代替枚举_精选枚举代替开关
  6. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
  7. 搭建appium的android环境
  8. 嵌入式单片机开发软件CodeWarrior的下载和安装过程。
  9. 板翅式换热器翅片表面传热与阻力特性性能分析
  10. 什么是平面设计?详细讲解平面设计
  11. Android软键盘删除键触发Activity的返回事件
  12. 计算机文件夹怎样显示隐藏文件,显示隐藏文件夹,教您电脑如何显示隐藏文件夹...
  13. 系统架构设计师 - ESB 企业服务总线
  14. Jmeter的元件使用介绍:取样器详解
  15. 说话干嘛要“之道”啦?(1-10)
  16. 美国西北大学计算机硕士offer,已经被心仪的美国院校放入Waitlist!还有多大的转正几率?...
  17. gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!
  18. 工业协议:DNP协议
  19. 如何看待区块链游戏,避免陷入区块链游戏骗局
  20. c++中gets用法总结

热门文章

  1. 【组队学习】10月份微信图文索引
  2. 如何设置matplotlib中x,y坐标轴的位置?
  3. 【怎样写代码】对象克隆 -- 原型模式(一):问题案例
  4. 最高3000元/人 , 助你成为C站红人 !
  5. 《评人工智能如何走向新阶段》后记(再续25)
  6. “编程不规范,同事两行泪!”
  7. AI一分钟 | 谷歌开发者大会,千人同玩AI小程序;阿里获杭州首张自动驾驶牌照...
  8. 是男人就过8题!楼教主出题,请接招!
  9. AI一分钟|腾讯AI绝艺让二子,仍战胜柯洁;Google与腾讯达成专利交叉授权许可协议
  10. 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!