前言

无论是有监督学习还是无监督学习、半监督学习。无论算法是什么,一直感觉机器学习、深度学习模型都是一种数据驱动的。换句话说,足够且有质量的数据,才能让模型学到一定的知识,达到比较理想的效果。
但在实际应用中,很多领域、特定问题是没有足量数据,或者说训练任务和目标任务数据分布不一致。因此,需要有一些模型的学习方式,不是指特定的模型,而是解决上述问题的思路。

这里,参考《神经网络与深度学习》这本书,将第10章的部分内容做了简单的笔记。

主要关注点:多任务学习、迁移学习、小样本学习、元学习

一、迁移学习

1. 迁移学习是什么?

  • 将相关任务的训练数据中的可泛化知识迁移到目标任务上。
  • 也就是不同领域的知识迁移的过程,源领域——目标领域。
  • 领域指的是一个样本空间(x,y)(x,y)(x,y)及其数据分布p(x,y)p(x,y)p(x,y)。只要三者中有不同,就是不同领域。
  • 说人话就是,输入-输出-数据分布相同,才是两个相同的标准机器学习任务。换句话说就是一个数据集你用不同模型跑跑。

2. 为什么需要迁移学习?

目标领域(任务)缺乏足量的数据,要么是没有标注、要么是量太少;如果有相关任务(数据量大),能从中学到相关知识,就可以将这些可泛化知识迁移到目标任务上。

3. 如何迁移?

  • 归纳迁移学习:在源领域和任务上学习出一般的规律,然后将这个规律
    迁移到目标领域和任务上
  • 转导迁移学习:一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习.

归纳迁移学习是比较常见的方式,在图像领域与自然语言处理都有较多的应用。

  • CV:源领域任务一般是大量有标注的数据。比如ImageNet,动机是神经网络底层的特征是图像中比较有共性的特征,高层才是比较有领域代表性的特征。
  • NLP中的源领域数据一般是没有标注的大规模语料。比如维基百科、微博等等。然后利用语言模型、设计相应的训练任务(比如bert的masked word以及next sentence prediction等)。简单来说,将大规模文本上的无监督学习(比如语言模型)中学到的知识迁移到一个新的目标任务上。

归纳迁移学习的两种迁移方式:

  • 基于特征的方式:将预训练模型的输出或者是中间隐藏层的输出作为特征直接加入到目标任务的学习模型中。目标任务的学习模型可以是一般的浅层分类器(比如支持向量机等)或一个新的神经网络模型。

    • 这里感觉word2vec这种词向量就是将中间的权重矩阵取出,作为目标任务的第一层(embedding),应该算是基于特征的方式。
  • 精调的方式(Fine-Tuning):在目标任务上复用预训练模型的部分组件,并对其参数
    进行精调。

    • 目前比如bert这样的预训练语言模型,就是用这种方式,通常就是将最后几层输出进行一些操作,拼到特定的任务上,比如分类、序列标注、阅读理解、句子相似度计算等。

转导迁移学习

  • 转导迁移学习通常假设源领域有大量的标注数据,而目标领域没有(或只有少量)标注数据,但是有大量的无标注数据.目标领域的数据在训练阶段是可见的.

  • 转导迁移的一个子问题就是领域适应问题。Adaptation).在领域适应问题中,一般假设源领域和目标领域有相同的样本空间,但是数据分布不同。

  • 根据贝叶斯公式,也可以分为不同的情况。p(x,y)=p(y∣x)p(x)=p(x∣y)p(y)p(x,y) = p(y|x)p(x)=p(x|y)p(y)p(x,y)=p(yx)p(x)=p(xy)p(y)
    大多数研究集中在p(y|x)相同,p(x)不同的情况。又称为协变量偏移。

  • 这种问题的关键是在于如何找到领域无关的表征。

    • 思路1:学习的目标是找到这样的特征,使得其在源领域数据集上损失小
    • 思路2:对抗训练,找到这样的特征,使得源领域识别器与目标领域识别器无法区分该特征的对应领域。
  • 具体细节不看,来看看与关系抽取中fewrel 数据集的关系。

源领域-训练集;目标领域-验证集。

  • 训练集-验证集的输入输出形式相同,但是类别完全不同。
  • 如果是1.0数据集,都是基于相同知识库构造的。说明语料是相同分布的,只是标签不同。也就是p(x)相同,但是学习任务有所区别。这是一个概念偏移问题。但在2.0数据集中,验证集就是其他领域数据构造的,协变量偏移问题。说明从转导迁移的角度,既要学习到领域无关的特征,也需要解决概念偏移问题。

二、 多任务学习

1. 什么是多任务学习

  • 同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来改进模型在每个任务上的性能和泛化能力

2. 为什么需要多任务学习?

  • 当两个任务有所关联时,彼此之间可能存在一定共享知识。
  • 这些知识对两个任务都会有所帮助。这些共享的知识可以是表示(特征)、模型参数或学习算法等。
  • 目前,主流的多任务学习方法主要关注表示层面的共享。

3.多任务学习的方式?

  • 硬共享模式:让不同任务的神经网络模型共同使用一些共享模块(一般是低层)来提取一些通用特征,然后再针对每个不同的任务设置一些私有模块(一般是高层)来提取一些任务特定的特征。
  • 软共享模式:不显式地设置共享模块,但每个任务都可以从其他任务中“窃取”一些信息来提高自己的能力。窃取的方式包括直接复制使用其他任务的隐状态,或使用注意力机制来主动选取有用的信息。
  • 层次共享模式:一般神经网络中不同层抽取的特征类型不同,低层一般抽取一些低级的局部特征,高层抽取一些高级的抽象语义特征。因此如果多任务学习中不同任务也有级别高低之分,那么一个合理的共享模式是让低级任务在低层输出,高级任务在高层输出。
  • 共享-私有模式:一个更加分工明确的方式是将共享模块和任务特定(私有)模块的责任分开。共享模块捕捉一些跨任务的共享特征,而私有模块只捕捉和特定任务相关的特征。最终的表示由共享特征和私有特征共同构成。

多任务的学习流程一般为联合训练+单任务精调两个阶段。

4. 多任务学习在NLP中的应用(资料)

  • 共享相关任务表征,一文读懂深度神经网络多任务学习【写的比较详细,可以读下】
  • 自然语言处理中的多任务学习【邱锡鹏老师的分享】

5. 多任务学习与迁移学习的区别

多任务学习与归纳的迁移学习十分相似,利用相关任务包含的泛化知识,进行共享,提升模型的性能。但两者仍然有所区别:

  • 多任务学习是同时学习多个任务;迁移学习将源领域学习、目标领域学习分类两阶段。通常是将预训练好的模型用作目标领域学习,加快速度。
  • 多任务的目标是提升所有任务的性能(所有的损失),迁移学习的目标是提升目标任务的性能。

三、元学习

1. 什么是元学习?

  • 根据不同任务来动态地选择合适的模型或动态地调整超参数
  • 这种可以动态调整学习方式的能力,称为元学习。
  • 从已有任务中学习一种学习方法或元知识,可以加速新任务的学习。

2. 为什么需要元学习?

  • 没有免费午餐定理:
    对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间内)都有效。如果一个算法对某些问题有效,那么它一定在另外一些问题上比纯随机搜索算法更差。也就是说,不能脱离具体问题来谈论算法的优劣,任何算法都有局限性.必须要“具体问题具体分析”。
  • 在面对不同的任务时,人脑的学习机制并不相同.即使面对一个新的任务,人们往往也可以很快找到其学习方式。元学习也希望达到这样的效果。Learning to Learn——学习的学习。

3.元学习的方式?

基于优化器的元学习

想法:

  • 深度学习模型,参数更新一般是基于梯度下降。
  • 对于不同任务、不同模型,需要选择不同的优化算法。
  • 不同优化算法的区别就在于参数更新的规则不同。
  • 因此,能不能学习到如何更新参数,即用另一个模型来建模梯度下降的过程,学习到如何学习。

具体做法:

  • 梯度下降:θt+1=θt+αL(θt)\theta_{t+1} = \theta_t + \alpha L(\theta_t)θt+1=θt+αL(θt)
  • 学习一个函数gt(⋅)g_t(·)gt(),输入当前梯度,输出梯度的差值Δθt\Delta \theta_tΔθt

    这里gtg_tgt也是一个时序性的,所以可以建立LSTM模型来拟合。

基于模型无关的元学习
暂时没看懂。。

四、小样本学习

模型的学习方式-迁移学习、多任务学习、小样本学习、元学习相关推荐

  1. 深度 | 学习如何学习的算法:简述元学习研究方向现状

    要想实现足够聪明的人工智能,算法必须学会如何学习.很多研究者们曾对此提出过不同的解决方案,其中包括 UC Berkeley 的研究人员提出的与模型无关的元学习(MAML)方法.本文将以 MAML 为例 ...

  2. 【转】学习如何学习的算法:简述元学习研究方向现状

    要想实现足够聪明的人工智能,算法必须学会如何学习.很多研究者们曾对此提出过不同的解决方案,其中包括 UC Berkeley 的研究人员提出的与模型无关的元学习(MAML)方法.本文将以 MAML 为例 ...

  3. 元强化学习系列(1)之:元学习入门基础

    元强化学习三境界 统计学是人工智能开始发展的一个基础,古老的人们从大量的数据中发现七所存在的规律,在以统计学为基础的 机器学习(machine learning)时代,复杂一点的分类问题效果就不好了, ...

  4. 【转载】Few-shot learning(少样本学习)和 Meta-learning(元学习)概述

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_37589575/arti ...

  5. Few-shot learning(少样本学习)和 Meta-learning(元学习)概述

    目录 (一)Few-shot learning(少样本学习) 1. 问题定义 2. 解决方法 2.1 数据增强和正则化 2.2 Meta-learning(元学习) (二)Meta-learning( ...

  6. 业界丨2018深度学习十大趋势:元学习成新SGD,多数硬件创企将失败

    2018年,一切可能都会发生戏剧性的变化. 深度学习在2017年取得的那些不可思议的突破,将在2018年全面爆发.去年大量研究工作将转移到日常的软件应用中. 跟去年一样,我也将对2018年的深度学习发 ...

  7. 2018深度学习十大趋势:元学习成新SGD,多数硬件创企将失败

    原作 Carlos E. Perez 李杉 编译自 Intuition Machine博客 量子位 出品 | 公众号 QbitAI 2018年,一切可能都会发生戏剧性的变化. 深度学习在2017年取得 ...

  8. 小样本学习记录————用于深度网络快速适应的模型不可知元学习(MAML)

    小样本学习记录----MAML用于深度网络快速适应的模型不可知元学习 相关概念 小样本学习(Few-Shot Learning) 元学习(Meta-Learning) MAML思想 MAML算法 论文 ...

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

    主要想讲的内容有: TCA, Finetune, Triplet Network 迁移学习与元学习有哪几类方法 想讲的目标(但不一定完全能写完, 下一次笔记补充): 分别属于什么方法, 处于什么位置, ...

  10. 元学习 迁移学习_元学习就是您所需要的

    元学习 迁移学习 Update: This post is part of a blog series on Meta-Learning that I'm working on. Check out ...

最新文章

  1. STM32F4 编程手册学习1_编程模型
  2. 期盼的中国SB秀终于开始了
  3. Python爬虫开发:cookie的使用案例
  4. 288. Unique Word Abbreviation
  5. 【踩坑记录】Tensorflow在Windows下使用
  6. 利用veiw建立Centos5.5 双机智能DNS手册
  7. Java中IDEA,Springboot实现手机获取验证码和倒计时
  8. Dstream的action算子与RDD的action算子
  9. docunment对象
  10. spring-boot-starter-parent 包maven依赖报错
  11. Django中ForeignKey和ManyToMany使用探究:
  12. AI近义词替换工具.v.1.2
  13. angularjs2学习教程
  14. 特权老师又一最新力作-Verilog边码边学 视频教程
  15. 偏差,残差,方差在机器学习中的区别
  16. python输出元组中的元素_python 列表(list)元组(tuple)字典(dict)如何打印中文总结...
  17. macbook pro的漏电
  18. LoadRunner性能测试结果样例分析
  19. vbs中msgbox你不知道的用法
  20. JSP | 判断三角形并计算面积(javabean)

热门文章

  1. xilinx PCIe PIO工程仿真及验证
  2. 博客左侧导航栏添加打赏功能(添加微信赞赏码)
  3. linux内核创建ubi,Linux最新UBI文件系统介绍
  4. 深度学习之CNN宫颈癌预测
  5. java wed的工作流程
  6. 刘宇凡:人人都是自媒体
  7. 51单片机小白零基础教程——数码管的静态显示,以及数码管拓展程序(含74HC573锁存器的介绍)
  8. MATLAB bp神经网络的雾霾天气下交通标志的识别系统
  9. voxel体素网络滤波器
  10. C/C++实现大数模指数运算-二进制算法(a^e mod m 当e特别巨大时...)