-------------------------------------------------------------------------------------------------------

更新(2021.7.6):元学习(meta-learning)与机器学习(machine learning)

machie learning: 通常是单任务学习,每个任务有训练集和测试集,在训练集上训练模型,在测试集上测试模型。

meta-learning:是多任务学习。把所有的任务划分为训练任务和测试任务。每个训练任务都包含自己的训练集和测试集。每个测试任务也包含自己的训练集和测试集。

meta-learning的训练分为两个阶段:

阶段1:利用每个训练任务的训练集预更新网络参数,计算预更新后的参数在这个训练任务的测试集上的损失。

阶段2:汇总所有预训练任务测试集损失正式更新网络参数。

tip1:训练任务的测试集参与训练

tip2:测试任务完全不参与训练

参考:李宏毅 meta-learning 课程视频

------------------------------------------------------------------------------------------------------

最近读文献,发现有人用any-shot learning 的方法做异常检测问题,不理解什么意思,所以上网查了一下。

在网上搜索“any-shot learning”关键词时,发现提到最多的就是这篇文章:《f-VAEGAN-D2: A Feature Generating Framework for Any-Shot Learning》,这篇文章里是这么提到“any-shot learning”的: “In this paper, we tackle any-shot learning problems i.e. zero-shot and few-shot, in a unified feature generating framework that...”。可见文章是把any-shot learning作为zero-shot learning  和 few-shot learning的统称。

什么是few-shot learning和zero-shot learning 呢?

shot: 发射;炮弹;射手;镜头。 在这里可以理解为“样本”的意思。few-shot和zero-shot的意思就是:在分类任务中,针对某个特定类别,在训练集中仅仅只有少量属于该类别的样本(few-shot)或没有属于该类别的样本(zero-shot)。one-shot learning 是few-shot learning的一个特例,即该在训练集中仅有一个属于该类别的样本。

few-shot learning,zero-shot learning,one-shot learning,any-shot learning可以翻译为如下(个人认为):

  • few-shot learning : 少样本学习。 (许多人喜欢翻译为小样本学习,我觉得翻译为小样本容易引起误导为:小“尺寸”样本学习)
  • one-shot learning:单样本学习
  • zero-shot learning:零样本学习
  • any-shot learning:任意样本学习。(个人理解,可以理解成是对few-shot 情况和zero-shot情况都适用的学习方法,或者也对大量样本情况也适用的学习方法,或者,适应于极端样本不平衡情况的学习方法。)

一个关于few-shot learning 的形象的示意图,


 few-shot learning 中涉及到的一些概念:

N-way, K-shot: 在我们的训练集中共有N个类别,每个类别只有K个样本。即,我们的训练集中一共只有N*K个样本。示意图如下(5-way 1-shot 情况,图片来自论文《Optimization as a Model for Few-Shot Learning.》):

Meta-learning(元学习):在没有任何背景先验知识的情况下进行few-shot learning是非常困难的,即使人也不可能。所以解决few-shot learning的常用策略是使用迁移学习,先在一个别的、与few-shot任务有关联的任务上训练网络,使网络先具有一些先验知识(prior,meta Knowledge(元知识)),然后再在few-shot任务上进行训练。

这个在相关联的其他任务上训练网络的过程称为元学习的训练阶段meta-training(元学习训练过程)。该阶段学到的知识称为meta Knowledge(元知识)。

将元学习训练阶段得到的模型在当前任务上在训练的过程,称为元学习的测试阶段meta-testing.

比如,我们要训练一个网络去识别熊猫,但是我们只有一张熊猫的照片,如果只用这一张熊猫的照片去从零训练一个网络,那么这个网络的泛化性很可能会不好(很可能只能认识这一张照片是熊猫,熊猫换个姿态或测面就不认识了,也有可能把猪,狗等也误判成熊猫,一切都有可能)。        但是我们有大量的猪,狗,鸡,鸭,鱼,鹅,鸟的标记图片,我们可以先用这些图片去训练网络,使网络对这些类别有识别能力,即使网络具有一些识别目标的初级能力。这个训练过程就是元学习或meta-training,这个阶段学到的知识就叫元知识。然后,我们可以用熊猫图片去训练已具有元知识的网络。这样我们可以期待新训练得到的网络在对熊猫的识别任务上具有较好的泛化能力(不但认识训练集中的熊猫图片,熊猫换个姿势,角度也能认识)。这个用熊猫图片训练网络的过程称为meta-testing。

元学习过程,尤其meta-training阶段,一般是一个多任务学习,即,训练一个网络,使这个网络能完成多种相关任务。每一个元学习过程中的任务都包含自己的训练集和测试集。为了避免每个任务的“训练集”与“测试集”的命名与meta-trainingmeta-testing混淆,我们把每个元学习任务中的训练集称为 support set, 测试集称为 query set.

如下图所示:


few-shot learning 作为一个单独的研究方向,具有多个数据集:如miniImagenet,tiered-imagenet,omniglot,CIFAR-FS,CUB-200-2011。这些数据集包含很多类别的样本,每个类别也有许多样本。在使用这些数据集做few shot learning时,通常的策略是:在meta-training 阶段,从所有类别中随机抽取N个类别,每个类别提取K个样本作为 support sets,这N个类别的剩余样本或剩余样本的采样作为query sets。这就是N-way K-shot的问题了。

示例说明如下:

如上描述,就是 meta-training阶段使用的数据,就是meta-testing阶段使用的数据。无论是还是都包含support set与query set。


参考博客:few-shot learning是什么

few-shot learning——图神经网络专题

备注:我不是做few shot learning方向的,以上仅是我的课题有算法涉及到这方面的知识,所以了解一下,并不深入。如果有理解错误的地方希望指正。

few-shot learning, zero-shot learning, one-shot learning,any-shot learning, C-way K-shot,Meta-learn相关推荐

  1. 强化学习(Reinforcement Learning)是什么?强化学习(Reinforcement Learning)和常规的监督学习以及无监督学习有哪些不同?

    强化学习(Reinforcement Learning)是什么?强化学习(Reinforcement Learning)和常规的监督学习以及无监督学习有哪些不同? 目录

  2. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

    1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1 ...

  3. Zero-shot Learning零样本学习 论文阅读(一)——Learning to detect unseen object classes by between-class attribute

    Zero-shot Learning零样本学习 论文阅读(一)--Learning to detect unseen object classes by between-class attribute ...

  4. 【Deep Learning 二】课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)答案

    课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)答案 ----------------- ...

  5. 【Deep Learning 一】课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)答案

    10个测验题: 1.What does the analogy "AI is the new electricity" refer to?  (B) A. Through the ...

  6. 图机器学习(Graph Machine Learning)- 第二章 图机器学习简介 Graph Machine Learning

    第二章 图机器学习简介 Graph Machine Learning 文章目录 第二章 图机器学习简介 Graph Machine Learning 前言 1. 环境要求Technical requi ...

  7. 论文笔记——N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning...

    论文地址:https://arxiv.org/abs/1709.06030 1. 论文思想 利用强化学习,对网络进行裁剪,从Layer Removal和Layer Shrinkage两个维度进行裁剪. ...

  8. 【Deep Learning 四】课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)答案

    1.以下哪一项是正确的?(检查所有适用的) (A,D,F,G) A.  a[2] 表示第二层的激活函数值向量. B. X 是一个矩阵, 其中每一行都是一个训练示例. C. a[2] (12) 表示第二 ...

  9. 近两年小样本学习取得重大进展了吗?

    链接:https://www.zhihu.com/question/439865186 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 2020年小样本学习可谓如火如荼,我从2020年六月份入坑 ...

  10. 元学习:Meta-Learning in Neural Networks: A Survey

    原文:Timothy M Hospedales, Antreas Antoniou, Paul Micaelli, Amos J Storkey. Meta-Learning in Neural Ne ...

最新文章

  1. 谈谈对APC的一点理解
  2. tensorflow gpu利用率为0_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧...
  3. Spring的异步方法
  4. 第一章 Java快速入门
  5. 系统管理找不到请求的服务器,解决Win10无法打开软件提示服务器没有及时响应或控制请求的方法...
  6. rstudio 导出结果_RStudio如何完美导出包含中文的图
  7. 那些35岁的程序员都去哪了
  8. C++之指针探究(四):指针和二维数组
  9. java中Long的比较
  10. Redis 集群中的纪元(epoch)
  11. java中while的用法案例_Java While循环 do-while循环用法
  12. 从薛定谔方程到K-S方程
  13. 利用div实现遮罩层效果
  14. html网页在图片的后面同一行追加,htmlcss
  15. keil4出现目标未被创建,keil 目标未创建
  16. F. Floor Plan
  17. 【计算机毕业设计】23.网上商城购物系统+vue
  18. BASH基础理解,写法
  19. Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
  20. L2-030 冰岛人

热门文章

  1. 《游戏之旅-我的编程感悟》读书笔记
  2. mysql命令成功数值不变_MySQL基础知识精华汇总_3(mysql基础命令操作)
  3. python关键词共现_python 共现矩阵的实现
  4. python突破反爬虫_【Python3爬虫】突破反爬之应对前端反调试手段
  5. 倒计时 妙味课堂_jQuery实现倒计时(倒计时年月日可自己输入)
  6. 异域linux内核漏洞,Linux内核再现漏洞!这次11年后才发现
  7. python等待用户输入_Python等待时间,等待用户输入
  8. android 每日构建_Android构建类型和产品风味
  9. python数学实验与建模_Python数学
  10. Android Studio 3.3功能