Transfer Learning 迁移学习

什么是迁移学习

迁移是属于机器学习的一种研究领域。它专注于存储已有问题的解决模型,并将其利用在其他不同但相关问题上。
比如说,用来辨识汽车的知识(或者是模型)也可以被用来提升识别卡车的能力。
计算机领域的迁移学习和心理学常常提到的学习迁移在概念上有一定关系,但是两个领域在学术上的关系非常有限。

wiki

迁移学习的可行性一定基础上建立在人类的行为上,因为人类是不断在做迁移学习的。在有一些不相關的data的情況下來幫助當前的task。

比如对猫和狗进行分类有一些不相关的数据,是否能帮助迁移学习?
做大象和老虎的分类, same domain
用高飞和加菲猫做猫和狗的分类. same task

在这里插入图片描述不相关的data 做transfer learning 是否可能呢?

任务非相关数据
想做台语的语音识别从youtube上搜寻到很多英语等其他语言的数据
图片识别, 做医疗影像诊断网上很多非医疗图片
分析某种特别的法律文件,文本识别网络上搜集的一大堆数据

概述

transfer learning 有很多方法, 不同文献有不同的术语.
根据源数据(不直接相关数据)和目标数据(和当前task相关)是否有label 分.
在这里插入图片描述

Model Fine-tuning

在这里插入图片描述
target data 少, source data 很多
(target量很少, 可以说成one shot learning, 目标数据非常少)

例子: 说话者声音调整

  • 目标数据: 只有某个人的少量数据.
  • 源数据 :来自不同人的声音数据

思想:
使用源数据进行训练, 然后把训练出来的模型用目标数据进行微调.
难点:有限的目标数据可能导致overfitting.

2 Tips 改善overfitting

Conservative Training

在这里插入图片描述加regulization限制 ,使新的model 的output 和旧的model在遇到同样data的时候差距越小越好.
也可以说新旧的L2 norm 越小越好, 参数差距越小越好.

Layer Transfer

在这里插入图片描述

  • 旧model拿出某几个layer copy到新的model.
    • source data 只去train 没有copy的layer, 考虑参数很少, 可以减少overfitting.
    • source data 如果够多也可以微调整个network.

在这里插入图片描述

  • 哪些layer 应该被transferred? case by case
    • 语音辨识, copy 最后的几层, train input的层.
      同样的发音方式, 每个人的声音是不一样的. 前面层处理语者发言方式, 最后几层和语者没有关系, 用来获得辨识的文字.
    • 图像辨识, copy 最前面几层, train 最后几层.
      learn一个souce data的时候前面几层做的是detect, 用来处理图像的直线或者最简单的图形, 可以transfer, 最后几层learn的东西是extract. 不好transfer.

layer transfer 两个实验
在这里插入图片描述
横轴, copy的layer, 纵轴, accuracy.
红色的两条线,
line4. 只train rest layer, 拷贝1层layer的时候, 有提升, 后面随着layer 增加会drop accuracy.
line5, copy 之后, fine-tune 整个network, 提升
在这里插入图片描述
data 差距比较大, 比如source data 是自然的事物, target data是人造的事物, train的时候performence掉的比较多.
但是copy前几层影响不大. 第一个layer 做的事情是一样的.

Multitask Learning

和fine-tuning比较 , fine-tuning 关注 目标数据上做的好不好.
multitask learning 同时关注源数据和目标数据.
在这里插入图片描述
model 架构.
对2个task , 如果有共通性, 可以share input, 后面层再分别训练.
或者只share 中间层在同一个domain.

例子, 多国语音识别模型. 前面几层share 共同的参数.

在这里插入图片描述在这里插入图片描述

不同语言可以互相transfer也是ok的. 用欧洲语言,transfer 到中文,
横轴, 中文的语音data 时长. 在中文很少的时候 欧洲语言的source data 也会对 中文有帮助.
在有欧洲语言数据辅助的情况下,只用大约50小时的中文数据可以达到用100小时中文数据单独训练的效果

transfer learning 会不会有负面效应?
可能, 如果data之间不像, 会把结果弄糟了. 还需要判断两个data之间能不能transfer.

所以有人提出progressive neural network.
在这里插入图片描述
task 2 的每一个hidden layer 接前面task 1的某一个隐层的output. task2 没有动task1 model , 不会让task1 变差. 当task2 借用1的参数, 可以设置成0 , 也不会影响.

Domain-adversarial training(target data unlabeled, source data labelled)

在这里插入图片描述
用mnist transfer minist-M, target data 没有label ,作为test data,
如果直接train source data 再训练, 结果是很差的. testing data 是彩色的. 需要训练一个model , 能apply 目标数据.

在这里插入图片描述
input image, NN 前面几层在做特征提取feature extraction, 后面几层classifer label.
把前面几层的结果显示出来, 不同domain data, feature 完全不一样.
蓝色是minist 抽出来的是10群, 表示数字. 红色是彩色数字提取的, 混在一起.
后面分类可把蓝色的做好. 红色的无能为力.

在这里插入图片描述
解决方法是希望特征提取的输出把 不同domain特性取消掉, 把他们混在一起.
在特征提取的输出丢给domain classier, 域分类器做的是区分feature是属于那个domain. 和gan比较相似的思想
gan是产生一个图片, 骗过descriminator判别器. 生成图片是比较难的 , 但骗过域分类器很简单. 有的solusion 这里域分类器不管看到什么只要把域分类器输出0 就可以了.

在这里插入图片描述
因为域分类器很容易欺骗, 所以其要增加任务难度. 使得 特征提取既要欺骗域分类器, 还要满足label预测出结果.
消掉域的特性,保留预测label的特性.
3个nn, 都有不同的目标,他们组成一个大的network.

在这里插入图片描述
特性提取怎么陷害队友域分类器, 加一个gradient reversal layer, 梯度反转层.
就是在做反响传播的时候, 域分类器传给feature提取什么数据,就在数据上加负号. 使得value 方向相反.
domain classifier看不到真正的image, 最后会失效.

但是, 域分类器一定要奋力挣扎, 才死掉, 要让特征提取做到极限.

当把特征提取器、域分类器和类别预测器都训练完成后,就可以做到把源域和目标域混合在一起并且进行分类了

paper中的实验结果比较.
直接source learning 结果差, 第三行proposed approach是domain-adversarial training
在这里插入图片描述更多参考文章
迁移学习:DANN域对抗迁移网络

Zero-shot Learning (labelled source, unlabelled target)

和Domain-adversarial training比, 更严格, 要求task 也差别很大.

attribute embedding

在这里插入图片描述
例子, source data 只有猫狗的图片, 目标数据 是羊驼驼, 怎么识别没有traning过的动物?
在声音识别的领域, training 的词汇 和test 词汇不同, test出现完全没有train 过的词汇. 语音上怎么解决这个问题呢?
不要直接辨识一段声音属于哪个word, 而是辨识声音属于哪个phoning(音标), 建文字和phoning 之间的字典. 然后去查表.

影像上怎么做?

在这里插入图片描述在这里插入图片描述

给分类定义attributes,存在数据库里. 辨识每张image 具备哪个属性. 每个class 分类的属性组合是不重复的.

input 一张image, 虽然是没有见过的动物, 但是输出属性后查表, 看和哪个class 最接近.

有时候属性特别复杂, 可以做属性的embedding. 训练f, g 的 NN, attribute 和 image的vector
把traning data的每一张image 通过trasform 变成embedding space 上的一个点. embedding 降维
把所有属性也变成embedding space 的一个点. 最后让两个点越近越好.
在这里插入图片描述
如果我们没有数据库(没有属性数据)呢?

借用Word Vector的概念:word vector的每一个dimension代表了当前这个word的某一个属性,所以其实我们也不需要知道具体每个动物对应的属性是什么,只要知道每个动物对应的word vector就可以了。即将属性换成word vector,再做embedding。

Zero-shot Learning 的训练
在这里插入图片描述loss 最小时, f(xn)*g (xn) - 所有其他两个点的积 > k. k自己定义, 保证pair 起来的attribue 和 image 拉近, 也要把不成pair 的拆散.
一对f,g 靠近, 不成对的越远越好.

Convex Combination of Semantic Embedding

更简单的zero-shot learning 的方法, Convex Combination of Semantic Embedding

有一个现成的图像辨识系统和word vector.
狮虎分类器, 图片识别出有0.5的几率是lion, 0.5的几率是tiger. 再去找lion 和 tiger的word vector, 然后word vector 分别乘以0.5. 最后看结果和哪个word vector最接近

在这里插入图片描述
结果对比, 普通CNN,做Embedding的Zero-shot Leaning,Convex Combination of Semantic Embedding三种方法
在这里插入图片描述

machine translation 的例子

不同语言不同language 通过学习后的 decoder 会在 embedding space 把语言变成vector, 三种语言讲的同一个意思, 它们会在差不多的位置. input , output 没有看过, 也可以知道大概的位置, 再转成已经知道的语言.

在这里插入图片描述在这里插入图片描述

More about Zero-shot learning
• Mark Palatucci, Dean Pomerleau, Geoffrey E. Hinton, Tom M.
Mitchell, “Zero-shot Learning with Semantic Output Codes”, NIPS
2009
• Zeynep Akata, Florent Perronnin, Zaid Harchaoui and Cordelia
Schmid, “Label-Embedding for Attribute-Based Classification”,
CVPR 2013
• Andrea Frome, Greg S. Corrado, Jon Shlens, Samy Bengio, Jeff
Dean, Marc’Aurelio Ranzato, Tomas Mikolov, “DeViSE: A Deep
Visual-Semantic Embedding Model”, NIPS 2013
• Mohammad Norouzi, Tomas Mikolov, Samy Bengio, Yoram
Singer, Jonathon Shlens, Andrea Frome, Greg S. Corrado, Jeffrey
Dean, “Zero-Shot Learning by Convex Combination of Semantic
Embeddings”, arXiv preprint 2013
• Subhashini Venugopalan, Lisa Anne Hendricks, Marcus
Rohrbach, Raymond Mooney, Trevor Darrell, Kate Saenko,
“Captioning Images with Diverse Objects”, arXiv preprint 2016

self-taught learning 和 Self-taught Clusteringself

半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作
self-taught learning 是半监督学习, 和半监督学习比, unlabel
data 和 source data 和target data 关系比较远.

我们可以尝试利用大量的没有label的源数据去learn 一个好的 feature extractor. 提取出更好的representation(无监督方法),再用这个feature extractor去帮助有标签的目标数据抽feature的学习任务。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值