【小样本·多分类】如何解决「小样本」+「多分类」问题?

点击上方,选择星标置顶,每天给你送干货

阅读大概需要5分钟

跟随小博主,每天进步一丢丢

来自 | 知乎

地址 | https://www.zhihu.com/question/389155523/answer/1175157989

作者 | ICOZ

编辑 | 机器学习算法与自然语言处理公众号

本文仅作学术分享,若侵权,请联系后台删文处理

这个就是典型的few shot classification的问题,经常被包装成玄学的meta learning。

目前市面上效果最好的模型反而是最简单的模型,简单来说就是一个pre-trained feature encoder + 一个distance metric就可以直接比较样本来做分类了。

如果一个类里有多个图怎么办?

1.可以fuse一下同类里不同图片的feature,作为此类的prototype,然后用distance metric。

2.也可以直接取nearest neighbour

3.也可以和这一类里的每个数据都求一个distance,然后平均一下,作为和这一类的distance。

4.当你每个类的数据都很多的时候,你其实就可以考虑训练一个classifier了,你可以固定住feature encoder不动,去学习每个类的prototype。当然,如果每个类数据数量差别太大,可以考虑long tail的问题。

具体来说feature encoder怎么来呢?很简单,把你能有的数据全部用上,训练一个CNN,然后把fc layer扔掉,你就得到一个feature encoder了。

那distance metric呢?可以是 欧氏距离 (prototypical network), cosine distance (matching network),还有EMD距离 (DeepEMD)。基于此种方法的few shot classification miniimagenet 1shot5way的task已经可以达到68%+的正确率了,目前最好的结果。

再补充两句关于feature encoder的渊源。最开始matching network提出了一种训练模式,叫做episode learning,就是每次sample一个classification task,比如5张训练图片,10张测试图片,然后去做分类,cross entropy 作为loss来训练。这样做的目的就是想通过这种方式学习到那些比较general的feature,希望可以在unseen class上也能用到的feature。但是这种方法显然很低效,因为每次训练的图片太少。后来一众fancy的meta learning算法都是基于这种训练方式来学习,编出了各种美丽的故事。

后来有人发现直接把所有training class拿来训个分类器,再把fc layer扔了,用来提取feature,效果巨好,吊打各种meta learning算法。最早期的paper,prototypical network 和matching network就远比SOA的方法好很多。所以现在最好的训练方法一般是一个feature pre-training的环节(训练一个普通分类cnn),再扔掉fc layer,然后用episode training。这个时候episode training的角色就变了,从学习feature变成了调整feature,效率就高很多了。

以后有空可以整理一下市面上这些又简单效果又巨好的few shot 方法,作为baseline模型供大家使用。


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

让更多的人知道你“在看”

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值