• Time: 2019年10月27日
  • Author:Veagau

在看讲Repitle的论文【On First-Order Meta-Learning Algorithm】时,实验环节对N-Way K-Shot分类问题的SetUp进行的描述引起了我的二度思考,以前对这个问题的理解感觉没摸透,以此为契机,重新思考得出了一种理解。

所谓N-Way K-Shot 分类问题就是指用少量样本构建分类任务的。主要应用于少样本学习(Few-Shot Learning)领域,样本数据不足的情况,后来逐渐延伸到元学习(Meta-Learning)领域。

元学习需要通过在大量的任务上进行学习,学习到泛化能力强大的模型算法,以快速适应新的任务,即学会学习

因为元学习是以一个个的任务(如分类任务)作为自己的训练数据的,传统的基于大量数据的训练任务显然不适用于目前的研究(算力约束)。

从字面上理解,N-Way就是N-路或N-类K-Shot就是K-次或K-个

每次在构建分类任务时,从数据集里抽取N-类的数据,每一类数据由K-个样本构成。这样就形成了一个小型分类任务的数据集,实际上就是原始数据集的一次采样。

那这个小型分类任务的训练集和测试集具体是怎么划分的呢?

其实这个问题也是困扰我很久的,看了几篇文献都没明白。训练过程中用的是什么数据?测试过程中呢?直到我看到这篇论文中的描述:

If we are doing K-shot, N-way classication, then we sample tasks by selecting N classes from C and then selecting K + 1 examples for each class. We split these examples into a training set and a test set, where the test set contains a single example for each class.

其中关键的一点就是,在取数据时对于N类数据,每一类其实取了K+1个样本,而不是K个!

然后就是这个+1引出了我的理解。

以5-Way 5-Shot分类问题为例,在构建一个任务的数据集时的具体流程应该如下:

  1. 从元数据集(Meta-dataset)中随机抽取5类(Way)样本,每一类样本随机抽取5+1个(Shot)实例

    元数据集:也就是整体数据集中,可以理解为传统的大型数据集,其中的数据类别>>N-Way,每一类的实例数量>>K-Shot.

  2. 从这5类样本的6个实例中,每类样本随机抽取5个实例一起作为Training Set(→Support Set),每一类剩下的一个实例一起组成Testing Set(→Query Set)。

    由于元学习是以任务(Task)作为自己的训练数据的,即元学习的实际训练集和测试集是由一个个的Task组成的,所以为了进行区分,每个任务内部的训练集(Training Set)更名为支持集(Support Set)、测试集更名为查询集(Query Set)

  3. 训练:从Support Set中每一类随机选取一个实例,一起够成一组训练数据,输入到模型中,进行训练。

  4. 测试:从Query Set中随机抽取一个实例,用模型判断其属于哪一类。

    这个判断过程其实可以视为一种查询过程,给定了支持集,只要让模型能够准确的查询到其属于支持集中的哪一类即可证明模型性能较好。

  5. 重复几轮,最终得出该任务模型的准确率,实际上即是元学习参数确定的模型在该任务上的损失

  6. 损失梯度反向传播到元学习参数,对其进行更新,也即元学习过程。

图示如下:

Way 1
(C1)
Way 2
(C2)
Way3
(C3)
Way 4
(C4)
Way5
(C5)
C~11~ C~21~ C~31~ C~41~ C~51~ Support
C~12~ C~22~ C~32~ C~42~ C~52~ Support
C~13~ C~23~ C~33~ C~43~ C~53~ Support
C~14~ C~24~ C~34~ C~44~ C~54~ Support
C~15~ C~25~ C~35~ C~45~ C~55~ Support
C~16~ C~26~ C~36~ C~46~ C~56~ Query

【笔记】关于N-Way K-Shot 分类问题的理解的更多相关文章

  1. Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名

    在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigatio ...

  2. K邻近分类算法

    # -*- coding: utf-8 -*- """ Created on Thu Jun 28 17:16:19 2018 @author: zhen "& ...

  3. K近邻分类算法实现 in Python

    K近邻(KNN):分类算法 * KNN是non-parametric分类器(不做分布形式的假设,直接从数据估计概率密度),是memory-based learning. * KNN不适用于高维数据(c ...

  4. 机器学习实战 - python3 学习笔记(一) - k近邻算法

    一. 使用k近邻算法改进约会网站的配对效果 k-近邻算法的一般流程: 收集数据:可以使用爬虫进行数据的收集,也可以使用第三方提供的免费或收费的数据.一般来讲,数据放在txt文本文件中,按照一定的格式进 ...

  5. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...

  6. 每日一个机器学习算法——k近邻分类

    K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由 ...

  7. 机器学习框架ML.NET学习笔记【6】TensorFlow图片分类

    一.概述 通过之前两篇文章的学习,我们应该已经了解了多元分类的工作原理,图片的分类其流程和之前完全一致,其中最核心的问题就是特征的提取,只要完成特征提取,分类算法就很好处理了,具体流程如下: 之前介绍 ...

  8. 【PRML学习笔记】第四章:分类的线性模型

    一.基础概念 线性分类模型:决策面(decision boundary)是输入向量的线性函数 目标类别的表示"1 of K" :$ t = (0,1,0,0,0)^T$ 二.分类问 ...

  9. LeetCode 笔记21 生成第k个排列

    题目是这样的: The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all ...

随机推荐

  1. 03.Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  2. 53 (OC) 皮肤切换

    1:添加皮肤 1.1:iOS皮肤切换方案 http://www.cocoachina.com/ios/20171012/20762.html 1.2:整合 iOS几种换肤思路和demo https:/ ...

  3. 初学者-asp.net三层架构

    一.概述: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想.是一种总体设计的思想. 1.表现层( ...

  4. JavaScript之对象基础

    现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它.JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们 ...

  5. (七十三)c#Winform自定义控件-资源加载窗体

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  6. Emacs 入门(https://www.zybuluo.com/eqyun/note/40788)

    下载地址 基本操作(C=Ctrl, M=Alt) C-f 向右移动一个字符 C-b 向左移动一个字符 C-n 移动到下一行 C-p 移动到上一行 M-f 向右移动一个词[对中文是移动到下一个标点符号] ...

  7. Jmeter BeanShell 执行多次问题,每发送一次请求执行一次BeanShell问题

    前言:(此问题耗时半天) 提供解决思路的博主又有新问题了. 如图所示,写了一个BeanShell从文件中去获取值之后给测试计划的变量赋值. 问题来了,当禁用b的情况下,a只执行一次.当启用b请求的情况 ...

  8. C# 时间戳的相关操作

    一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳 时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳 废话不多说,直接上代码: 一.时间戳获取方法 // ...

  9. 完美激活Pycharm2019.2.3专业版

    完美激活Pycharm2019.2.3专业版 Pycharm官网自9月11更新到pycharm2019.2.2版本后,在短短的2周时间与9月25又带来新版本2019.2.3,不可说更新不快,侧面可以看 ...

  10. 阿里云服务器CentOS6.9防火墙启动无效--iptables消失

    iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 ...