转自:http://blog.csdn.net/mao_xiao_feng/article/details/54426101

一、Domain adaptation

在开始介绍之前,首先我们需要知道Domain adaptation的概念。Domain adaptation,我在标题上把它称之为域适应,但是在文中我没有再翻译它,而是保持它的英文原意,这也有助于我们更好的理解它的概念。

Domain adaptation的目标是在某一个训练集上训练的模型,可以应用到另一个相关但不相同的测试集上。

对这个问题列出一个规范的形式:

给出source dataset(源数据,也就是初始的训练集)其中表示源数据集的数量,它是有标签的。

给出target dataset(目标数据,就是相关域的数据集)其中表示目标数据集的数量,它是无标签的。

现在Domain adaptation的目标就是使用提供的所有数据训练一个统计模型,从而最小化预测误差,其中是第i个样本的预测标签,而就是对应的真实标签,它也是未知的。我们考虑一种情况,source和target dataset之间的边缘分布和条件分布都不相同,即

ok,问题就是上述的那样,关于Domain adaptation我们可以再扯一点闲话,所谓边缘分布就是数据在特征空间当中的分布,如果你不理解特征空间这个词,把它理解为数据分布就好。可能还会有人问现实当中数据分布很抽象,你怎么知道几万张图片,它们的分布是怎样的?这个问题是初入坑必须要搞明白的,衡量图像我们也是通过特征(例如,haar特征,梯度,颜色直方图等等),将图像特征量化成数字,分布就能看出来了,所以记住我们讨论分布的前提是我们已经确定用哪种特征来衡量数据。同样条件分布就是某个确定样本的分类概率分布了,如果是二分类问题,那么此条件分布就看作一个伯努利分布,其他情况以此类推。

Domain adaptation有哪些实现手段呢?几乎所有的手段都尝试去学习一个特征转换,使得在转换过后的特征空间上,source dataset和target dataset分布的区分度达到最小。现实世界当中这个问题又分为不同的类型:1)边缘分布相同,条件分布不同且相关2)边缘分布不同且相关,条件分布相同3)边缘分布和条件分布都不同且相关。这几种情况其实可以归纳到迁移学习domain和task的范畴中,以后我会写一篇文章专门对迁移学习和Domain adaptation作整理。

Instance reweighting和subspace learning是Domain adaptation中两种经典的学习策略,前者对source data每一个样本加权,学习一组权使得分布差异最小化,后者则是转换到一个新的共享样本空间上,使得两者的分布相匹配。另外比较重要的的一点是,实际训练当中,“最小化分布差异”这个约束条件是放在目标函数中和最小化误差一起优化的,而不是单独优化。

二、DTN之共享特征抽取层

Deep Transfer Network(这里简称DTN)就是一个用深度网络去做Domain adaptation的理念,这个网络被分为了两种类型的层,共享特征抽取层和判别层。第一层共享特征抽取层用于匹配边缘分布,共享特征抽取层可以是一个多层感知机,如果网络层数为l的话,我们一般会把前l-1层看作共享特征抽取层,而l-1层的输出则是一种分布相近的共享特征,它可用于后面做类别判断。

在这之前我们应该指定一个分布差异的度量标准,这里使用了empirical Maximum Mean Discrepancy(MMD),假设有source dataset和target dataset分别为,指定那么有下式成立:

其中M是MMD矩阵

接下来我们讨论如何进行match,假设W是k*d的投影矩阵,它把d维特征向量x投影到k维上面,然后通过激活函数f做一个非线性变化,得到h:

在经历了l-1层的类似变换以后,假设输出为根据这个输出我们可以列出source dataset和target dataset的边缘分布分别为,在l-1层的输出上,我们规定约束两者的边缘分布差异最小,于是有,同样令,那么最终的MMD度量如下:

三、DTN之判别层

在判别层,其实和传统的神经网络没多大区别,多用softmax回归来做概率预测,这里也是一样,列出softmax的判别公式:

其中是最后一层的连接权值,j是总的类数,j为2时退化成逻辑斯蒂回归,这个相信大家都清楚。最后列出以条件概率形式表述的MMD如下:

四、优化步骤

最后加上上述的两个约束条件,目标函数变为

后面的λ和μ都是人为指定的,分别表示了约束的重要性程度,为0时,就退化成了传统神经网络。

优化还是使用的随机梯度下降,上面列出来的两个MMD公式当中,首先我们要确定哪个是变量,这是很重要的,虽然这个问题很弱智。在确定了变量之后,我们可以计算对于,MMD的偏导,分为两种情况来讨论:

同样的对于,也分为source dataset和target dataset两种情况:

接下来只要求整个问题就ok了,我们列出目标函数的梯度求解公式:

看似一切都解决了!但其实别忘了还有一个问题,就是MMD其实是对全部数据集来求的,但是在神经网络中不可能做到这一点,所以训练的时候采取了mini batch的方法,用一个batch来代替数据集的分布,mini batch其实并不会影响实验结果,因为假设将数据集切分为N份,在N上的MMD会大于总的数据集上的MMD,用公式表达如下:

也就是说,只要我们约束了就一定能使得原MMD最小。

最后,总结一下算法的流程:

  

Deep Transfer Network: Unsupervised Domain Adaptation的更多相关文章

  1. Unsupervised Domain Adaptation by Backpropagation

    目录 概 主要内容 代码 Ganin Y. and Lempitsky V. Unsupervised Domain Adaptation by Backpropagation. ICML 2015. ...

  2. 论文笔记:Unsupervised Domain Adaptation by Backpropagation

    14年9月份挂出来的文章,基本思想就是用对抗训练的方法来学习domain invariant的特征表示.方法也很只管,在网络的某一层特征之后接一个判别网络,负责预测特征所属的domain,而后特征提取 ...

  3. Unsupervised Domain Adaptation Via Domain Adversarial Training For Speaker Recognition

    年域适应挑战(DAC)数据集的实验表明,所提出的方法不仅有效解决了数据集不匹配问题,而且还优于上述无监督域自适应方法.        

  4. Domain Adaptation (3)论文翻译

    Abstract The recent success of deep neural networks relies on massive amounts of labeled data. For a ...

  5. Domain Adaptation (1)选题讲解

    1 所选论文 论文题目: <Unsupervised Domain Adaptation with Residual Transfer Networks> 论文信息: NIPS2016, ...

  6. 【论文笔记】Domain Adaptation via Transfer Component Analysis

    论文题目:<Domain Adaptation via Transfer Component Analysis> 论文作者:Sinno Jialin Pan, Ivor W. Tsang, ...

  7. Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)

    domain adaptation(域适配)是一个连接机器学习(machine learning)与迁移学习(transfer learning)的新领域.这一问题的提出在于从原始问题(对应一个 so ...

  8. Domain Adaptation论文笔记

    领域自适应问题一般有两个域,一个是源域,一个是目标域,领域自适应可利用来自源域的带标签的数据(源域中有大量带标签的数据)来帮助学习目标域中的网络参数(目标域中很少甚至没有带标签的数据).领域自适应如今 ...

  9. What are the advantages of ReLU over sigmoid function in deep neural network?

    The state of the art of non-linearity is to use ReLU instead of sigmoid function in deep neural netw ...

随机推荐

  1. 【Leetcode】Divide Two Integers

    Divide two integers without using multiplication, division and mod operator. class Solution { public ...

  2. svn学习笔记(一)

    一.svn介绍 1.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易 ...

  3. python用字典实现switch..case类似的函数调用

    python中没有swich..case,若要实现一样的功能,又不想用if..elif来实现,可以充分利用字典进行实现 主要是想要通过不同的key调用不同的方法,在学习过程中,发现不管输入的key是什 ...

  4. C++_类继承4-访问控制protected

    public和private来控制对类成员的访问. 还存在另外一个访问类别,这种类别用关键字protected表示.protected和private相似,在类外只能用公有类成员来访问protecte ...

  5. rest-framework框架之序列化

    rest-framework框架之序列化 开发 API 接口最重要的工作就是将代码片段的输出序列化和反序列化为类似于 json 的表示形式. 在 rest-framework 中,通过声明与 Djan ...

  6. 洛谷 P1800 software_NOI导刊2010提高(06)

    题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...

  7. html的第一个程序

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Mock单元测试

    /// <summary> /// 普通插入 /// </summary> [Fact] public void InsertOrder_Tests() { _sqlMappe ...

  9. 设置input placeholder的样式

    ::-webkit-input-placeholder {/*Chrome/Safari*/ font-family: 'Avenir', Helvetica, Arial, sans-serif; ...

  10. 通过 flume 上传数据到hive

    目标: 通过接受 1084端口的http请求信息, 存储到 hive数据库中, osgi为hive中创建的数据库名称 periodic_report6 为创建的数据表, flume配置如下: a1.s ...