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

目前我们发布了第一个子库--深度域自适应算法库(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)

欢迎大家试用、star、以及给我们提意见!

项目地址​github.com

域自适应背景介绍

目前深度学习模型在部分计算机视觉、自然语言处理任务中已经超过了人类的表现,但是它们的成功依赖于大规模的数据标注。实际场景中,标注数据往往是稀缺的。解决标注数据稀缺问题的一个方法是通过计算机模拟生成训练数据,例如用计算机图形学的技术合成训练数据(如下图所示)。

但是由于训练数据和测试数据不再服从独立同分布,训练得到的深度网络的准确率大打折扣。为了解决上述数据漂移造成的问题,域自适应(Domain Adaptation) 的概念被提出。域自适应的目标是将模型在源域(Source) 学到的知识迁移到目标域(Target)。例如计算机模拟生成训练数据的例子中,合成数据是源域,真实场景的数据是目标域。域自适应有效地缓解了深度学习对于人工标注数据的依赖,受到了学术界和工业界广泛的关注。目前已经被引入到图片分类、图像分割(Segmentation)、目标检测(Object Detection)、机器翻译(Machine Translation) 等众多任务上。吴恩达曾说过:“在监督学习之后,迁移学习将引领下一波机器学习技术商业化浪潮。”随着产品级的机器学习应用进入数据稀缺的领域,监督学习得到的尖端模型性能大打折扣,域自适应变得至关重要。

研究现状

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

1.矩匹配。通过最小化分布差异来对齐不同域的特征分布。例如深度适配网络DAN,联合适配网络JAN。

2.对抗训练。域对抗网络DANN是最早的工作,它引入一个领域判别器,鼓励特征提取器学到领域无关的特征。 在DANN的基础上,衍生出了一系列方法,例如条件域对抗网络CDAN,间隔差异散度MDD等。

DANN网络架构图
MDD网络架构图

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

  • 复用性差。域自适应方法和模型架构、数据集耦合在一起,不利于域自适应方法在新的模型、数据集上复用。
  • 稳定性差。部分对抗训练方法随着训练进行,准确率会大幅度下降。

DALIB设计的初衷就是让用户通过少数几行代码,就可以将域自适应算法用在实际项目中,而无需考虑域自适应模块的实现细节。

易用性

DALIB将现有域自适应训练代码中的域自适应损失函数分离出来,按照PyTorch交叉熵损失函数的形式进行封装,方便用户的使用。域自适应损失函数也和模型架构进行了解耦,因此不依赖于具体的分类任务,所以算法库很容易扩展到图片分类以外的分类任务。

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

不同域自适应损失函数中有一些公用的模块,例如所有算法中都用到的分类器模块,对抗训练中用到的梯度翻转模块、域判别器模块,核方法中的核函数模块等。这些公用模块和提供的域自适应损失函数是分离的。因此,在DALIB中,用户可以像搭积木一样,重新定制自己需要的域自适应损失函数。

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

目前,所有的模块和损失函数均已提供详细的API说明文档。

Welcome to dalib’s documentation!​dalib.readthedocs.io

稳定性

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

此外,DALIB几乎在所有任务上,准确率都比原论文汇报准确率高,部分数据集上甚至能高14%。下图分别是Office-31和VisDA-2017上的测试结果。

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

算法库提供了各个算法在Office-31、Office-Home和VisDA-2017上的测试结果,以及所有的测试脚本。我们认为开源该算法库对于这个领域未来的研究工作是具有巨大价值的。

未来的工作

域自适应算法子库DALIB下一个版本会支持域自适应算法的不同设定,包括部分域自适应任务(Partial Domain Adaptation)、开放集域自适应任务(Open-set Domain Adaptation)、通用域自适应任务(Universal Domain Adaptation)等。

迁移学习算法库Trans-Learn目前还处于初期开发阶段,难免有不完善的地方,欢迎其他研究者提意见。同时迁移学习这个方向也还在不断发展,今后会不断跟进新工作中比较好的算法。

当前版本由龙明盛老师课题组的江俊广和付博同学开发,如果有任何意见和建议,欢迎联系:

JiangJunguang1123@outlook.com

fb1121@vip.qq.com @付博

2019 outlook 数据迁移_清华开源迁移学习算法库相关推荐

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

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

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

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

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

    机器之心报道 编辑:魔王 作者:清华大学大数据研究中心 近日,清华大学大数据研究中心机器学习研究部开源了一个高效.简洁的迁移学习算法库 Transfer-Learn,并发布了第一个子库--深度领域自适 ...

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

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

  5. ecs服务器数据迁移_免费服务器迁移上云实践分享!一键迁云,自动同步

    导读:云服务器ECS(Elastic Computing Service)是每个阿里云用户上云的"第一步". 本次分享将为大家介绍免费的服务器迁移上云最佳实践方案和新功能特性,包括 ...

  6. drupal 迁移_关于如何迁移到Drupal的4个技巧

    drupal 迁移 如果您的网站内容丰富,那么您肯定会听说过Drupal ,这是一个开源内容管理系统(CMS). 也许您还听说过Drupal是免费的,安全的,并且拥有完善的开发人员网络,这意味着有很多 ...

  7. 2019大数据课程_根据数据,2019年最佳免费在线课程

    2019大数据课程 As we do each year, Class Central has tallied the best courses of the previous year, based ...

  8. 清华开源深度学习框架计图,开源超级玩家再进阶

    2020-03-22 09:24 导语:清华开源计图,背后是三代人的共同努力. 雷锋网AI源创评论报道,据官方消息,清华大学计算机系图形实验室宣布开源一个全新的深度学习框架:Jittor,中文名计图. ...

  9. 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :微软 AI博士笔记系列推荐 ...

最新文章

  1. [小技巧]C#中如何为枚举类型添加描述方法
  2. 前端学习(764):创建对象的三种方式
  3. Linux——cmake使用示例与整理总结
  4. BIO ,NIO,AIO的区别
  5. 柳传志:33年来,联想这13条管理经验从未改变
  6. python爬取网页上的特定链接_python 用bs4解析网页后,如何循环打开爬取出来的网址链接?...
  7. app抢购脚本如何编写_如何用1个记事本文件征服全世界?——cmd批处理脚本编写...
  8. acrobat xi pro 简体中文语言支持包_恐龙模拟新作《Paleo Pines》Steam明年发售 支持简中...
  9. Java私塾中级note
  10. GNSS RTK 千寻位置 LG69T
  11. 企业微信的好处和功能介绍 | 最新企业微信电脑版下载
  12. IEEE 投稿参考文献格式bib
  13. c语言函数定义时涉及的基本要素是什么,C语言基础:函数的定义与调用
  14. linux IRQ Management(六)- DTS及调试
  15. linux 命令行高亮显示
  16. JDK环境配置和eclipse安装
  17. 【图像检测】基于 AlexNet 和 SVM 实现异常螺母检测附matlab代码
  18. 百余门店闭门谢客,韩妆如何败给了国潮?
  19. 开源个人网盘(奇文网盘)前后端代码运行与部署在Windows服务器并修改部分配置
  20. Centos7 开启BBR加速

热门文章

  1. 华为机试HJ12:字符串反转
  2. redis linux工具安装,linux 安装redis缓存工具
  3. python强制退出循环_for循环、while循环、break跳出循环、continue结束本次循环、exit退出本次脚本...
  4. Android 任务栈空间,【Android】任务和返回栈(tasks and back stack)
  5. jenkins配置ant
  6. 计算机信息数据集通信的概念,南京信息工程大学数据通信与计算机网络复习题库.doc...
  7. python super详解_python中super()详解
  8. php加密数据库工具,各位用php将密码存入数据库,都用什么方法进行加密的?
  9. java 任务栏程序_如何在任务栏显示java程序图标
  10. concatenate mutliple videos in ffmpeg