首页 > 编程知识 正文

『NLP学习笔记』Fewshot Learning技术介绍,期货市场技术分析学习笔记

时间:2023-05-03 10:38:16 阅读:246787 作者:874

Few-shot Learning技术介绍!

文章目录 一. Few-shot Learning介绍1.1. 例子引出1.2. 和传统监督学习的区别 二. Few-Shot Learning和Meta Learning2.1. 之间关系2.2. 常用术语2.3. Learn a Similarity Function 三. 常用数据集3.1. Omniglot3.2. Mini-ImageNet 四. 参考文章

一. Few-shot Learning介绍 1.1. 例子引出 给定下面左边的图片,左边2个Armadillo(犰狳 qiú yú),右边2个辛勤的外套(穿山甲),你不知道这两种动物没关系,只要你能区分它们两个就行了,你可以暂停一下,仔细看清楚它们的区别,现在给定右边一张query图片,你能判断它是Armadillo还是辛勤的外套吗?为什么举这个例子呢?大多数人分不清犰狳和穿山甲,但是只要看一下这4个图片,正常人都能看出query图片是属于哪个类别。既然人能做到正确的分类,那计算机能不能做到正确的分类呢? 如果每一类都只有1到2个样本,计算机能不能做到像人一样进行分类呢?这个例子有2类,每个类别有2个样本,一共是4个训练样本,靠这4个样本不可能训练一个深度神经网络。对于这种小样本问题不能拿传统的方法做分类。 注意:注意图中的两个术语,Support Set和QuerySupport Set指的是一个很小的数据集,比如有两类,每类有2个样本,这么少的样本不足以训练一个大的神经网络,这个集合只能提供一些参考信息,下面要讲解的few-shot learning就是要解决这种小样本问题。 1.2. 和传统监督学习的区别 Few-shot learning和传统的监督学习有所不同,Few-shot Learning的目标不是让机器识别训练集里面的图片,并且泛化到测试集。Few-shot Learning的目标是让机器自己学会学习可以这么理解: 我拿一个很大的数据来训练神经网络,学习的目的不是让模型知道什么是大象,什么是老虎等等,学习的目的是模型理解事物的异同,区别不同的事物,给两张图片不是让模型识别图片是什么,而是让模型知道两个图片是相同的东西,还是不同的东西。 训练完模型之后,你可以问模型这样的问题? 这两张图片是不是同一种东西呢?这时候模型已经学会了区分事物的异同,所以模型知道这2张图片是相同的东西。 再来看一下刚才的训练数据,这个数据里有哈士奇、大象、老虎、鹦鹉、汽车这5类,其中并没有上一张图片中松鼠这个类别,所以模型不会识别松鼠。模型看到这2张图片,并不知道它们是松鼠,但是模型会判断事物之间的异同,模型知道这2个动物长的很像,所以模型告诉你两张图片很大可能是相同的东西。 同样的道理,模型并不是下面的兔子,因为训练集里没有兔子,但是模型知道怎么判断事物的异同,模型可以看出来这2张图像内容很像,应该是相同的东西。 再给模型看下面的东西,虽然模型没有见过穿山甲和斗牛犬,但是模型觉得这2个动物长的不像,应该不是同一种动物。 现在换一种问法,我有1张query图片,我问神经网络这是什么东西? 神经网络肯定一脸懵逼,训练的时候没有见过这个玩意呀?那再多给神经网络一些信息,我给神经网络6张图片(每类1张),告诉神经网络这6张图片分别是狐狸、松鼠、兔子、仓鼠、水獭、海狸。现在神经网络不再懵逼了,神经网络拿query依次和这6张图片对比,找出最相似的,神经网络发现query和水獭最相似,随意判断query应该是水獭。这里的Support Set是meta learning的术语。把 这些带标签的图片称为support set注意Support Set和训练集的区别: 训练集规模很大,每个类别下面都有很多图片,由于训练集足够大,所以可以训练一个深度神经网络。相比之下,Support Set很小,每一类下面之后1张或者几张图片,根本不足以训练一个很大的神经网络,Support Set只能在做预测的时候提供一些额外的信息。用足够的训练集来学习一个大模型,比如深度神经网络,训练的目的不是模型识别训练集中大象、老虎。而是让模型知道事物的异同。现在靠Support Set提供的一点点信息,模型就能判断出Query图片是水獭,尽管训练集里面没有水獭这个类别。 二. Few-Shot Learning和Meta Learning 2.1. 之间关系 刚才说的Few-Shot Learning就是Meta Learning的一种,Meta Learning和传统的监督学习不一样,传统的监督学习要求模型识别训练数据,并且泛化到测试数据。Meta Learning的目标是让模型Learn to learn(自己学会学习)。 举例说明: 你带小朋友去动物园,小朋友看到一只小动物,非常喜欢,他从来没有见过这样的动物,所以他想知道这种动物是什么,虽然小朋友没有见过这个动物,但是它学过怎么区分动物,它有自主学习的能力。现在给小朋友一些卡片,卡片上有动物的名字,但是小朋友很聪明,他把卡片看一遍,就知道自己看到的动物是水獭了。去动物园之前小朋友就已经有了自主学习的能力,它知道怎么判断动物之间的异同,培养小朋友学会自主学习就是meta learning。小朋友想知道这个没见过的动物是什么?meta learning把这个专业术语叫query,你给小朋友一堆卡片,让小朋友自己学习,这堆卡片就叫Support Set。完成Meta learning之后可以做预测,在动物园里,小朋友的学习资料只有这堆卡片,靠每个类别一张卡片识别这张query水獭,叫 one-shot learning来看看传统的监督学习和Few-shot Learning的区别: 传统的监督学习: 拿训练集学习一个模型,模型学习好之后,可以拿模型用来做预测,给模型看这张测试图片,让模型做预测。这张测试图片没有出现在训练集里面,但是测试图片的类别包含在训练集里面。这个测试图片十个哈士奇,训练集里第一列就是哈士奇(训练集包含上百张哈士奇,虽然模型没有见过测试这张图片,但是模型已经见过上百张哈士奇的图片,模型很容易判断出来这就是哈士奇)。 Few-shot Learning: Few-shot Learning是个不同的问题,模型不但没有见过这张Query图片,而且还没见过兔子这个类别。这就是Few-shot Learning和传统监督学习的主要区别。 Few-shot Learning比传统的监督学习更难,原因就在于训练集中没有兔子这个类别,训练集中没有兔子图片,所以模型不认识兔子图片,我们需要给模型提供更多的信息,给模型看这些小卡片,每张小卡片有一个图片和一个名字,这些小卡片就叫Support Set。通过对比Query和这些小卡片的相似度,模型发小Query和这张图片的相似度最高,于是模型就知道Query图片是一个兔子。 2.2. 常用术语 K-way的意思:Support Set集合里有K个类别。 图中例子有狐狸、松鼠、兔子、仓鼠、水獭、海狸6个类别,所以K=6。 n-shot的意思:Support Set集合里每个类别有n个样本。 图中例子每个例子只有1个样本,所以n=1。 假如做Few-shot分类,预测准确率随着K-way的增大而降低。 三选一比六选一更简单。 预测准确率随着n-shots的增大而增加。 2-shot比1-shot更容易,参考信息更多。 2.3. Learn a Similarity Function Few-shot最基本的一个想法就是学习一个函数判断相似度。相似度函数记为sim,比较两张图片 x mathbf x x 与 x ′ mathbf{x}^{prime} x′ 的相似度。两个图片越相似,分值就越高,如下例子:斗牛犬、斗牛犬、狐狸。它们之间最理想的情况下的分数是下图中: 具体实现:先从一个很大的训练集里学习一个相似度函数,它可以判断两张图片的相似度有多高。 然后用学到的相似度函数做预测,给一个Query图片,拿它与Support Set集里的图片逐一对比,计算相似度,然后找出相似度最高的作为预测结果。 例子:拿Query分别与Support计算相似度,找出相似度最大的,发先Query与水獭的相似度最高,所以可以判定为水獭。 三. 常用数据集 3.1. Omniglot 有点类似MNIST,也是个手写字体数据集(但类别很多,每个类的样本很好,1600多类,每个类只有20个样本,数据集不大,只有几兆),数据集有50种字母表,比如希腊字母,拉丁字母等。每个字母表有很多字符,比如下图中的希腊语: α , β bf alpha, beta α,β 等等,每个字母都相当于一个类别,每个字母20个不同的人手写,所以每个类别有20个样本。Official website: https://github.com/brendenlake/omniglot/TensorFlow: https://www.tensorflow.org/datasets/catalog/omniglot Omniglot数据集总结: 3.2. Mini-ImageNet Mini-ImageNet 有100类,比如蘑菇、橙子、玉米等100个类别,每个类别有600个样本,所以数据集一共有6万张样本,样本都是 84 × 84 84 times 84 84×84 的小图片。 四. 参考文章 https://github.com/wangshusen/DeepLearning

css包含选择器的符号是哪个

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。