点击下面卡片关注我呀,每天给你送来AI技术干货!

来自:朴素人工智能

前两篇关于meta learning的文章介绍了机器如何利用少量的现有类别的样本作为支持数据,并将一个新样本匹配为其中最接近的类别。

类比下,在你手头有很多不同动物的图片(比如猫狗牛羊兔等等),在当你拿到一张新的动物照片时,只需要去现有的图片库里比对,将其归类为长相最接近的动物,而无需靠记忆(参数)通过大量的各种动物的图片来学习动物特征,再来判断它的类别。

Meta Learning 1中提到了在实践中有2种不同的解决方案:metric-based和optimization-based。前面2篇推送已经详细介绍了metric-based的做法,本文继续介绍它。

Metric-based method,即基于度量的方法,分3步走:编码-归纳-求相似度。

  • 编码,即将图片/文本等等原始状态的数据样本support samples转为浮点数值的向量表示sample vectors,即 support samples -> sample vectors

  • 归纳,则是将一种类别的所有支持样本的向量表示进行归纳总结,如求平均、求和等等方式,得到该类别的向量class vector表示,即 sample vectors -> class vector

  • 求相似度就是将输入的新样本编码后的向量query vector和前面归纳的类别向量class vectors进行比对,得到对应类别的相似度得分,即 class vector × query vector -> relation score

文本分类领域,文章Few-Shot Text Classification with Induction Network提出了一种「归纳」的全新方法,不再是简单地将所有样本向量求和或者求平均,而是利用动态路由dynamic routing的方法得到类别向量。

1. 模型结构

InductionNet是由阿里团队提出的模型结构,用于少样本文本分类。模型结构有着清晰的三段式结构,包括:

  1. Encoder | 支持样本的编码

  2. Induction | 支持样本向量表示的归纳

  3. Relation | query vector与class vectors求相似度

InductionNet模型结构
1.1 Encoder模块

Encoder模块是比较常规的模块,即将文本内容转为浮点数编码。文章利用双向LSTM模型得到的特征拼接成,再经过线性变换和激活,得到权重,再乘上向量求和得到加权的样本向量。

1.2 Induction模块

Induction归纳模块,应用了动态路由dynamic routing)来计算带权重的类别向量(class vector),其中利用了Capsule Network胶囊网络来对样本向量进行「归纳」。

胶囊网络是Sabour等人于2017年正式在文章Dynamic Routing Between Capsules中正式提出的。相比于普通的神经网络的标量神经元,胶囊使用的是向量神经元,可以用于记录局部的信息在整体中的方位信息。

在人脸识别的应用中,如果调换人脸图像中五官的相对位置,比如把眼睛和嘴巴的位置互换一下,传统的卷积神经网络CNN仍旧会将其识别为人脸,虽然面部的特征是齐全的,但相对位置是错乱的。这样的结果显然是不可以接受的。Hinton提到CNN中常用的pooling池化就是一个「错误」,因为它可能会导致重要的信息丢失。比如两只眼睛一只鼻子还有一张嘴巴并不代表一张脸,因为它没有保留原始的方位信息。

而胶囊网络,最小计算单元不再是每个神经元的输出标量,而是一组神经元输出的向量,即用于表征局部特征,比如「眼睛胶囊」、「鼻子胶囊」、「嘴巴胶囊」等等这些局部特征。多层的胶囊网络会利用动态路由逐层将低级特征映射至高级的特征,比如前面的眼睛/鼻子/嘴巴特征映射至高层的「脸胶囊」这种高级特征,且保留不同特征之间的相对位置、方向等信息,即可以得到局部在整体中的方位,从而判断一张图片是否是正常的人脸。

动态路由,就是将低层胶囊按照特定权重加权映射到上层的胶囊的一种方法,而其核心,其实是一种带权重加权的mean pooling。在InductionNet中具体的步骤如下:

Dynamic Routing的伪代码流程

上面的流程中,输入为支持样本(support sample)的向量表示,其中代表类别,代表样本编号。具体可以分为以下5步:

  1. 矩阵转化

对向量进行矩阵变换。如果在图像的层面考察,相当于进行了图像的平移、缩放、旋转等变换操作。

  1. 输入加权

对类别的对于各个样本的耦合参数(coupling coefficients)进行softmax操作,得到权重,即为类别中每一个样本的权重系数。的初始化值为0。

  1. 加权求和

用前面计算的权重系数对类别中的所有样本加权求和得到未激活的类别向量(class vector)。

  1. 非线性激活

对上面的中间类别向量进行非线性激活操作,这个操作被称为squash,意为「压缩」,保持原有的向量的方向,但将向量的长度控制到0-1之间。胶囊网络中用向量的长度来表征其是否包含某个特征的概率。

  1. 参数更新

这一步是在更新耦合系数,可以看到如果第个样本如果本身占权重很大,权重的更新会强化其主导地位。


到这里,经过多轮的迭代上述的流程,最终得到的就是代表类别的向量。

InductionNet中的胶囊网络中capsule的数目为1,是其在这篇文章中的特例应用,用于归纳类别中多个样本的类别向量(class vector)。即利用动态路由的方法对各个样本向量加权求平均

1.3 Relation模块

在得到类别向量之后,将输入的query经过encoder模块得到向量,再和各个计算相关系数。

得到上面的相关性的向量之后,再计算得到相关性系数。

在得到query与各个类别向量的相关性系数之后,再选择系数最大的作为query的类别。

2. 总结

InductionNet介绍了一种根据知识库中的支持样本作为参考,将新的样本进行分类的做法。其中最重要的部分,就是利用动态路由的方法「归纳」各个支持样本的表征,得到类别的数值表征

文本是基于度量的元学习方法的最后一篇。本系列的下一篇将会带来基于优化的元学习方法,敬请期待。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

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

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

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!

少样本文本分类 InductionNet相关推荐

  1. 少样本苹果分类机器深度学习

    场景: 样本少,且只有部分进行了标注.负样本类别(不是被标注的那些)不可穷尽,图像处理 步骤: 1,数据增强,扩充确认为普通苹果的样本数量 2,特征提取,使用VGG16模型提取图像特征 3,Kmean ...

  2. 清华大学刘知远组:文本分类任务中,将知识融入Prompt-tuning过程

    ©作者 | 刘兴贤 学校 | 北京邮电大学硕士生 研究方向 | 自然语言处理 前两天看到刘知远老师组在 arxiv 上放出来了 Prompt-tuning 相关的新工作,这篇文章是将外部知识融入 Pr ...

  3. 论文浅尝 | 混合注意力原型网络的含噪音少样本的关系分类

    论文笔记整理:余海阳,浙江大学硕士,研究方向为知识图谱.自然语言信息抽取. 链接:https://www.aaai.org/Papers/AAAI/2019/AAAI-GaoTianyu.915.pd ...

  4. 使用孪生网络和零样本学习进行文本分类

    意图识别是NLP中对话系统的一项基本任务. 意图识别(有时也称为意图检测)是使用标签对每个用户话语进行分类的任务,标签来自一组预定义的标签. 分类器对标记数据进行训练并学会区分对话属于哪个类别. 如果 ...

  5. 文本分类概念类大总结(机器学习+深度学习)

    基础普及: https://zhuanlan.zhihu.com/p/25928551 综述类(有不同算法在各数据集上的性能对比):   Deep Learning Based Text Classi ...

  6. 文本分类方案,飞浆PaddleNLP涵盖了所有

    文章目录 1.前言 2.核心技术 2.1 文本分类方案全覆盖 2.1.1 分类场景齐全 2.1.2 多方案满足定制需求 方案一:预训练模型微调 方案二:提示学习 方案三:语义索引 2.2 更懂中文的训 ...

  7. 自然语言处理——文本分类综述

    最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM.贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写 ...

  8. NLP入门实践总结:教你用Python实现文本分类(附代码)

    分类问题是NLP(Natural Language Processing,自然语言处理)领域的经典常见任务,而随着预训练模型的发展,预训练时代下的文本分类算法逐步成为了我们从事NLP相关工作的必备技能 ...

  9. 少样本学习原理快速入门,并翻译《Free Lunch for Few-Shot Learning: Distribution Calibration》

    ICLR2021 Oral<Free Lunch for Few-Shot Learning: Distribution Calibration> 利用一个样本估计类别数据分布 9行代码提 ...

  10. 使用元学习来进行少样本图像分类

    2020-07-18 20:57:58 作者:Etienne 编译:ronghuaiyang 导读 你并不总是有足够的图像来训练一个深度神经网络.下面是教你如何通过几个样本让模型快速学习的方法. 你并 ...

最新文章

  1. Linux使用netstat命令查看并发连接数
  2. python --异常处理
  3. 从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储+服务+抽象接口模式...
  4. 【编程2】单链表+单链表反转(LeetCode. 206)
  5. 微服务中远程调用Dubbo与Feign对比
  6. 浅谈一下这个所谓的特殊算法——动态规划?
  7. matlab超出维度,求助。。。matlab索引超出维度要怎么修改。。。谢谢
  8. C/C++ 去掉字符串首位的空格字符
  9. c语言int grade 5,C语言补考!!!
  10. 汽车零部件开发工具OSEK NM协议栈源代码及配置功能
  11. 关于ADS注册表删除和重新安装
  12. 微信小程序_(2022)微信小程序开发者后台管理登录/开发成员管理/开发设置中设置(云)服务器/数据拉取权限配置/appID查看/邮箱修改
  13. 【科学文献计量】知识单元的频次统计与分布(简单阅览和完整频次统计)
  14. Java常见面试题大全
  15. cassandra多个数据中心实现异地容灾
  16. 数学分析:有理数的稠密性证明
  17. STM32 - ADC采集电压 中断处理
  18. 如何扎实的学好ABAP?我的个人经验
  19. svchost.exe进程占用过高内存
  20. 收费邮箱品牌大全,一个足够!

热门文章

  1. npm构建vue项目
  2. ThinkPHP redirect 传参
  3. hdu5187 奇怪题
  4. 解决webStorm没有cesium代码自动提示的方法
  5. Vue 生命周期学习心得(上)
  6. 最好用的JQuery插件集合以及组合拳
  7. C# 每天温习一点(IEnumerableTSource)
  8. 金融危机和丘处机的关系
  9. 新版Windows Live SkyDrive Beta发布
  10. [导入]ASP.NET重用代码技术 - 用户控件技术