# 迁移学习笔记
## 迁移学习简介
### 迁移学习
1. 迁移学习的**定义**是具有将在以前的领域/任务中学习到的知识和技能应用到新的领域/任务中的能力的系统。
2. 迁移学习里有两个非常重要的**概念**:
**域(Domain)** :可以理解为某个时刻的某个特定领域,比如书本评论和电视剧评论可以看作是两个不同的domain
**任务(Task)** :就是要做的事情,比如情感分析和实体识别就是两个不同的task
3. 迁移学习的**关键点**:
- 研究可以用哪些知识在不同的领域或者任务中进行迁移学习,即不同领域之间有哪些共有知识可以迁移。
- 研究在找到了迁移对象之后,针对具体问题所采用哪种迁移学习的特定算法,即如何设计出合适的算法来提取和迁移共有知识。
- 研究什么情况下适合迁移,迁移技巧是否适合具体应用,其中涉及到负迁移的问题。
4. 迁移学习的意义
大数据与少标注 大数据与弱计算 普适化与个性化 特定应用需求
### 迁移学习研究领域
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191127095318217.png" alt="image-20191127095318217" style="zoom: 50%;" />
### 迁移学习应用领域
1. **计算机视觉** Domain Adaptation
2. **文本分类** 将电影评论文本数据集训练的分类器应用在别的领域评论的预测
3. **时间序列** 行为识别 室内定位
4. **医疗健康** 帮助解决难点问题:“无法获取足够有效的医疗数据”
## 迁移学习基础知识
### 领域(Domain)
**源领域(Source Domain)**:有知识、有大量数据标注的领域的对象。
**目标领域(Source Domain)**:赋予知识、赋予标注的对象。
知识从源领域传递到目标领域,就完成了迁移。
### 任务(Task)
**任务是学习的目标,由标签和标签对应的函数构成。**
### 形式化
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191127234357349.png" alt="image-20191127234357349" style="zoom:67%;" />
### 领域自适应(DA)
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191127235618731.png" alt="image-20191127235618731" style="zoom:67%;" />
### 度量准则
度量是迁移学习的重要工具,它的核心是衡量两个数据域的差异。
度量就是描述源域和目标域这两个领域的距离:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000142876.png" alt="image-20191128000142876" style="zoom:67%;" />
#### 常见的几种距离
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000220784.png" alt="image-20191128000220784" style="zoom: 67%;" />
#### 相似度
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000255084.png" alt="image-20191128000255084" style="zoom:67%;" />
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000307520.png" style="zoom: 67%;" />
#### KL 散度与 JS 距离
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000555481.png" alt="image-20191128000555481" style="zoom: 67%;" />
#### 最大均值差异MMD
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000828159.png" alt="image-20191128000828159" style="zoom:67%;" />![image-20191128000916375](/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000916375.png)
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000828159.png" alt="image-20191128000828159" style="zoom:67%;" />![image-20191128000916375](/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128000916375.png)
## 迁移学习的基本方法
### 基于样本迁移
基于样本的迁移学习方法 (Instance based Transfer Learning) 根据一定的权重生成规 则,对数据样本进行重用,来进行迁移学习。 在迁移学习中,对于源域 Ds 和目标域 Dt,通常假定产生它们的概率分布是不同且未知的 (P(xs) ̸= P(xt))。另外,由于实例的维度和数量通常都非常大,因此,直接对 P(xs)和P(xt)进行估计是不可行的。因而,大量的研究工作着 眼于对源域和目标域的分布比值进行估计 (P (xt )/P (xs ))。所估计得到的比值即为样本的权 重。这些方法通常都假设 P(xt) /P(xs) < ∞ 并且源域和目标域的条件概率分布相同 (P(y|xs) = P (y|xt))。
TrAdaboost 方法,将 AdaBoost 的思想应用于迁移学习中,提高有利于目标分类任务的实例权重、降低不利于目标分类任务的实例权重,并基于 PAC 理论推导了模型的泛化误差上界。TrAdaBoost 方法 是此方面的经典研究之一。
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128001606019.png" alt="image-20191128001606019" style="zoom:50%;" />
### 基于特征迁移
是指将通过特征变换的方式互相迁移 ,来减少源域和目标域之间的差距;或者将源域和目标域的数据特征变换到统一特征空间中,然后利用传统的机器学习方法进行分类识别。根据特征的同构和异构性,又可以分为同构和异构迁移学习。
迁移成分分析方法 (Transfer Component Analysis, TCA) 是其中较为典型的一个方法。该方法的 核心内容是以最大均值差异 (Maximum Mean Discrepancy, MMD)作为度量准则,将不同数据领域中的分布差异最小化。
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128003208121.png" alt="image-20191128003208121" style="zoom:50%;" />
### 基于模型迁移
基于模型的迁移方法 (Parameter/Model based Transfer Learning) 是指从源域和目 标域中找到他们之间共享的参数信息,以实现迁移的方法。这种迁移方式要求的假设条 件是:源域中的数据与目标域中的数据可以共享一些模型的参数。目前绝大多数基于模型的迁移学习方法都与深度神经网络进行结合 。
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128111528027.png" alt="image-20191128111528027" style="zoom:50%;" />
### 基于关系迁移
基于关系的迁移学习方法 (Relation Based Transfer Learning) 与上述三种方法具有截 然不同的思路。这种方法比较关注源域和目标域的样本之间的关系。
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128115941722.png" alt="image-20191128115941722" style="zoom:50%;" />
### 第一类方法:数据分布自适应
### 第二类方法:特征选择
### **第三类方法:子空间学习**
### 深度迁移学习
#### *DDC*
深度网络中最重要的是网络损失的定义。绝大多数深度迁移学习方法都采用了以下的
损失定义方式:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128131644649.png" alt="image-20191128131644649" style="zoom:50%;" />
其中,l 表示网络的最终损失,lc(Ds, ys) 表示网络在有标注的数据 (大部分是源域) 上 的常规分类损失 (这与普通的深度网络完全一致),lA(Ds, Dt) 表示网络的自适应损失。最后 一部分是传统的深度网络所不具有的、迁移学习所独有的。此部分的表达与我们先前讨论 过的源域和目标域的分布差异,在道理上是相同的。式中的 λ 是权衡两部分的权重参数。
DDC 固定了 AlexNet 的前 7 层,在第 8 层 (分类器前一 层) 上加入了自适应的度量。自适应度量方法采用了被广泛使用的 MMD 准则。DDC 方法 的损失函数表示为:
#### <img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128131318030.png" alt="image-20191128131318030" style="zoom:67%;" />
##### deep_coral
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128133559974.png" alt="image-20191128133559974" style="zoom:50%;" />
CORAL损失函数的定义:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128133806705.png" alt="image-20191128133806705" style="zoom:50%;" />
协方差矩阵:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128133913764.png" alt="image-20191128133913764" style="zoom: 50%;" />
梯度计算:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128133954087.png" alt="image-20191128133954087" style="zoom:50%;" />
结果:
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128134200964.png" alt="image-20191128134200964" style="zoom:50%;" />
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128134222591.png" alt="image-20191128134222591" style="zoom:50%;" />
A图:coral loss使得target task有所提升,source task准确率基本不变。
B图:classification loss跟 CORAL loss是相互抗衡的,最终达到稳态。
#### DAN
<img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191128132345638.png" alt="image-20191128132345638" style="zoom:50%;" />