0
点赞
收藏
分享

微信扫一扫

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

Gascognya 2022-04-22 阅读 133

迁移学习与元学习

-- TCA, Finetune, Triplet Network

主要想讲的内容有:

TCA, Finetune, Triplet Network

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

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

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

用到的场合

常用于解决的问题

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

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

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

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

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

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网络图

 

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.

 

Finetune

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

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

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

步骤

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

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

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

 

Triplet Network

用到的场合

常用于解决的问题

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

1.要解决什么问题?

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

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

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

2.用了什么办法解决?

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

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

 

属于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的计算,评价两个输入的相似度。

 

这种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中可学习的部分

元学习特点

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

例如与传统方法对比, 传统方法手动设定学习架构和参数, 学习目标: 什么是猫, 什么是狗 

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

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

元学习种类

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

 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

举报

相关推荐

0 条评论