14年9月份挂出来的文章,基本思想就是用对抗训练的方法来学习domain invariant的特征表示。方法也很只管,在网络的某一层特征之后接一个判别网络,负责预测特征所属的domain,而后特征提取器和判别器在域分类loss上对抗,同时特征提取器和lable分类器(也就是原任务中的分类器)共同优化lable分类loss。整个过程跟GAN是差不多的,一种个人的不严谨的说法,可以将GAN理解成像素空间上的Adaptation,而这篇文章是特征空间上的Adaptation。

文章的另一个贡献是提出了梯度反转层,原始的GAN生成器和判别器是交替训练的,这样写代码会有一些麻烦,这里我就不贴一大堆公式和符号了,平实的语言就能说清楚这个事情,看懂我写的东西之后再看论文的公式应该就小菜一碟了。模型域对抗的目标就是调整判别器的参数,使得域分类loss最小,同时调整特征提取器的参数,使得域分类loss最大。这个过程可以使用交替训练这两个模块来实现,也可以将域分类loss反传之后,再反转特征提取器的参数。这里,作者在特征提取器和判别器之间加了一层梯度反转层(GRL),forward时为恒等变换,backward时将梯度取反,就ok了。

下面写一下这种方法的理论解释,文章用\(\mathcal{H}\Delta\mathcal{H}\)距离来表示。
\[d_{\mathcal{H} \Delta \mathcal{H}} (\mathcal{S}, \mathcal{T})= 2 \sup_{h_1, h_2 \in \mathcal{H}} \left| P_{\mathbf{f} \sim \mathcal{S}} [h_1(\mathbf{f}) \neq h_2(\mathbf{f})] - \right.\left. P_{\mathbf{f} \sim \mathcal{T}} [h_1(\mathbf{f}) \neq h_2(\mathbf{f})] \right|\]
这里f就是特征(可以是low-level的像素特征,也可以是high-level的深度特征),\(h_1\),\(h_2\)就是分类器。这个公式这样来定义两域的距离:找两个分类器,使其对S域样本预测不一致的概率与对T域样本预测不一致的概率之差的绝对值最大,这个差值的上界再乘以2就是两个domain关于假设空间H的距离了。可以这样理解,就是找两个分类器,使其在两个域上的表现最不一致,用这两个分类器就能把距离定义出来了。然后可以有以下的定理:
\[\varepsilon_\mathcal{T}(h) \leq \varepsilon_\mathcal{S}(h) + \frac{1}{2} d_{\mathcal{H} \Delta \mathcal{H}} (\mathcal{S}, \mathcal{T}) + C\]
其中,\(\varepsilon_\mathcal{T}(h)\)和\(\varepsilon_\mathcal{S}(h)\)分别表示分类器h在T域和S域的performance,C是一个不依赖于h的常数。这样,给定假设空间H(实际上就是给定分类器的模型结构),\(\varepsilon_\mathcal{S}(h)\)是可观测的,这样就给出了分类器h性能的上界。。。
搞笑了。。。下面越读越不对劲,感觉作者表述的不是很清楚,有时间再回来看看吧。

最新文章

  1. Thisgood
  2. Github+Jekyll —— 创建个人免费博客(二)Ruby+Jekyll部署
  3. 5、python第一天作业
  4. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q63-Q65)
  5. python global vs nonlocal (2)
  6. uva340 数字匹配检索问题
  7. apache添加php支持
  8. 新手笔记-tftp与yum
  9. 开源搜索引擎评估:lucene sphinx elasticsearch
  10. OpenCV3.0 HDR(高动态范围)示例代码以及用法
  11. 在WinForm应用程序中快速实现多语言的处理
  12. Vue小项目二手书商城:(二)axios前后端数据交互
  13. [leetcode]256. Paint House粉刷房子(三色可选)
  14. C#使用HttpWebRequest与HttpWebResponse模拟用户登录
  15. Android UIAutomator 定位
  16. Vim NerdTree
  17. day7面向对象--进阶
  18. 十七、ThreadPoolExecutor线程池
  19. 【html/css】模态框的实现
  20. php实现银联支付

热门文章

  1. Canal——增量同步MySQL数据到ElasticSearch
  2. 图解Go协程调度原理,小白都能理解
  3. LeetCode.1160-找到可以由给定字符组成的字符串(Find Words That Can Be Formed by Characters)
  4. k8s nginx-ingress 504 timeout
  5. Docker知识点总结
  6. mysql数据库之视图、触发器
  7. 数据传输协议protobuf的使用及案例
  8. Python 中__new__()和__init__()的区别
  9. linux系统目录权限实践及结论
  10. Linux(CentOS)下安装NVIDIA GPU驱动