迁移学习 transfer learning
本文会持续更新~
1 零次学习
零次学习(zero-shot learning,本文简称ZSL)是迁移学习中一个研究分支,此外还有一次学习,它们所使适用的假设条件是不一样的,但是目的都差不多:根据已有的信息,用特殊的方式训练模型,使模型具有推断已有信息以外的能力。
下图概括了迁移学习中的ZSL问题:
我有一些关于马、驴、老虎、鬣狗、企鹅、熊猫的图片作为训练数据,并且给一个描述:模型训练阶段没有遇见的新物种斑马具有 马的身材、条纹、黑白颜色 这三种特点,我们的任务是训练一个模型使得它能够判断图片中的动物是否为斑马?
ZSL就是希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。这样的能力听上去很具有吸引力,那么到底是怎么实现的呢?
我们假设:
(1)训练集数据 XtrainX_{train}Xtrain 及其标签 YtrainY_{train}Ytrain ,包含了模型需要学习的类别(马、老虎和熊猫),这里和传统的监督学习中的定义一致;
(2)测试集数据 XtestX_{test}Xtest及其标签YtestY_{test}Ytest ,包含了模型需要辨识的类别(斑马)。
(3)训练集类别的描述 AtrainA_{train}Atrain ,以及测试集类别的描述 AtestA_{test}Atest ;我们将每一个类别 yi∈Yy_i \in Yyi∈Y ,都表示成一个语义向量 ai∈Aa_i \in Aai∈A的形式,而这个语义向量的每一个维度都表示一种高级的属性,比如“黑白色”、“有尾巴”、“有羽毛”等等,当这个类别包含这种属性时,那在其维度上被设置为非零值。对于一个数据集来说,语义向量的维度是固定的,它包含了能够较充分描述数据集中类别的属性。
在ZSL中,我们希望利用 XtrainX_{train}Xtrain 和 YtrainY_{train}Ytrain 来训练模型,而模型能够具有识别 XtestX_{test}Xtest 的能力,因此模型需要知道所有类别的描述 AtrainA_{train}Atrain 和 AtestA_{test}Atest 。ZSL这样的设置其实就是上文中小暗识别斑马的过程中,爸爸为他提供的条件。
下图概括了ZSL做了什么:
实现ZSL功能似乎需要解决两个部分的问题:第一个问题是获取合适的类别描述 AAA;第二个问题是建立一个合适的分类模型。目前大部分工作都集中在第二个问题上,而第一个问题的研究进展比较缓慢。
2 实现算法
ZSL的算法有很多,本文仅介绍最简单的算法。我们面对的是一个图片分类问题,即对测试集的样本 XtestX_{test}Xtest 进行分类,而我们分类时需要借助类别的描述 AtestA_{test}Atest,由于每一个类别 y∈Yy \in Yy∈Y ,都对应一个语义向量 ai∈Aa_{i} \in Aai∈A ,因此我们现在可以忘掉 Y,直接使用 AAA 。我们把 FFF(利用深度网络提取的图片特征,比如GoogleNet提取为1024维)称为特征空间(visual feature space),所以 Ftrain和FtestF_{train}和F_{test}Ftrain和Ftest 分别是对 XtrainX_{train}Xtrain 和 XtestX_{test}Xtest 提取得到的特征向量,把类别的语义表示为 AAA ,称为语义空间。我们要做的,其实就是建立特征空间与语义空间之间的映射。
对于分类,我们能想到的最简单的形式就是岭回归(ridge regression)(类似单层DNN),俗称均方误差加范数约束,具体形式为:
min∥FtrainW−Atrain∥2+ηΩ(W)min \Vert F_{train}W - A_{train} \Vert ^2 + \eta \Omega(W)min∥FtrainW−Atrain∥2+ηΩ(W)
其中,WWW 为模型参数, Ω()\Omega()Ω() 通常为2范数约束, η\etaη 为超参,对 WWW 求导,并让导为0,即可求出 WWW 的值(即最优WWW)。测试时,利用 WWW 将 f∈Ftestf \in F_{test}f∈Ftest 投影到语义空间中,并在该空间中寻找到离它最近的 ai∈Atesta_i \in A_{test}ai∈Atest ,则样本的类别为aia_iai所对应的标签yi∈Ytrainy_i \in Y_{train}yi∈Ytrain 。
我们使用AwA数据集,图片事先利用GoogleNet提取了特征(1024维),在测试集上可以得到59.1%的准确率。
这样一个岭回归之所以有效,是因为训练集类别语义 $ A_{train}$ 与测试集类别语义AtestA_{test}Atest之间存在的密切联系。其实任何ZSL方法有效的基础,都是因为这两者之间具体的联系。
3 存在的问题
在此,介绍一些目前ZSL中主要存在的问题,以便让大家了解目前ZS领域有哪些研究点。
3.1 领域漂移问题
该问题的正式定义首先由[2]提出。简单来说,就是同一种属性,在不同的类别中,视觉特征的表现可能很大。如图3所示,斑马和猪都有尾巴,因此在它的类别语义表示中,“有尾巴”这一项都是非0值,但是两者尾巴的视觉特征却相差很远。如果斑马是训练集,而猪是测试集,那么利用斑马训练出来的模型,则很难正确地对猪进行分类。
domain shift示意图,图中的prototype表示类别在语义空间中的位置[2]
3.2 枢纽点问题(Hubness problem)
这其实是高维空间中固有的问题:在高维空间中,某些点会成为大多数点的最近邻点。这听上去有些反直观,细节方面可以参考[3]。由于ZSL在计算最终的正确率时,使用的是K-NN,所以会受到hubness problem的影响,并且[4]中,证明了基于岭回归的方法会加重hubness problem问题。
语义间隔(semantic gap)
样本的特征往往是视觉特征,比如用深度网络提取到的特征,而语义表示却是非视觉的,这直接反应到数据上其实就是:样本在特征空间中所构成的流型与语义空间中类别构成的流型是不一致的。(如下图所示)
这使得直接学习两者之间的映射变得困难。
参考:
https://zhuanlan.zhihu.com/p/34656727
[2]Transductive Multi-View Zero-Shot Learning.
[3]Hubness and Pollution: Delving into Class-Space Mapping for Zero-Shot Learning.
迁移学习 transfer learning相关推荐
- 迁移学习(Transfer learning)、重用预训练图层、预训练模型库
迁移学习(Transfer learning).重用预训练图层.预训练模型库 目录 迁移学习(Transfer learning).重用预训练图层.预训练模型库 迁移学
- 深度学习不得不会的迁移学习Transfer Learning
http://blog.itpub.net/29829936/viewspace-2641919/ 2019-04-18 10:04:53 目录 一.概述 二.什么是迁移学习? 2.1 模型的训练与预 ...
- 迁移学习(transfer learning)与finetune的关系?【finetune只是transfer learning的一种手段】
目录 1.迁移学习简介 2.为什么要迁移学习? 3.迁移学习的几种方式 1)Transfer Learning: 2)Extract Feature Vector: 3)Fine-tune: 4.三种 ...
- 迁移学习(Transfer Learning)的背景、历史
迁移学习(Transfer Learning)的背景.历史 迁移学习的背景.历史及学习 1.迁移学习提出背景 在机器学习.深度学习和数据挖掘的大多数任务中,我们都会假设training和inferen ...
- PyTorch 迁移学习 (Transfer Learning) 代码详解
PyTorch 迁移学习 代码详解 概述 为什么使用迁移学习 更好的结果 节省时间 加载模型 ResNet152 冻层实现 模型初始化 获取需更新参数 训练模型 获取数据 完整代码 概述 迁移学习 ( ...
- 【深度学习系列】迁移学习Transfer Learning
在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...
- 迁移学习 Transfer Learning—通俗易懂地介绍(常见网络模型pytorch实现)
前言 你会发现聪明人都喜欢"偷懒", 因为这样的偷懒能帮我们节省大量的时间, 提高效率. 还有一种偷懒是 "站在巨人的肩膀上". 不仅能看得更远, 还能看到更多 ...
- 迁移学习(Transfer Learning)概述及代码实现(full version)
基于PaddlePaddle的李宏毅机器学习--迁移学习 大噶好,我是黄波波.希望能和大家共进步,错误之处恳请指出! 百度AI Studio个人主页, 我在AI Studio上获得白银等级,点亮2个徽 ...
- 迁移学习(Transfer Learning)概述及代码实现
基于PaddlePaddle的李宏毅机器学习--迁移学习 大噶好,我是黄波波,希望能和大家共进步,错误之处恳请指出! 百度AI Studio个人主页, 我在AI Studio上获得白银等级,点亮2个徽 ...
- 【深度学习】迁移学习 (Transfer Learning)
Introduction 把别处学得的知识,迁移到新场景的能力,就是"迁移学习". 具体在实践中体现为: 将 A任务上 预训练好的模型 放在B任务上,加上少量B任务训练数据,进行微 ...
最新文章
- CVPR2020 best paper:对称可变形三维物体的无监督学习
- securecrt是什么工具_拥有这些工具,还怕干不出好活?
- 笔记-高项案例题-2018年上-人力资源管理-建设项目团队
- Docker启动tomcat,访问首页出现404错误
- 垂直和水平居中方法小结
- python矩阵输入_Python基础之矩阵输入
- 自动驾驶—全局定位的学习笔记
- 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
- 个人开源项目之快速检索算法
- redux-form(V7.4.2)笔记( 五)核心模块回顾
- html 公式编辑器,基于web的在线复杂公式编辑器的实现
- Maze CodeForces - 377A
- MDM数据分析设计方案
- bzoj 3772 :精神污染 线段树+打标记 or 主席树
- 【驻油点】一辆重型卡车欲穿过1000公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500公升。显然卡车一次是过不了沙漠的。因此司机必须设法在沿途建立几个贮油点,使卡车能顺利穿越沙漠,试问司机如何建
- Python安装wheel文件
- [统计学理论基础] 中心极限定理与大数定律的区别
- 各类3D打印技术的制造工艺原理
- matlab已知函数表达式画函数图像,怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的……...
- linux驱动系列学习之input子系统(二)