迁移学习总结(One Shot Learning, Zero Shot Learning)

el/2024/5/21 20:30:00

转自: https://blog.csdn.net/XJTU_NOC_Wei/article/details/77850221

 

目录

 

  • 目录
  • 迁移学习
    • 综述
    • Source Data 与Target Data 都有标签
      • Fine-tuning
      • Multitask Learning
    • Source Data 有标签Target Data 没有标签
      • Domain-adversarial training
      • Zero-shot Learning
    •  
    • Source Data没有标签 Target Data 有标签
      • Self-taught Learning
    • Self-taught learning
    • Source Data 与Target Data 都没有标签
      • Self-taught Clustering

 

迁移学习

综述

这段时间要做元学习相关的工作所以,首先对迁移学习了简单的学习分类,接下来会持续更新对于元学习论文的阅读还有理解。 
以前接触最多的是图像的分类问题,我们将一个很大的数据集分为两个部分,一部分作为训练集,剩下的部分作为测试集。我们在训练集上面根据神经网络的基础算法比如back propagation 和 SGD算法对网络进行训练,训练结束之后用测试集对网络的泛化能力进行测试,通常用准确率表示。这就是简单的深度学习,这些学习任务的重点是训练出一个泛化能力很强的网络,由于是从相同的数据集里面抽离出来的,所以训练集还有测试集的种类都是相同的,没有多余的类。比如说,MNIST是一个简单的手写数字识别的库,训练集和测试集都是手写的数字,只包含0,1,2,3,4,5,6,7,8,9,0 十个数,不会让你完成其他的任务。 
相类似的问题如下图: 
这里写图片描述
可以看到在后面的两个任务里面做了我们看起来毫无关系的迁移学习,这实现起来是相当困难的,甚至可能不会取得很好的效果。 
更多的例子见:1 and 2 
下面我们对目前存在的迁移学习的种类进行分类,在迁移学习的学习任务中通常包括两个集合,Source Data还有 Target Data,source data。source data是我们解决问题之前就知道的相关的数据,它和Target任务之间存在一定的关系。Target Data

Source Data 与Target Data 都有标签

Fine-tuning

  • 任务描述:Source data: (xs,ys)(xs,ys) 拥有大量的数据。然而,Target data:(xt,yt)(xt,yt)只有少量的数据。
  • 简单的例子: (supervised) speaker adaption 
    Source data: audio data and transcriptions from many speakers 
    Target data: audio data and its transcriptions of specific user
  • 核心思想:training a model by source data, then fine-tune the model by target data,也就是说用大量的source data进行训练然后等到做实际的任务的时候就用Target Data对网络进行微调。在这个过程中,防止过拟合的出现显得尤为重要,这也是Model Fine-turning 的挑战。

简单的分类 
1:Conservative Training 
这里写图片描述
可以从上图看到,我们先用Source Data进行参数的训练,然后将训练好的参数考到Target Data的网络中(网络结构相同),然后用Target Data中的少量的数据对网络的参数进行微调达到迁移学习的目的,但是这个过程很可能会产生overfitting,为了解决这个问题,我们采用了下面的方法 
这里写图片描述
为了防止过拟合的发生,我们通常选择上图所示的方式,就是固定大多数的参数,只对神经网络中的某一些层进行训练,根据以往的经验,总结出了规律:

  • Which layer can be transferred (copied)? 
    Speech: usually copy the last few layers 
    Image: usually copy the first few layerswangwang

也就是当遇到语音识别的问题时,往往固定最后面的参数,然后用Target Data训练前面的层的参数,然而 当遇到Image问题时,通常选择保存前面的层的参数,然后对后面的层的参数进行微调。

Multitask Learning

多任务学习简单的理解就是,想让你用一个网络完成多种功能,甚至这个网络在完成多个任务训练之后,产生的效果比训练比训练单独的任务的效果好。 
这里写图片描述
可以看到,我们将speech的数据输入到一个网络中,然后在网络的某一层分为多个任务,然后对多个任务进行训练,在前面共同的层里面会保存这些语言的共同的特征,这样的话,识别的效果甚至比单独针对于特定语言的训练结果好,这里需要注意的问题是:这些任务之间要具有一定的相似性才行,比如,他们都是语言,只不过是语言的不同的分支,这些不同的task也可以用来做猫科动物,犬科动物等等的识别,相信比单独做效果要好。 
Multi-task learning for multiple language translation 
如果我们希望实现一个网络,他进行初始的训练之后具有一定的经验,比如说我们先学会了打篮球,然后用打篮球的网络去训练打排球,但是我们又不希望忘了打篮球的经验? 
这里写图片描述 
我们用一定的数据训练网络1,网络学会任务一的时候,我们用网络做任务一的经验去训练网络二同时不希望破坏网络一,这个时候我们将任务一的output按照图片所示给网络二,但是在更新参数的时候只更新网络二的参数,这样就不会改变网络一的参数。同时可以对网络2进行训练,但是这样做的话网络的参数会无限制增大,这会导致参数爆炸,所以为了解决这个问题,DeepMind又想出了另外一种方法。 
PathNet,它会对网络规模做一定的限制,对减少网络参数非常有意义。


Source Data 有标签,Target Data 没有标签

Domain-adversarial training

这种方法类似于GAN,我没有详细的了解这种方法,因为感觉和我目前要做的东西没有相关性。这里提供原文,有兴趣的可以自己去看看。 
Unsupervised Domain Adaptation by Backpropagation

Zero-shot Learning

这类问题可以用下面方式进行描述: 
Source Data 有标签而Target Data没有标签,同时Train和Test完成的任务是不同的。比如说,Source Data 是一些具有标签的小动物,猫猫狗狗。但是Target Data是草泥马的图片,并且没有标签告诉你这个是草泥马。问题描述如下图所示: 
这里写图片描述 
那么这个问题怎么去解决呢?第一个解决方案是进一步细化特征,比如说我们原来训练了猫,狗,然后用这个网络去测试一个我们都没有见过的物种,那么很明显是不能得到很好的结果的,那么如果是人,他就会进行推断。比如,这个物种,有几只眼睛几条腿。根据这些特征推断这个物种可能是哪种物种的变异体或者是近亲。 
这里写图片描述
举个例子,我们将动物的特征细化到是不是两个眼睛,是不是四条腿,是不是毛茸茸的,用多少条腿走路等等的信息,这样的话,训练的时候我们就可以训练出一个网络,这个网络可以识别出图片中特征的个数,这个时候当我们见到没有见过的生物的时候仍然可以通过特征对他们进行大致的识别和区分。

当没有source data 的时候,我们使用可以通过Convex Combination of Semantic Embedding的方法进行优化,具体的实现方式比较简单,比如说我们训练完了ImageNet 的网络,输入一张图片进行测试的时候网络会对图片有预测,预测的结果是5个,每个结果都会给出一定的概率,比如说举下面这个例子: 
这里写图片描述
这个例子中 ,我们选择了一张狮虎兽的照片输入网络进行测试,网络的输出结果是50%是狮子,50%是老虎,那么我们可以把两个的Vector做加权平均,得到的结果更加的准确。

这里写图片描述

Source Data没有标签 Target Data 有标签

Self-taught Learning

Self-taught learning

Source Data 与Target Data 都没有标签

Self-taught Clustering

Self-taught Clustering


http://www.ngui.cc/el/5179152.html

相关文章

YoloV1源码解析

准备阶段数据集的准备: ① 索引文件trainval.txt: 存放的是训练图片的名称 ② 图片文件: ③ 标签文件xml:

YoloV2之TensorFlow版源码解析

准备阶段数据集的准备: ① 索引文件trainval.txt: 存放的是训练图片的名称 ② 图片文件: ③ 标签文件xml: 网络的设计(分类训练与检测训练)

yolo1以及yolo2转载

物体检测论文-YOLO系列(转自: http://hellodfan.com/2017/10/11/%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B%E8%AE%BA%E6%96%87-YOLO%E7%B3%BB%E5%88%97/) 本次论文主要分为两个部分:YOLO和YOLO9000。 YOLO是Rgb大神在Object Detection上的新尝试…

从零起步构建自己的快速语义搜索模型

雷锋网按:本文为 AI研习社 编译的技术博客,原标题 The unreasonable effectiveness of Deep Learning Representations,作者为 Emmanuel Ameisen 。 翻译 | 付腾 王飞 汪鹏 校对 | 余杭 整理 | MY 训练电脑以人类的方式去看图…

(转)零次学习(Zero-Shot Learning)入门

零次学习(Zero-Shot Learning)入门 小栗子 转自:https://zhuanlan.zhihu.com/p/34656727?spm5176.9876270.0.0.399ce44aXsg7cN 谢谢作者 事物的本质反映世界构成的规律 408 人赞了该文章 很久没有更文章了,主要是没有找到…

1x1卷积核如何降低参数量

本文介绍1*1的卷积核与googlenet里面的Inception。正式介绍之前,首先回顾卷积网络的基本概念。 1. 卷积核:可以看作对某个局部的加权求和;它是对应局部感知,它的原理是在观察某个物体时我们既不能观察每个像素也不能一次观察整体…

Hadoop-集群网络配置(转)

转自&#xff1a; 虚拟机中Centos设置静态IP地址方法 (一)虚拟机设置 首先要修改一下虚拟机,<选择虚拟网络编辑器> 对照着上面的图一个一个解释吧. 首先要选择NAT模式,这里我选择的是VMnet8,也可以点击添加网络再添加一个; 然后就是下面的两个对勾✔一定要选上(DHCP…

centos中的防火墙问题

centos从7开始默认用的是firewalld&#xff0c;这个是基于iptables的&#xff0c;虽然有iptables的核心&#xff0c;但是iptables的服务是没安装的。所以你只要停止firewalld服务即可&#xff1a; sudo systemctl stop firewalld.service && sudo systemctl disable fi…

hadoop中运行map-reduce程序时,java.net.connectionException

about云开发 标题: mapreduce报错 java.net.ConnectException: Connection refused [打印本页] 作者: Wyy_Ck 时间: 2016-10-31 15:13标题: mapreduce报错 java.net.ConnectException: Connection refused弄了半天&#xff0c;系统是centos 7&#xff0c;本想执行一个测试下…

负数的二进制

负数的二进制转换&#xff0c; 其实&#xff0c; 容易&#xff0c; 容易理解。 https://jingyan.baidu.com/article/29697b9106eb52ab21de3c7a.html 方法/步骤 首先&#xff0c;来个-5&#xff0c; 实践出真知嘛。 把5转化为二进制字节形式。 得到101&#xff0c; 然后补零…
最新文章