迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)

主要想讲的内容有:

TCA, Finetune, Triplet Network

迁移学习与元学习有哪几类方法

想讲的目标(但不一定完全能写完, 下一次笔记补充):

分别属于什么方法, 处于什么位置, 它们之间的关联与区别

用到的场合

常用于解决的问题

例子 工业场景数据集, 解决什么问题, 结果

做了一件什么事, 可以处理什么问题

还是要具体一些,泛泛的说听完还是不知道是什么意思

元学习在使用时的整个流程, 配合什么过程完成目标

举具体的例子, 典型的模型/方法

目录

Motivation

TCA, Finetune, Triplet Network

TCA

Finetune

Triplet Network

方法对比总结

迁移学习

基于特征的迁移学习方法 (Feature based)

基于模型的迁移学习方法 (Model based)

元学习(multi-task)

元学习(Meta Learning)与迁移学习(Transfer Learning)的区别联系

元学习特点

元学习种类

参考资料

Multitask->transfer & meta

Triplet Network

meta learning

few-shot

Siamese Network

Triplet loss


Motivation

数据分布不同

目标任务不同

数据和任务两方面的动机

1. 需要利用一切可利用的数据, 故迁移不同分布的数据十分重要. 准确测量的数据容易过时, 随动态因素变化, 也需要从前一个时期的状态迁移过来.

2. 更大数据集上训练好的模型,针对于我们的任务进行微调/自适应更新

TCA, Finetune, Triplet Network

TCA, Finetune, Triplet Network所属领域(处于的位置)

TCA

属于迁移学习Transfer Learning-基于特征的迁移学习方法 (Feature based)

Finetune

属于迁移学习Transfer Learning-基于模型的迁移学习方法 (Model based)

Triplet Network

属于元学习Meta Learning-基于度量的方法Metric Based

Few-Shot Learning

Finetune和Triplet Network是小样本学习Few-Shot Learning (目标)的一种方法(手段) (目前应用的学习目标数据大多为图片)

TCA, Finetune, Triplet Network网络图

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第1张图片

TCA

回顾一下TCA的思想

TCA(Transfer Component Analysis)是迁移学习中, 一种基于特征(Feature based)的数据边缘分布自适应方法(Marginal Distribution Adaptation)

边缘分布自适应

目标: 减小两个域(源域和目标域数据)的边缘概率分布的距离,从而完成迁移学习

TCA目标

找特征映射φ, 源域与目标域共同做这个映射

1.得到的分布接近. minimizing the distance between P (ϕ(XS)) and P (ϕ(XT ))

$$ P(\mathbf{x}_s) \neq P(\mathbf{x}_t) \\ \mathop{\rightarrow}\limits^{\phi} P(\phi(\mathbf{x}_s)) \approx P(\phi(\mathbf{x}_t))  $$

度量距离: 最大均值差异(MMD,maximum mean discrepancy)

2. 最大化方差(保留数据特征信息)maximizing the data variance.

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第2张图片

Finetune

基于模型的迁移学习方法 (Model based Transfer Learning)

这是一种模型参数迁移的方法, 构建参数共享的模型.

训练一个Model,就是去更新它的权值,将权值认为是知识,把这些知识应用到新任务中去。

步骤

1.一般来说,一个神经网络模型可以分为Features Extractor(提取特征)和Classifer(分类)两部分.

2.通常我们习惯对Features Extractor的结构和参数进行保留,而仅修改Classifer来适应新任务。

3.这是因为新任务的数据量太小,预训练参数已经具有共性,不再需要改变,如果再用这些小数据训练,可能反而过拟合

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第3张图片

Triplet Network

用到的场合

常用于解决的问题

例子 工业场景数据集, 解决什么问题, 结果

1.要解决什么问题?

实质上,Triplet Network是Siamese Network的一种延伸,要解决的问题与Siamese Network的基本一致。

与Siamese Network一样,适用于解决样本类别很多(或不确定),然而训练数据集的样本数又很少的情况

(如人脸识别、人脸验证)。

2.用了什么办法解决?

思路:将图像映射到特征空间中,其中两幅图像输入CNN得到的特征向量之间的欧式距离即为相似度。

与Siamese Network不同的是,Triplet Network采用三个样本为一组:一个参考样本,一个同类样本,一个异类样本。

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第4张图片

属于Metric Based Meta Learning基于度量的元学习方法, 这里的度量, 就是输入样本的相似度

输入是一个三元组triplet=(a,p,n):

- an anchor(基准正例)

- a positive of the same class as the anchor (正例)

- a negative of a different class (负例)

Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现

共享权值的意思:

左右两个神经网络的权重一模一样. 在代码实现的时候,甚至可以是同一个网络,不用实现另外一个,因为权值都一样。

孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示。通过Loss的计算,评价两个输入的相似度。

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第5张图片

这种loss函数(contrastive loss)的目标是比较两组特征的距离

triplet loss的目标是:

两个具有同样标签的样本,他们在新的编码空间里距离很近。

两个具有不同标签的样本,他们在新的编码空间里距离很远。

要获得这样一个特征表示, 使同类距离小(d(a,p)), 异类距离大(-d(a,n))

在contrastive loss的基础之上构建了一个新的loss函数,就是保持类内和类间距离有一个距离限制(margin)。

其triplet loss就可以写作:

$$ \mathcal{L} = max(d(a, p) - d(a, n) + margin, 0) $$

最小化上述损失函数,a与p之间的距离d(a,p)=0,

a与n之间的距离d(a,n)大于d(a,p)+margin。

当negative example很好识别时,上述损失函数为0: 只需要可以区分开负例, 不需要负例无限远, 过远了没有那么大意义, 也影响整体loss

方法对比总结

迁移学习

基于特征的迁移学习方法 (Feature based)

特征进行变换. 假设源域和目标域的特征原来不在一个空间,或者在原来那个空间上不相似,把它们变换到一个空间里面

TCA基于特征的迁移:

通过将数据特征变换到统一特征空间中, 再用机器学习方法进行分类识别

基于模型的迁移学习方法 (Model based)

构建参数共享的模型.

固定前面若干层的参数,只针对我们的任务,微调后面若干层

Finetune基于模型的迁移:

源域中的数据与目标域中的数据可以共享一些模型的参数

元学习(multi-task)

元学习(Meta Learning)与迁移学习(Transfer Learning)的区别联系

迁移重点在于data distribution发生变化时, 强调从已有任务中学习特定一个新任务

元学习也是across-task的一种方法.

元学习更偏重于任务和数据的双重采样(task distribution), 任务和数据一样是需要采样的,而学习到的F(x)可以帮助在未见过的任务f(x)里迅速建立mapping

学习的不是直接完成任务的函数, 而是着重于上层, leaning Algorithm中可学习的部分

元学习特点

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第6张图片

元学习侧重于学习在传统方法中人为设定的可变的部分: 网络结构/初始参数等等

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第7张图片例如与传统方法对比, 传统方法手动设定学习架构和参数, 学习目标: 什么是猫, 什么是狗 

在Metric Based Meta Learning的Triplet Network中学习的目标是学习如何去比较(compare)两个图片是相同的还是不同的类

Meta中的一个within-task training+一个within-task testing合起来=episode

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第8张图片

要做一次完整的训练再做一次测试才能计算出一个完整的l

ML的经验对于元学习的推广

1. 过拟合时搜集更多的训练任务(training task/ training data)

2.任务增强(task augmentation/ data augmentation)

3.学习learning rate学习率的时候的学习器又有超参数

4.验证任务(development task/development set验证集)

 

在meta learning中什么是可以学习的

元学习要训练的目标指的是是什么

最常用的学习算法中可人工设定改变的部分:

基于梯度下降方法的各个组件

梯度下降法(Gradient Descent): 首先初始化参数,然后用训练数据不断求参数对应梯度,并更新参数,反复下去直到满足停止条件。

一个基于梯度下降的神经网络中每一个由人给定的部分都是可以利用元学习来进行学习的

初始化参数Initialization

学习初始化参数的元学习方法: MAML

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第9张图片

 

 Model-Agnostic Meta-Learning (MAML)

/mæməl/

MAML很难train, maml++容易train一点

MAML与预训练pre-training区别

与预训练pre-training有点相似, 都是找初始化参数. 但Maml是有好几个训练任务, pre-training的经典做法是multi-task learning:

把好几个任务的数据倒在一起, 找一组好的初始化参数, 用在测试任务上.

这个方法常用来当作meta 的baseline, 因为用的数据集相同.

一个meta业配(=打广告)

Maml好的关键不是初始参数能快速到达各个最优参数(快速学习rapid learning), 而是feature reuse(本来就离各个最优参数很近了), 才能做到ANIL(almost no inner loop)

优化器Optimizer

如learning rate, momentum

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第10张图片

 

Learning to learn by gradient descent by gradient descent

网络结构network structure

Network Architecture Search (NAS)

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第11张图片

 

网络结构中的参数,由于大多是离散值,我们可能无法对其计算微分

对网络架构的学习可以利用强化学习, 网络架构Φ看成agent的输入参数, 输出是和该架构相关的各个超参数(如RNN中每一层filter的高, 宽, 数量).

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第12张图片

 

最大化reward, 将-reward看成优化目标.

根据得到的参数构建网络, 进行训练, 得到效果(精确度)作为得到的损失继续训练架构Φ.

数据处理过程data processing

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第13张图片

 

数据增强data augmentation

之前的数据增强方法是用人工设计的方法trail and error

meta 自动找数据增强的方法

样本权重策略Sample Reweighting

训练时给不同的样本不同的权重

传统衡量权重的两种相反方法: 与分类边界的距离近时更难(权重大)/噪声更大(权重小)

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第14张图片

 

metric-based approach

Learning to compare

到目前为止,我们所有模型建立的过程都是,先利用Learning Algorithm学出一个模型,然后用训练得到的模型经过测试集得到分类结果。直接将训练资料和验证资料都扔给一个Function,就可以直接根据验证资料输出对应的结果。这种方法叫做Learning to compare

直接训练网络, 将其参数作为训练目标Φ, 直接输入训练数据, 直接输出训练结果

可以看作学习器发明了新的学习算法.

之前一个episode内部是把训练过程与测试过程分开, 训练一个大网络, 把训练数据和测试数据共同放进去, 直接给出测试答案

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第15张图片

 

元学习种类

元学习主要有三类常见的方法:基于度量的方法(metric-based),基于模型的方法(model-based),基于优化的方法(optimization-based)

迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)_第16张图片

 kθ is a kernel function measuring the similarity between xi and x.

基于度量的方法(metric-based)

目标就是学到一个不同样本之间的metric或者说是距离函数

显式的学习了输入数据的嵌入向量(embedding vectors),得到合适的距离函数kernel function

基于模型的方法

主要指快速学习的模型生成方法,快速学习指的是这个模型可以根据少量的训练快速更新参数。有两种方式可以实现快速学习,

1.设计好模型的内部架构使其能够快速学习,2.用另外一个模型来生成快速学习模型的参数。

Meta Networks: 专门针对多任务间快速泛化设计的元学习模型

一般神经网络的权重是根据目标函数进行随机梯度下降更新的,但这个过程很慢。一种更快的学习方法是利用另外一个神经网络,预测当前神经网络的参数,预测出来的参数被称为快参数。而普通SGD生成的权重则被称为慢参数

基于优化的方法

深度学习模型通过反向传播梯度进行学习。然后基于梯度的优化方法并不适用于仅有少量训练样本的情况,也很难在短短几步之内达到收敛。

调整现有的优化算法使得模型能够在仅有少量样本的情况下学好->这就是基于优化的元学习算法的目标。

如MAML

Model-Agnostic Meta-Learning

寻找一个在给定任意任务后微调过程最高效的模型参数

参考资料

Multitask->transfer & meta

区别联系参考:

https://www.zhihu.com/question/299020462

https://zhuanlan.zhihu.com/p/146877957

Triplet Network

参考腾讯云简介

https://cloud.tencent.com/developer/article/1716613

吴恩达视频课

https://www.bilibili.com/video/BV1XE411Z752

小样本学习: 孪生网络(连体网络):

Few-Shot Learning: Siamese Network

https://www.bilibili.com/video/BV1vQ4y1R7dr

meta learning

综述博客:

https://www.zhihu.com/question/362627625/answer/954283719

meta-learning的三种思路:Metric-based, Model-based, Optimization-based

https://lilianweng.github.io/posts/2018-11-30-meta-learning/

https://wei-tianhao.github.io/blog/2019/09/17/meta-learning.html

李宏毅课程:

https://www.bilibili.com/video/BV1KF41167VZ/?spm_id_from=333.788.recommend_more_video.3

few-shot

wangshusen的B站小课

https://www.bilibili.com/video/BV1V44y1r7cx/

meta和few-shot关系:

https://www.zhihu.com/question/291656490/answer/1478111669

Chelsea Finn和Sergey Levine在ICML19的tutorial中详细解释了与k-shot/transfer/multi-task learning的关系/异同:

https://youtube.videoken.com/embed/DijI4XrhqNo?tocitem=14

ICML 2019 Tutorial: Meta-Learning: from Few-Shot Learning to Rapid Reinforcement Learning

few-shot的3个研究方向:

https://zhuanlan.zhihu.com/p/66552960

https://zhuanlan.zhihu.com/p/156830039

Siamese Network

网络结构介绍参考:

https://zhuanlan.zhihu.com/p/55254100

https://zhuanlan.zhihu.com/p/35040994

Triplet network,论文是《Deep metric learning using Triplet network》:

https://arxiv.org/pdf/1412.6622.pdf

论文翻译:

https://blog.csdn.net/qq_32642107/article/details/102654790

Triplet loss

Triplet Network, Triplet Loss及其tensorflow实现参考:

https://zhuanlan.zhihu.com/p/35560666

代码:

https://github.com/omoindrot/tensorflow-triplet-loss

你可能感兴趣的:(人工智能,迁移学习,元学习)