小样本学习

小样本学习

目的:学会不同物体的异同。

在这里插入图片描述
Support Set不是训练集
用一个大的训练集训练一个大模型,训练的目的不是让模型识别训练集里的大象老虎,而是让模型知道事务之间的异同。(可以用SUpport Set数据集,让模型判断Query是水塔,尽管训练集里面没有水獭这个类别。)

在这里插入图片描述

Meta Learning(这个名字有些故能玄虚,可以把它看做Few-shot learning 小样本学习)

Few-shot Learning is a kind of meta learning。
Meta learning :learn to learn。

  1. 小孩子怎么学习
    虽然他没有见过水獭,但是他有区分动物的能力(学习能力),你给他一些卡片和对应的名字,小孩子既没有见过水獭,也没见过卡片里的动物,但是他对比一遍就发现这个动物是水獭了(他有能力把相同的东西对应起来),他判断的依据是眼前的动物和卡片里水獭很像。
    去动物园之前小朋友就用判断不同动物之间异同的能力(学习能力),培养小朋友自主学习就是mata learning.
  2. 靠一张卡片学会识别水獭是one-short learning

在这里插入图片描述

传统监督学习和Few-shot learning 之间的区别。

传统监督学习:首先拿一个训练集训练模型,模型学习好之后,可以拿模型做预测(给模型看测试图,让他做预测),虽然模型没有见过这张哈士奇的图片,看是模型已经看过上百张哈士奇的图片了,所以模型可以判断出这张哈士奇。

在这里插入图片描述
few-shot learning:模型经过训练集训练,再拿query和support set对比,知道query是兔子。

在这里插入图片描述

  1. 小样本学习的术语:
    k-way是指support里面有k个类别,n-shot指每个类别里面有n个样本。

在这里插入图片描述
2. 正确率受way和shot影响
在这里插入图片描述

在这里插入图片描述

解决方法

  1. 找出一个相似度函数进行判断,可以在一个很大的训练集上训练一个相似度函数。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数据集

1600个类,每个类20个样本
在这里插入图片描述
在这里插入图片描述

Sinamese Network(孪生网络(reid就是用孪生网络思想))

  1. 训练Sinamese Network要用一个大的有标签数据集。
    正样本告诉网络什么是相似的,负样本告诉网络什么是不同的。
    在这里插入图片描述
  2. 网络:提取特征
    在这里插入图片描述
  3. 训练:这种方法每次取两张训练,计算两两间相似度(取值0-1)
    在这里插入图片描述
  4. 测试
    Support set中的数据都不在训练集里。
    在这里插入图片描述在这里插入图片描述
  5. Triplet loss:每次取三张训练(计算距离)
    在这里插入图片描述

Pretraining and Fine Tuning

一种简单而有效的方法:在大规模数据上预训练模型,再在小规模数据上微调。

  1. cosine similarity
    如何衡量两个向量之间的距离呢?对于两个模相同的向量我们可以计算余弦距离。(长度为1时如下)
    在这里插入图片描述
    若两个向量长度不为1,需要归一化
    在这里插入图片描述
  2. support set中同一类别做均值,来代表这一类别。其中用到softmax,这可以强化某些因素,并且让所有向量的模都是1。
    在这里插入图片描述
  3. 比较
    在这里插入图片描述

Fine-Tuning

在这里插入图片描述可直接把W设置成M,这样就是用固定的W和b
M矩阵的每一行都是一个类别的均值向量。
在这里插入图片描述

Fine tuning:也可以在support set上学习W和b。
(Fine tuning可以把预测准确率提高好几个百分点。)
(用support set中所有的标签来训练这个分类器。分类器中的参数是W和b,也可以让梯度传播到卷积神经网络)
在这里插入图片描述
support set往往很小,容易过拟合。所以加一个Regularization防止过拟合。

  1. W和b的初始化很重要,W=M,b=0。
    在这里插入图片描述
  2. 正则化
    在这里插入图片描述
    在这里插入图片描述sim是归一化。
    在这里插入图片描述

总结

解决few-shot问题就是预训练一个神经网络,用其来提取特征。比较两张图片在特征空间的相似度,从而做出分类。
分两步

  1. 用大规模数据预训练神经网络这个网络可以将图片映射成向量。
  2. 做预测:给一个query和一个support set,判断query为哪一类,把support set中的数据提取成特征向量,把每个类别的特征向量做平均,得到一个向量u,如果support set中有k个类别,就会得到k个平均后的特征向量,把query 的向量和这些向量作对比,计算cos相似度,最后做出分类。
    在这里插入图片描述
    在第一步和第二步之间可以加入Fine Tuning进一步训练。
    用support set进行Fine Tuning,用support set训练一个softmax分类器,也可以反向传播到预训练好的神经网络,让提取的特征更有效。
    Fine Tuning有一些有用的技巧。
  3. 用M初始化W,不要随机初始化。
  4. 用Entropy regularization让Entropy尽量小。
  5. 把Cosine similarity和Softmax classifier结合起来。
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值