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

2023-05-16

前言

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

这里,参考《神经网络与深度学习》这本书,将第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)
  • 学习一个函数 g t ( ⋅ ) g_t(·) gt(),输入当前梯度,输出梯度的差值 Δ θ t \Delta \theta_t Δθt
    在这里插入图片描述
    这里 g t g_t gt也是一个时序性的,所以可以建立LSTM模型来拟合。

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

四、小样本学习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)

    linux内核的三种调度方法 xff1a 1 xff0c SCHED OTHER 分时调度策略 xff0c 2 xff0c SCHED FIFO实时调度策略 xff0c 先到先服务 3 xff0c SCHED RR实时调度策略 xff0c
  • 12- 降维算法 (PCA降维/LDA分类/NMF) (数据处理)

    数据降维就是一种对高维度特征数据预处理方法 降维是将高维度的数据保留下最重要的一些特征 xff0c 去除噪声和不重要的特征 xff0c 从而实现提升数据处理速度的目的 PCA算法有两种实现方法 xff1a 基于特征值分解协方差矩阵实现PCA
  • 软件体系整理5-6章

    第五章 软件体系结构风格 1 管道过滤器风格 特征 xff1a xff08 1 xff09 构件即过滤器 xff08 Filter xff09 xff0c 对输入流进行处理 转换 xff0c 处理后的结果在输出端流出 而且 xff0c 这种
  • Hive中的DDL操作

    参考文章 xff1a https www cnblogs com qingyunzong p 8723271 html 官方文档 xff1a https cwiki apache org confluence display Hive La
  • linux echo输出结果赋值给变量,shell变量n位补零

    name 61 96 echo 1 awk 39 printf 34 04d n 34 0 39 96 将 1 进行4位数补零 xff0c 后传递字符串给 name 将下面代码 xff0c 命名为 playVideo sh 的shell脚本
  • LCD1602和12864显示器-第1季第17部分-朱有鹏-专题视频课程

    LCD1602和12864显示器 第1季第17部分 3539人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第17个课程 xff0c 主要讲解LCD1602和LCD12864这两种单片机常用LCD显示器的显示原理 以及
  • CV小白实践--实现MNIST手写数字识别时遇到的问题

    1 RuntimeError size mismatch m1 800 x 4 m2 320 x 50 问题原因 xff1a 这个问题出现在神经网络最后一层卷积层与第一层全连接层之间 首先来看一下我实现的神经网络的结构 def init s
  • Hbase中Scan数据时的缓存优化以scan 过滤器的使用

    1 缓存优化 在hbase的java api 中 默认在scan 过程中scan next一次进行一次rpc请求 这导致scan的效率很低 设置scan的缓存优化很有必要 1 scan setBatch int 10 设置一次next 返回
  • 人脸识别之人脸检测(三)--Haar特征原理及实现

    本文主要由于OpenCV的haartraining程序 xff0c 对haar特征的补充及代码注释 原文 xff1a http www aiuxian com article p 2476165 html Haar特征的原理是什么 xff1
  • 网络基础(一)【解决mininet中xterm域名无法解析的问题】

    mininet是一个很好用的网络仿真实验平台 xff0c 基于网络命名空间技术的python封装 我是在linux虚拟机中安装了mininet环境 sudo mn mininet gt xterm h1 h2 启动一个xterm程序 xff
  • 多任务学习:Multi-Task Learning as Multi-Objective Optimization

    前言 最近在写一篇文章 xff0c 是一篇深度学习与安全相结合的文章 xff0c 模型的输出会交给两个损失函数 xff08 availability amp security xff09 进行损失计算 xff0c 进而反向传播 起初的想法是
  • 浅析Linux命令之alias

    转自 xff1a http man linuxde net alias 1 作用 用来设置指令的别名 我们可以使用该命令将一些较长的命令进行简化 使用alias时 xff0c 必须使用单引号将原来的命令引起来 xff0c 防止特殊字符导致错
  • Verilog实现串口通讯(UART)

    Verilog实现串口通讯 xff08 UART xff09 本代码参考了野火的相关教程 xff0c 实现了发送和接收回环 xff0c 同时可以通过串口数据控制LED灯的亮灭 xff0c 在电脑发送数据时要选择HEX发送模式 xff0c 发
  • Ubuntu 查看硬盘容量

    在服务器节点上使用硬盘较多 xff0c 被强制清盘多次 xff0c 清盘时需要查看文件夹占用情况 xff0c 并考虑是否重要来决定删除 因此必不可少一些查看硬盘占用的命令 1 du s h 43 路径 du s h 查看home目录下占用总
  • Matlab R2018a初始化问题

    前几天装的MATLAB2018 xff08 我装在C盘 xff0c 用的是在线安装 xff0c 自己下的License 破解了 xff09 xff0c 但是初始化问题一直没解决 xff0c 下面显示我遇到的问题 xff1a 等4 5分钟才就
  • vnc view安装与使用

    vnc view安装与使用 1 安装 vnc远程连接 xff0c 需要在服务器端安装vnc server 在客户端安装vnc viewer 这里我主要是研究如何在自己的电脑安装vnc viewer xff0c 来远程连接服务器 1 xff0
  • 温度传感器DS18B20-第2季第1部分-朱有鹏-专题视频课程

    温度传感器DS18B20 第2季第1部分 1700人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第2季第1个课程 xff0c 主要讲解单片机系统中常用的温度传感器DS18B20 本课程的目标是让大家进一步掌握时序的分析和编
  • Shell删除某个文件夹下指定字符开头的所有文件

    工作中遇到过日志文件夹里面存放的日志数量太多 xff0c 直接使用rm rf 删除提示参数太多 xff0c 其实是因为要删除的文件太多 xff0c 没法一次全部删除 xff0c 具体rm rf能够一次删除的数量是多少就不知道了 xff0c
  • Ubuntu 11.10 远程桌面Windows设置

    升级到Ubuntu 11 10时原来远程客户端tsclient不能用了 xff0c 那么怎么办 xff1f 两个途径可以 xff1a 1 Remmina远程桌面客户端 xff0c 如果在互联网下没有 xff0c 在新立得下安装即可 设定几乎
  • 模型的学习方式-迁移学习、多任务学习、小样本学习、元学习

    前言 无论是有监督学习还是无监督学习 半监督学习 无论算法是什么 xff0c 一直感觉机器学习 深度学习模型都是一种数据驱动的 换句话说 xff0c 足够且有质量的数据 xff0c 才能让模型学到一定的知识 xff0c 达到比较理想的效果