科技一哥 清华开源迁移学习算法库


科技一哥 清华开源迁移学习算法库
文章图片
作者:清华大数据软件团队机器学习组
本文长度为1700字 , 建议阅读6分钟
本文为你介绍Trans-Learn算法库 。
Trans-Learn是基于PyTorch实现的一个高效、简洁的迁移学习算法库 , 目前发布了第一个子库——深度域自适应算法库(DALIB) , 支持的算法包括:
DomainAdversarialNeuralNetworks(DANN)DeepAdaptationNetwork(DAN)JointAdaptationNetworks(JAN)ConditionalAdversarialDomainAdaptation(CDAN)MaximumClassifierDiscrepancy(MCD)MarginDisparityDiscrepancy(MDD)项目地址:
https://github.com/thuml/Transfer-Learning-Library
域自适应背景介绍
目前深度学习模型在部分计算机视觉、自然语言处理任务中已经超过了人类的表现 , 但是它们的成功依赖于大规模的数据标注 。 但是实际场景中 , 标注数据往往是稀缺的 。 解决标注数据稀缺问题的一个方法是通过计算机模拟生成训练数据 , 例如用计算机图形学的技术合成训练数据 。
科技一哥 清华开源迁移学习算法库
文章图片
图表1VisDA2017竞赛任务
但是由于训练数据和测试数据不再服从独立同分布 , 训练得到的深度网络的准确率大打折扣 。 为了解决上述数据漂移造成的问题 , 域自适应(DomainAdaptation)的概念被提出 。 域自适应的目标是将模型在源域(Source)学到的知识迁移到目标域(Target) 。 例如计算机模拟生成训练数据的例子中 , 合成数据是源域 , 真实场景的数据是目标域 。
域自适应有效地缓解了深度学习对于人工标注数据的依赖 , 受到了学术界和工业界广泛的关注 。 目前已经被引入到图片分类、图像分割(Segmentation)、目标检测(ObjectDetection)、机器翻译(MachineTranslation)等众多任务上 。 吴恩达曾说过:“在监督学习之后 , 迁移学习将引领下一波机器学习技术商业化浪潮 。 ”随着产品级的机器学习应用进入数据稀缺的领域 , 监督学习得到的尖端模型性能大打折扣 , 域自适应变得至关重要 。
研究现状
深度域自适应方法主要包括以下两大类:
1.矩匹配 。 通过最小化分布差异来对齐不同域的特征分布 。 例如深度适配网络DAN , 联合适配网络JAN 。
2.对抗训练 。 域对抗网络DANN是最早的工作 , 它引入一个领域判别器 , 鼓励特征提取器学到领域无关的特征 。 在DANN的基础上 , 衍生出了一系列方法 , 例如条件域对抗网络CDAN , 间隔差异散度MDD等 。
科技一哥 清华开源迁移学习算法库
文章图片
图表2DANN网络架构图
科技一哥 清华开源迁移学习算法库
文章图片
图表3MDD网络架构图
上述方法在实验数据上体现了良好的性能 。 然而目前学术界域自适应方法的开源实现中存在下述问题:
复用性差 。 域自适应方法和模型架构、数据集耦合在一起 , 不利于域自适应方法在新的模型、数据集上复用 。 稳定性差 。 部分对抗训练方法随着训练进行 , 准确率会大幅度下降 。DALIB设计的初衷就是让用户通过少数几行代码 , 就可以将域自适应算法用在实际项目中 , 而无需考虑域自适应模块的实现细节 。
易用性
DALIB将现有域自适应训练代码中的域自适应损失函数分离出来 , 按照PyTorch交叉熵损失函数的形式进行封装 , 方便用户的使用 。 域自适应损失函数也和模型架构进行了解耦 , 因此不依赖于具体的分类任务 , 所以算法库很容易扩展到图片分类以外的分类任务 。
如下 , 使用两行代码即可定义一个与任务无关的域对抗损失函数 。
科技一哥 清华开源迁移学习算法库
文章图片
不同域自适应损失函数中有一些公用的模块 , 例如所有算法中都用到的分类器模块 , 对抗训练中用到的梯度翻转模块、域判别器模块 , 核方法中的核函数模块等 。 这些公用模块和提供的域自适应损失函数是分离的 。 因此 , 在DALIB中 , 用户可以像搭积木一样 , 重新定制自己需要的域自适应损失函数 。


推荐阅读