【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等


专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等

本专栏主要方便入门同学快速掌握相关知识。后续会持续把深度学习涉及知识原理分析给大家,让大家在项目实操的同时也能知识储备,知其然、知其所以然、知何由以知其所以然。

声明:部分项目为网络经典项目方便大家快速学习,后续会不断增添实战环节(比赛、论文、现实应用等)

专栏订阅:

  • 深度学习入门到进阶专栏
  • 深度学习应用项目实战篇

# 深度学习应用篇-元学习[13]:元学习概念、学习期、工作原理、模型分类等

1.元学习概述

1.1元学习概念

元学习 (Meta-Learning) 通常被理解为“学会学习 (Learning-to-Learn)”,
指的是在多个学习阶段改进学习算法的过程。
在基础学习过程中,
内部(或下层/基础)学习算法解决由数据集和目标定义的任务。
在元学习过程中,外部(或上层/元)算法更新内部学习算法,使其学习的模型改进外部目标。
因此,元学习的核心想法是学习一个先验知识 (prior)。

1.2 元学习含义

元学习的含义有两层,
第一层是让机器学会学习,使其具备分析和解决问题的能力,
机器通过完成任务获取经验,提高完成任务的能力;
第二层是让机器学习模型可以更好地泛化到新领域中,
从而完成差异很大的新任务。

Few-Shot Learning 是 Meta-Learning 在监督学习领域的应用。
在 Meta-training 阶段,
将数据集分解为不同的任务,去学习类别变化的情况下模型的泛化能力。
在 Meta-testing 阶段,
面对全新的类别,不需要变动已有的模型,只需要通过一部或者少数几步训练,就可以完成需求。

1.3 元学习单位

元学习的基本单元是任务,任务结构如图1所示。
元训练集 (Meta-Training Data)、元验证集 (Meta-Validation Data) 和元测试集 (Meta-Testing Data) 都是由抽样任务组成的任务集合。
元训练集和元验证集中的任务用来训练元学习模型,
元测试集中的任务用来衡量元学习模型完成任务的效果。

在元学习中,之前学习的任务称为元训练任务 (meta-train task),
遇到的新任务称为元测试任务 (meta-test task)。
每个任务都有自己的训练集和测试集,
内部的训练集和测试集一般称为支持集 (Support Set) 和查询集 (Query Set)。
支持集又是一个 N-Way K-Shot 问题,即有 N 个类别,每个类有 K 个样例。

图1 任务结构。

1.4 基学习器和元学习器

元学习本质上是层次优化问题 (双层优化问题 Bilevel Optimization Problem),
其中一个优化问题嵌套在另一个优化问题中。
外部优化问题和内部优化问题通常分别称为上层优化问题和下层优化问题,
如图2所示的MAML。

图2 双层优化元学习 MAML。

两层优化问题涉及两个参与器:

  1. 上层的参与者是元学习器,
  2. 下层的参与者是基学习器。
    元学习器的最优决策依赖于基学习器的反应,基学习器自身会优化自己内部的决策。
    这两个层次有各自不同的目标函数、约束条件和决策变量。
    基学习器和元学习器的作用对象及功能如图3所示。

图3 基学习器和元学习器。元学习器总结任务经验进行任务之间的共性学习,同时指导基学习器对新任务进行特性学习。

1.4.1 基学习器

基学习器 (Base-Learner),是基础层中的模型,
每次训练基础学习器时,考虑的是单个任务上的数据集,其基本功能如下:

  • 在单个任务上训练模型,学习任务特性,找到规律,回答任务需要解决的问题。

  • 从元学习器获取对完成单个任务有帮助的经验,包括初始模型和初始参数等。

  • 使用单个任务中的训练数据集,构建合适的目标函数,
    设计需要求解的优化问题,从初始模型和初始参数开始进行迭代更新。

  • 在单个任务上训练完成后,将训练的模型和参数都反馈给元学习器。

1.4.2 元学习器

元学习器 (Meta-Learner),是元层中的模型,对所有任务上的训练经验进行归纳总结。
每次训练基础学习器后,元学习器都会综合新的经验,更新元学习器中的参数,其基本功能如下:

  • 综合多个任务上基学习器训练的结果。

  • 对多个任务的共性进行归纳,在新任务上进行快速准确的推理,
    并且将推理输送给基学习器,作为初始模型和初始参数值,
    或者是其他可以加速基学习器训练的参数。

  • 指引基学习器的最优行为或探索某个特定的新任务。

  • 提取任务上与模型和训练相关的特征。

1.5 元学习工作原理

元学习的主要目的是寻找元学习器 F F F,
在 F F F 的指导下基学习器 f f f 在支持集 (support set) D t r D^{\mathrm{tr}} Dtr 的作用下经过几步微调就可以得到适应当前新任务的最优状态 f ∗ f^{*} f∗。而 F F F 的优化需要当前所有任务损失的累计和,
即 ∇ ∑ n = 1 N l ( f n ∗ , D n t e ) \nabla\sum_{n=1}^{N} l \left( f_{n}^{*}, D_{n}^{\mathrm{te}} \right) ∇∑n=1N​l(fn∗​,Dnte​)。
元学习工作原理如图4所示。

图4 元学习工作原理。

1.5.1 元学习训练过程

以分类任务为例,元学习中 N-Way K-Shot 问题的具体训练过程:

首先提供一个 few-shot 的数据集,该数据集一般包含了很多的类别,
每个类别中又包含了很多个样本。
对训练集进行划分,随机选出若干类别作为训练集,剩余类别作为测试集。

meta-train 阶段:

  • 在训练集中随机抽取 N 个类,每个类 K 个样本,为支持集 (support set),
    剩余样本为查询集 (query set);
    support set 和 query set 构成一个 task。

  • 每次采样一个 task 进行训练,称为一个 episode;
    一次性选取若干个 task,构成一个 batch;

  • 一次 meta-train 可以训练多个 batch;

  • 遍历所有 batch 后完成训练。

meta-test 阶段:

  • 在测试集中随机抽取 N 个类别,每个类别 K 个样本,作为 train set,
    剩余样本作为 test set。

  • 用 support set 来 fine-tune 模型;

  • 用 test set 来测试模型(这里的 test set 就是真正希望模型能够用于分类的数据)。

上述训练过程中,每次训练 (episode) 都会采样得到不同 task,
所以总体来看,训练包含了不同的类别组合,
这种机制使得模型学会不同 task 中的共性部分,
比如如何提取重要特征及比较样本相似等,忘掉 task 中 task 相关部分。
通过这种学习机制学到的模型,在面对新的未见过的 task 时,也能较好地进行分类。

1.6 元学习关键

元学习的关键在于发现不同问题之间的普适规律,通过推广普适规律解决末知难题。普适规律需要达到对问题共性和特性表示力的均衡。普适规律的寻找主要依赖于以下几点:

  • 发现已经解决的问题和新问题之间联系密切的部分,提取已经解决的问题的普适规律,用于新问题的解决;

  • 将新问题分解,化繁为简,在已经解决的问题中找到与新问题各个子任务联系紧密的普适规律,以及这些规律的适用范围;

  • 在新问题中学习推理逻辑,使用推理逻辑来对新问题进行表示,在这些表示中寻找规律,通过新问题自身各个部分之间的推理逻辑,找到解决新问题的办法。

1.7 元学习分类

  • 基于优化的元学习:如 MAML, Reptile, LEO, …

  • 基于度量的元学习:如 SNAIL, RN, PN, MN, …

  • 基于模型的元学习:如 Learning to learn, Meta-learner LSTM, …

深度学习应用篇-元学习[13]:元学习概念、学习期、工作原理、模型分类等相关推荐

  1. 学习逆变(DC-AC)电路和LLC的基本工作原理。

    四.学习逆变(DC-AC)电路和LLC的基本工作原理. 全桥逆变电路包括单相全桥逆变电路和三相全桥逆变电路,逆变的主要功能是把直流电逆变成某一频率或可变频率的交流电供给负载. 单相半桥逆变电路基本工作 ...

  2. 深度学习第一篇论文——半监督学习Mean Teacher 的学习

    最近一个月刚接触深度学习,导师给了一篇论文(mean teacher)让我先理解然后跑论文里面的代码,这个过程中我出现了很多问题,借这篇blog记录下来,也是鼓励自己接着学下去. Mean Teach ...

  3. 深度学习基础(五):循环神经网络概念、结构及原理实现

    本文的概念和结构部分摘自循环神经网络惊人的有效性 循环神经网络 序列 普通神经网络和卷积神经网络的一个显而易见的局限就是他们的API都过于限制:他们接收一个固定尺寸的向量作为输入(比如一张图像),并且 ...

  4. 学习单片机的第16天—A/D和D/A工作原理(2)

    接着昨天的量化和编码 2.量化和编码 数字信号不仅在时间上是离散的,而且数值的变化也不是连续的.也就是说,任何一个数字量的大小,都是以某个最小数量单位的整倍数来表示的.因此,在用数字量表示采样电压时, ...

  5. 汇总篇 风控建模 13大环节,让建模工作量化

    最重要的事情开始都会讲:建模是始终服务于业务的,没有业务的评分卡就没有灵魂 风控建模环节中,关键的在于是对所有环节进行量化 环节汇总如下: 1 定义Y值 Y值的确定相当于整个建模的目标值,最重要的值, ...

  6. 学习单片机的第18天—A/D和D/A工作原理(3)

    这是上次ADC0804在TX-1C上的接法 ADC0804的片选端CS连接U2锁存器的Q7输出端,我们可以通过控制锁存器来控制CS,这样接的原因是TX-1C实验板扩展的外围太多,没有多余的I/O口独立 ...

  7. Android Kotlin 学习总结(一) 《KAE 优缺点并且深入字节码分析工作原理》

    本章会分为以下内容: 1.Kotlin KAE介绍,使用和原始Android findViewById对比优缺点 2.Kotlin KAE所存在的问题 3.通过字节码分析他的实现原理 阅读本章内容大概 ...

  8. 计算机cpu的原理,【图片】转一篇老帖,从intel 8086 CPU看待计算机系统工作原理【cpu吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 8086和现在x86的关系 : 现在虽然是什么x86-64,什么推土机,什么i7,至强其最核心的x86指令集完全继承于8086,换句话说,8086的指令集 ...

  9. 汽车电子专业知识篇(六十三)-继电器的结构、工作原理、检测方法

    继电器是汽车控制电路中常用的一种元件,它是利用电磁感应原理,控制某一回路的接通或断开,实现用小电流控制大电流,从而减小控制开关触点的电流负荷,保护开关触点不被烧蚀. 汽车上广泛使用电磁式继电器,常见的 ...

  10. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

最新文章

  1. 深入理解CSS线性渐变linear-gradient
  2. 机器人学习--机器人仿真环境汇总
  3. SecureCRT的自动登录和自动脚本记录功能图解
  4. plsql执行command命令控制台出现乱码_展现“管理员”的神级能力,有趣又实用的我的世界基础命令...
  5. .NET Core MVC扩展实践
  6. ssm创建一个查询接口
  7. 【Java】Java与GoF-23种设计模式
  8. 为什么有的人喜欢夜间工作_为什么开发人员喜欢在夜间编码
  9. 操作系统时间片轮换_操作系统   时间片轮转法
  10. linux man命令原理,Linux命令之man详解
  11. Spring源码之ApplicationContext(六)注册BeanPostProcessor
  12. Could not initialize English chunker/Could not load file from classpath: ‘/en-token.bin‘
  13. 代码打包机 php,我想问问我这写的php 代码到底错哪了!
  14. 7步学会在Windows下上架iOS APP流程
  15. EXCEL 单元格如何显示输入的首个单引号字符
  16. Java常用类,这一次帮你总结好!
  17. 通过HttpURLConnection连接上传文件和参数并接收
  18. Spring Cloud架构教程 (三)服务网关(基础)
  19. 解决牛客网在线编程,本地编译结果正确,提交结果不正确问题!!!
  20. 移动互联应用阶段学习

热门文章

  1. 【嵌入式系统与入门】Day01 Arduino开发板
  2. 2014蓝桥杯C语言本科B组初赛试题(个人答案)
  3. 零基础了解3D游戏开发
  4. Java数组的含义及定义使用
  5. NProgress is not defined
  6. css 让内容可滑动,CSS隐藏滚动条并可以滚动内容效果三种实现方法
  7. char数组中的0x00看不到的问题
  8. 指针入参,指针与函数
  9. oracle创建表包含自增长,Oracle创建表(包含、主键自增)
  10. ShuffleNet V1、V2 EfficientNet 迁移学习