小样本学习记录————利用所有数据的元学习Few-shot Text Classification with Distributional Signatures
小样本学习记录————利用所有数据的元学习Few-shot Text Classification with Distributional Signatures
在计算机视觉中,低水平的模式是可以跨学习任务迁移的。然而,直接将这一方法应用于文本是具有挑战性的-词汇特征对一项任务具有很高的信息量,对另一项任务可能无关紧要。本文的模型不仅从单词中学习,还利用了它们的分布签名,这些签名编码了相关的单词并发模式。我们的模型在元学习框架内进行训练,将这些签名映射为注意力分数,然后用这些分数对单词的词汇表示进行加权。
网络结构
注意力生成器
关注单词统计的函数,根据大的资源库来统计一般词的重要性,利用支持集来估计特定词的重要性,生成的注意力机制构建下游分类的表示。
根据文献中的记载,频繁出现的词不太可能是信息性的,(因为这里the会比较容易出现),所以要降低频繁词的权重,增加稀有词的权重,本文选用了Arora的一种既定的方法。
s(xi):=ϵϵ+P(xi)s(x_i):=\frac \epsilon {\epsilon + P(x_i)}s(xi):=ϵ+P(xi)ϵ
这里ϵ是10−3,xi是第i个单词,P(xi)是xi在源域的重要性。\epsilon是10^{-3},x_i是第i个单词,P(x_i)是x_i在源域的重要性。ϵ是10−3,xi是第i个单词,P(xi)是xi在源域的重要性。
支持集中有区别的词在查询集中也有可能有区别。所以定义了所以如下的统计数据来反应单词重要性。
t(xi):=H(P(y∣xi))−1t(x_i):=\mathcal H(P(y|x_i))^{-1}t(xi):=H(P(y∣xi))−1
(P(y∣xi))是支持集上的极大似然,H(.)是熵算子,t(.)根据频率分布高度加权。(P(y|x_i))是支持集上的极大似然,\mathcal H(.)是熵算子,t(.)根据频率分布高度加权。(P(y∣xi))是支持集上的极大似然,H(.)是熵算子,t(.)根据频率分布高度加权。
直接使用统计量可能不是效果很好原因如下
两个统计量可能互补,不清楚如何结合。
这些统计量对于分类来说单词重要性噪声近似。使用双向LSTM融合输入信息,使用点积注意力来预测单词xix_ixi的注意力分数。
αi:=exp(vThi)∑jexp(vThj)\alpha_i :=\frac {exp(v^Th_i)} {\sum_jexp(v^Th_j)}αi:=∑jexp(vThj)exp(vThi)
hih_ihi是i处的双向LSTM输出,v是可学习的向量。
岭回归
在注意生成器下,岭回归者在看了几个例子后很快就学会了做出预测。首先,对于给定情节中的每个例子,我们构建一个词汇表征,重点放在重要的单词上,由注意力分数表示。下一步,给出这些词汇表示,我们从零开始训练支持集上的岭回归。最后,我们进行预测。
构建表征:根据不同的词的重要程度进行词汇表征。
ϕ(x):=∑iα⋅febd(xi)\phi(x):=\sum_i\alpha·f_{ebd}(x_i)ϕ(x):=i∑α⋅febd(xi)
febd(⋅)f_{ebd}(·)febd(⋅)是预训练后对x的嵌入表示。
从支持集训练:岭回归允许模型进行端到端的闭合解可以减少过拟合。
W=ϕST(ϕSϕST+λI)−1YSW = \phi^T_S(\phi_S\phi_S^T+\lambda I)^-1Y_SW=ϕST(ϕSϕST+λI)−1YS
I是定义的矩阵,W是权重矩阵,λ\lambdaλ是正则化系数。
在查询集的推理:使用Y^Q\hat Y_QY^Q推理P^Q\hat P_QP^Q,使用交叉熵损失类更新参数。
Y^Q=αϕQW+b\hat Y_Q = \alpha\phi_QW + bY^Q=αϕQW+b
理论分析
为了针对提高输入扰动的鲁棒性,设(P, S, Q)集合,P是原集,Q是查询集, S是支持集,对于任何S和Q的交集,注意力生成器会产生词的重要性。
α=AttGen(x∣S,P)\alpha = AttGen(x|S,P)α=AttGen(x∣S,P)
因为重要的单词可能会被常见的单词替换(如the,a经常出现),所以我们使用σ(w)\sigma(w)σ(w)表示单词的扰动,使用P(W)=P(σ(W))P(W)=P(\sigma(W))P(W)=P(σ(W))来表示w,这样可以使单词映射到相同的特征空间。
训练过程
了解完这篇文章的网络结构,下面根据几副来好好理解一下训练过程
元训练
- 在元训练的每个episode中。首先从训练集拿出N个类样本,在从N类样本中进行支持集和查询集的抽取,在这一episode中将剩下的样本作为源池库。
- 元测试中,从测试集抽取支持集和查询集,将训练集作为源池库。
源池库的作用是为了让对查询集分布更加的合理,减少过拟合。
在每一个episode中,可以将数据集分成以下的部分。
整体结构
文章的整个思路根据下图再进行一次梳理就显得很清楚了,
- 首先根据支持集和源池库中的样本中单词分布通过双向LSTM得到注意力分数α\alphaα,
- α\alphaα和FastText进行从词嵌入相乘构造特征向量ϕ(x)\phi(x)ϕ(x)。
- 在支持集中训练,利用YSY_SYS和对支持集的特征向量ϕ(x)\phi(x)ϕ(x)得到W参数。
- 最后利用得到的W和对查询集进行特征表征后得到的ϕ(x)\phi(x)ϕ(x)计算查询集的概率值,计算误差进行参数更新。
进行特征表征后得到的ϕ(x)\phi(x)ϕ(x)计算查询集的概率值,计算误差进行参数更新。
论文代码是开源的,感兴趣的小伙伴可以先看看,后续我会再补上代码研读。https://github.com/YujiaBao/Distributional-Signatures
小样本学习记录————利用所有数据的元学习Few-shot Text Classification with Distributional Signatures相关推荐
- MySQL学习记录 (三) ----- SQL数据定义语句(DDL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- MySQL学习记录 (二) ----- SQL数据查询语句(DQL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- 【提示学习】Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
论文信息 名称 内容 论文标题 Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inf ...
- 【网络流量识别】【深度学习】【四】DNN、GBT和RF—利用大数据和深度学习技术进行入侵检测
本文发表于2019年4月,ACM东南会议纪要,作者为奥萨马·费克等人,现收录于ACM网站. 原文题目:使用大数据和深度学习技术进行入侵检测 原文链接:使用大数据和深度学习技术进行入侵检测|2019年A ...
- VQA任务学习记录1(附数据使用代码记录)
0.前言 最近需要学习处理VQA任务特此记录,这个主要是对论文bottom-up and top-down()和bilinear attention network()中的代码部分的学习记录,目前也并 ...
- RPLIDAR思岚雷达学习记录--4--雷达数据实时保存
数据持续输出测试 第三节中最后虽然可以读取到雷达的角度和距离数据,但是每次后面读取的数据都会覆盖之前的数据,因此尝试使用动态的文件名,这样每次保存数据都会使用不同的文件名,数据就不会被覆盖.决定使用当 ...
- ROS学习-记录和回放数据
本博客将介绍怎么使用ROS系统来记录数据到一个.bag文件中,然后回放数据,在运行系统中产生类似的效果. 记录数据(创建一个bag文件) 从一个运行的ROS系统中记录topic数据,并存储到bag文件 ...
- 【迁移学习(Transfer L)全面指南】元学习
文章目录 1 什么是元学习? 2 与迁移学习 3 元学习的基本问题可以分成三大类 4 总结 1 什么是元学习? 元学习即Meta-Learnig,它希望模型获取一种"学会学习"的能 ...
最新文章
- 解决每次git pull需要不用输入用户名信息
- C#中各种数据类型转换的方法的类
- 19、修改和删除事件(ALTER/DROP EVENT)
- 最详细的创建虚拟机_创建_安装配置_配置启动向导
- 类和类之间的关系解析-1
- 机器人与目标匹配问题及解决 虚拟动力学 纳什平衡 Q-Learning
- (140)System Verilog替代交叉覆盖率
- 游戏地图制作---Tiled使用教程
- 系统安装-黑苹果之路
- python学习笔记-递归函数
- JVM(四)—一道面试题搞懂JVM类加载机制
- 计算机二级web最全真题题库下载
- 本科毕业设计(论文)格式最详细总结
- oracle新增字段,并设置默认值
- 学习 C++,关键是要理解概念,而不应过于深究语言的技术细节
- 留着以后慢慢做的计算几何(题表)
- 企业如何实现在线客服功能?
- 解决低版本matlab打开高版本Matlab的.m文件时,出现中文乱码的问题。
- 9个最佳的大数据处理编程语言
- 微机原理DOSBox安装与使用
热门文章
- 能量景观(Energy landscape)
- Kaggle Top1% 是如何炼成的!
- python模拟上传图片_用python创建自己的等离子图片模拟
- 高中信息技术合格考试Python编程知识点全整理【连载....】
- linux startx错误,Linux startx命令错误:
- MySQL数据库删除大量数据的方式
- 2013年MBA、MPA、MPAcc入学考试综合能力辅导教材
- Python数据处理(三)——美国西雅图自行车流量可视化
- 没有比这个更详细的Elasticsearch教程
- 又一微信自动化框架wxauto横空出世了!