Agile Domain Adaptation

背景

在现在的迁移学习工作中,一直有一个矛盾:准确率和运算成本之间的矛盾。在神经网络面对一个个的样本进行分类时,有的样本可能和训练数据非常相似,用很少的层数就可以分类出来,但有的可能和神经网络所见到的训练样本差别比较大,需要提取深层特征才能良好的分类。对于简单目标,进行深度特征提取就比较浪费运算资源了。所以有了这个工作。

领域自适应是迁移学习领域中一个非常热门的方向,其本意是用来解决训练集数据和实际应用时采集的数据的分布不同,导致模式识别系统效果不好,所以需要一类方法来自适应的来适应不同的应用环境。

现阶领域自适应方法大体上可以分成两个种类:传统方法和深度的方法。传统方法着重于迁移技术,比如数据分布的适应。深度的方法一遍着重于特征的提取,另一方面着重于通过端对端的方法来使知识自适应。在这些工作中无论是传统的方法还是深度的方法,都忽略了一个问题是我们不能将目标域中的数据以相同的处理流程来处理。在目标域中不同的数据分布和源域之间的相似性是不同的,数据分布相似的数据更容易被迁移,而数据分布差异较大的部分应当使用更多的运算能力来处理。如图1,有一部分数据和源域数据相似程度很高,我们可以认为数据分布比较相近,另一部分数据相似度较低,则分布相差较大同样分类难度更大。


图1

实现

现有的深度学习模型有一个特点,网络浅层的神经结构往往会学习出一些比较泛化局部的特征,而深层的网络往往会学习出比较全局的深层特征,对于相关的深度迁移学习模型也类似(如DAN,Deep adaption Networks),对于二者分布比较相近的数据用比较浅层的模型就可以处理了,对于数据分布差异比较大的数据,可以用整个模型。这种思想考虑到了源域数据和目标域数据之间不同数据的分布差异,而不是把全部的数据都一股脑的送到同一个模型当中。具体结构如图二。


图2
要实现这样一个网络主要需要解决两个问题:

  1. 得到一个具有多个出口的深度迁移网络,确定损失函数,同时可以进行正常的训练(可以用BP算法)。
  2. 确定一个评价准则,可以在实际应用中知道多个分类输出口哪一个是最优的,到了哪一个出口后面的就不需要在求了。

损失函数确定

在源域上,一个端到端的神经网络训练问题可以有如下的损失函数:
Lsup=1ns∑i=1nsJ(f(xs,i),ys,i)\mathcal{L}_{\mathrm{sup}}=\frac{1}{n_{s}} \sum_{i=1}^{n_{s}} J\left(f\left(\mathbf{x}_{s, i}\right), \mathbf{y}_{s, i}\right)Lsup​=ns​1​∑i=1ns​​J(f(xs,i​),ys,i​)
这种优化方法,随着损失函数的降低,可以使模型在源域上的效果更好,但是无法使训练出的模型在目标域上有更好的表现,所以需要考虑到源域和目标域的损失情况。
Lexit e=Lsup +λLtran \mathcal{L}_{\text {exit }_{e}}=\mathcal{L}_{\text {sup }}+\lambda \mathcal{L}_{\text {tran }}Lexit e​​=Lsup ​+λLtran ​
和普通模型不同的是,在这个模型中有多个输出分类,所以需要考虑每一个端的优化问题。
L=∑ϵ=1mwϵLexitϵ\mathcal{L}=\sum_{\epsilon=1}^{m} w_{\epsilon} \mathcal{L}_{\mathrm{exit}_{\epsilon}}L=∑ϵ=1m​wϵ​Lexitϵ​​
整体的损失函数形式就如上面所示,在实际中w可以都变成1,这可以认为是对每一个出口的重视程度都相同。
上面只是形式化了整个损失函数的结构。在这个工作当中,损失函数具体使用的是cross-entropy。
J(y^,y)=−1∣C∣∑c∈Cyclog⁡y^cJ(\hat{\mathbf{y}}, \mathbf{y})=-\frac{1}{|C|} \sum_{c \in C} y_{c} \log \hat{y}_{c}J(y^​,y)=−∣C∣1​∑c∈C​yc​logy^​c​
其中y^\hat{\mathbf{y}}y^​是预测结果。
y^=softmax⁡(f(x))=exp⁡(f(x))∑c∈Cexp⁡(f(x)c)\hat{\mathbf{y}}=\operatorname{softmax}(f(\mathbf{x}))=\frac{\exp (f(\mathbf{x}))}{\sum_{c \in C} \exp \left(f(\mathbf{x})_{c}\right)}y^​=softmax(f(x))=∑c∈C​exp(f(x)c​)exp(f(x))​
在这里,使用cross-entropy是经过深思熟虑的,这种方法的特性使得后面可以很好的区分哪一个出口的数据已经足够好不需要继续求解下面的出口了。
在迁移学习的部分,迁移部分的损失采用多核MMD。定义如下:
MMD⁡(Xs,Xt)=1ns2∑i=1ns∑j=1nsk(xs,i,xs,j)−2nsnt∑i=1ns∑j=1ntk(xs,i,xt,j)+1nt2∑i=1ns∑j=1nsk(xt,i,xt,j)\begin{aligned} \operatorname{MMD}\left(\mathbf{X}_{s}, \mathbf{X}_{t}\right) &=\frac{1}{n_{s}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} k\left(\mathbf{x}_{s, i}, \mathbf{x}_{s, j}\right) \\-& \frac{2}{n_{s} n_{t}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} k\left(\mathbf{x}_{s, i}, \mathbf{x}_{t, j}\right) \\ &+\frac{1}{n_{t}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} k\left(\mathbf{x}_{t, i}, \mathbf{x}_{t, j}\right) \end{aligned}MMD(Xs​,Xt​)−​=ns2​1​i=1∑ns​​j=1∑ns​​k(xs,i​,xs,j​)ns​nt​2​i=1∑ns​​j=1∑nt​​k(xs,i​,xt,j​)+nt2​1​i=1∑ns​​j=1∑ns​​k(xt,i​,xt,j​)​
其中k(⋅)k(\cdot)k(⋅)是希尔伯特核。
原始数据特征x上计算MMD,而最小化上式在匹配域自适应层生成的激活时是隐含的。在迁移学习中,鼓励域适应层生成的源激活和目标激活保持良好的对齐,以便层参数可以由两个域共享。因此,这里显式地最小化了层激活上的MMD 设Zsl\mathbf{Z}_{s}^{l}Zsl​和Ztl\mathbf{Z}_{t}^{l}Ztl​分别表示层l从源域和目标域生成的激活量,层激活量的MMD计算公式为:
Ltran=1ns2∑i=1ns∑j=1ns∏l=1Lkl(zs,il,zs,jl)−2nsnt∑i=1ns∑j=1nt∏l=1Lkl(zs,il,zt,jl)+1nt2∑i=1ns∑j=1ns∏l=1Lkl(zt,il,zt,jl)\begin{aligned} \mathcal{L}_{\mathrm{tran}} &=\frac{1}{n_{s}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, i}^{l}, \mathbf{z}_{s, j}^{l}\right) \\ &-\frac{2}{n_{s} n_{t}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, i}^{l}, \mathbf{z}_{t, j}^{l}\right) \\ &+\frac{1}{n_{t}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, i}^{l}, \mathbf{z}_{t, j}^{l}\right) \end{aligned}Ltran​​=ns2​1​i=1∑ns​​j=1∑ns​​l=1∏L​kl(zs,il​,zs,jl​)−ns​nt​2​i=1∑ns​​j=1∑nt​​l=1∏L​kl(zs,il​,zt,jl​)+nt2​1​i=1∑ns​​j=1∑ns​​l=1∏L​kl(zt,il​,zt,jl​)​
等价于:
Ltran⁡=2ns∑i=1ns/2(∏l=1Lkl(zs,2i−1l,zs,2il)+∏l=1Lkl(zt,2i−1l,zt,2il))−2ns∑i=1ns/2(∏l=1Lkl(zs,2i−1l,zt,2il)+∏l=1Lkl(zt,2i−1l,zs,2il))\begin{array}{c}{\mathcal{L}_{\operatorname{tran}}=} \\ {\frac{2}{n_{s}} \sum_{i=1}^{n_{s} / 2}\left(\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, 2 i-1}^{l}, \mathbf{z}_{s, 2 i}^{l}\right)+\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, 2 i-1}^{l}, \mathbf{z}_{t, 2 i}^{l}\right)\right)} \\ {-\frac{2}{n_{s}} \sum_{i=1}^{n_{s} / 2}\left(\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, 2 i-1}^{l}, \mathbf{z}_{t, 2 i}^{l}\right)+\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, 2 i-1}^{l}, \mathbf{z}_{s, 2 i}^{l}\right)\right)}\end{array}Ltran​=ns​2​∑i=1ns​/2​(∏l=1L​kl(zs,2i−1l​,zs,2il​)+∏l=1L​kl(zt,2i−1l​,zt,2il​))−ns​2​∑i=1ns​/2​(∏l=1L​kl(zs,2i−1l​,zt,2il​)+∏l=1L​kl(zt,2i−1l​,zs,2il​))​
计算过程如下:

【迁移学习】Agile Domain Adaptation——一种平衡运算资源和速度的深度迁移学习方法相关推荐

  1. TGRS2020/遥感:Multisource Domain Adaptation for Remote Sensing Using Deep Neural Netw基于深度神经网络的遥感多源域自适应

    TGRS2020/遥感:Multisource Domain Adaptation for Remote Sensing Using Deep Neural Networks基于深度神经网络的遥感多源 ...

  2. 迁移学习——Balanced Distribution Adaptation for Transfer Learning

    <Balanced Distribution Adaptation for Transfer Learning>学习 2017 IEEE International Conference ...

  3. 【医疗人工智能】DKDR:一种用于疾病诊断的知识图谱和深度强化学习方法

    Article 作者:Yuanyuan Jia, Zhiren Tan, Junxing Zhang 文献题目:DKDR: An Approach of Knowledge Graph and Dee ...

  4. tensorflow学习笔记:查看tensorflow可配置运算资源以及配置使用GPU运算

    查看tensorflow可配置运算资源以及配置使用GPU运算 因为还用不到分布式的tensorflow,自己没有尝试过所以就不写分布式tensorflow的使用了(等自己用上了再说),这里记录一下在跑 ...

  5. cross-domin,Domain adaptation 与 Domain generalization学习

    参考: [迁移学习]Domain Adaptation系列论文解析(不断更新中) - 知乎 同任务但不同domain数据的统一模型 transfer learning 和 cross domain 有 ...

  6. Domain adaptation 与 Domain generalization

    一.Domain adaptation (DA) 1. 基本介绍 1. 什么是domain?: 一堆数据服从相同的分布. 2. Domain adaptation 研究的问题 给了一个training ...

  7. 基于特征的对抗迁移学习论文_有关迁移学习论文

    如果你有好的想法,欢迎讨论! 1 Application of Transfer Learning in Continuous Time Series for Anomaly Detection in ...

  8. 使用卷积神经网络(普通CNN和改进型LeNet)以及数据增强和迁移学习技巧识别猫和狗,并制作成分类器软件(基于Keras)

    数据集:https://www.microsoft.com/en-us/download/confirmation.aspx?id=54765 猫和狗的图片各自有12500张. 第一步 整理数据集,查 ...

  9. 迁移学习之域自适应理论简介(Domain Adaptation Theory)

    ©作者 | 江俊广 单位 | 清华大学 研究方向 | 迁移学习 本文主要介绍域自适应(Domain Adaptation)最基本的学习理论,全文不涉及理论的证明,主要是对部分理论的发展脉络的梳理,以及 ...

最新文章

  1. python的pandas_python之pandas(一)
  2. starting mysql. success!_启动mysql报错解决问题过程
  3. Rxjs BehaviorSuject 和 Observable 的区别
  4. P4016 负载平衡问题(最小费用最大流)
  5. poj 1236 Network of Schools
  6. Docker 实战笔记
  7. linux安装光盘制作工具,(三)Linux平台多操作系统安装盘制作工具
  8. Bootstrap栅格系统(布局)
  9. ENVI学习总结(四)——图像正射校正
  10. python爬虫框架scrapy实例详解
  11. iPhone清理喇叭灰尘_厉害了!原来可以这样一键清理 iPhone 喇叭灰尘!
  12. Cacti中文版在Centos5(Rhel5)上的安装(转载)
  13. python批量下载文件只有1kb_(尚有报错、待完善)从一些网站(网易公开课、电影网站)上批量获得相关视频文件的下载地址,并保存在一个x.txt文件中...
  14. 沿着哈勃望远,看清MyBatis整体架构
  15. Java获取本机ip地址的代码
  16. 3D人脸重建(二) 数据
  17. PS基础全讲和使用技巧(二)
  18. 电子商务网站建设系统战略规划报告
  19. Django建网站教程
  20. IIS7.0 CSS、JS、图片报500错误

热门文章

  1. AHP层次分析法在水利中的实践技术应用
  2. vnpy抽离candle_chart5 - 增加买卖信号
  3. 同等学力申硕考试计算机综合考试内容,2017同等学力申硕考试计算机综合数学考前精练...
  4. 通信中的星座图的理解
  5. JavaScrip基础知识
  6. [软件工程基础]Alpha 阶段事后分析
  7. 有源器件和无源器件基础概念及区别
  8. 巴塔机器人_【机器人大战a攻略】超级机器人大战V全SR怎么获得-挖辣椒攻略
  9. 逻辑学跟计算机科学没有关系,逻辑学跟计算机科学没有关系。()
  10. 计算机板报课作文500字,板报_500字日记作文_初中作文_大文斗范文网