论文:learning to propagate labels :transductive propagation network for few-shot learning

论文题目:learning to propagate labels:transductive propagation network for few-shot learning

论文发表:ICLR2019
Github:github.com/csyanbin/TPN

摘要:少样本学习的目标:在少量训练数据下(每个类别的样本很少),学习到一个有较强泛化能力的分类器。一种解决方式就是通过元学习(meta-learning)在有大量训练数据的任务中学习一个通用的泛化能力强的分类器,然后再应用在少数据任务中。文章的一个做法就是在meta-learning的框架中加入传导机制,也就是标签传播来应对少数据的问题。提出Transductive Propagation Network (TPN),对特征嵌入参数和图构建参数进行联合学习。

问题现状:与深度学习需要大量训练样本不同的是现实中人类的学习并不需要学习目标出现多次,如孩子学会“苹果”只需要看几次就能学会。这个情景更符合少样本学习的定义,深度学习中使用fine-tuning的方式会会造成过拟合的情况,是因为样本的分布不同而造成高方差,泛化能力差。

目前解决方法:元学习策略:episodic training,在每个episode包含了训练集和测试集,算法学习有标签的示例(support set)在嵌入空间的表示,通过对未标签集(query set)数据在嵌入空间表示的距离来预测其标签。episodic training模拟了真实场景下少样本数据和未标签数据集的情况,减小数据分布差异,提高泛化能力。这个方法可以缓解泛化能力的缺点,但是数据量太少的问题仍然存在。文章提出使用 transductive inference的思想在episode中对训练集和测试集进行标签传播,应对数据量少的情况,对无标注数据进行标签预测。

TPN:转导传播网络如图分为4个部分:特征嵌入、图构建、标签传播、损失计算。

1.特征嵌入:通过CNN网络对输入样本进行特征抽取生成embedding编码,得到support set数据和query set数据在相同特征空间的表示。

2.图构建:图是一个无向图,主要是各个样本节点之间的连接权重计算。通过下面的相似性函数计算权重值。参数δi和δj通过神经网络学习得到。

3.标签传播:得到五向图的权重之后,进行标签传播预测query set数据的标签。标签传播的公式如下:

                    最后预测标签F*收敛于 ,S为节点之间的相似性权重,Y为初始标签(初始化),I是单位矩阵。

4.损失计算:通过计算交叉熵损失函数,反向传播更新网络参数。

实验结果:在两个数据集上达到了比较好的效果。同时也对半监督学习也做了实验对比。

结论:本文提出传导机制用于少样本学习,将TPN网络用于元学习框架,通过特征嵌入、图构建、标签传播、损失计算四个步骤实现端到端的学习。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个 Ruby on Rails 中的代码片段。它的含义是创建一个名为 "job" 的任务,并传递一个参数对象并设置 propagate 参数为 true。 propagate 参数表示如果任务的依赖关系发生更改,则该任务是否应该重新运行。如果设置为 true,则在依赖项更改时,该任务将重新运行以更新其输出。如果设置为 false,则不会重新运行该任务,即使依赖项更改。 总之,这行代码的作用是创建一个带参数的任务,并设置 propagate 参数以指定它的依赖关系更改时是否重新运行。 ### 回答2: "job = build job, parameters, propagate: true" 的含义是在构建一个任务时传入参数,并且将任务的构建结果传播给其他相关任务。 首先,"job = build job" 表示在当前任务中构建另一个任务。这里使用了参数 "job" 来指定待构建的任务。 然后,"parameters" 是一个参数的列表,它用来传递给待构建任务的参数。具体的参数内容可以根据具体情况来定义,比如可以是需要指定文件路径、执行命令等。 最后,"propagate: true" 表示任务的构建结果将被传播给其他相关任务。这意味着,如果该任务成功构建完成,其他依赖于该任务结果的任务将会被触发开始执行,以进一步进行后续操作。 总而言之,这个语句的含义是在当前任务中构建另一个任务,并传递指定的参数给待构建任务,在待构建任务成功构建后,将任务的构建结果传播给其他相关任务进行后续操作。 ### 回答3: "job = build job, parameters, propagate: true" 这句话是Jenkins中的Pipeline脚本中常见的一种语法。它的作用是在构建任务的过程中,通过传递参数来执行另一个构建任务。 具体解释如下: - "build job" 表示要构建的任务,可以是Jenkins中已经定义的任何一个任务。 - "parameters" 表示传递给目标任务的参数列表,可以是任何需要传递的参数。 - "propagate: true" 表示传递参数时,继续传递这些参数给目标任务。 这种语法可以用于构建任务之间的依赖关系或者任务的自动化处理。当满足某个条件或者触发某个事件时,可以通过构建一个任务来触发其他相关任务的执行,并且可以传递参数给这些任务。 例如,假设有两个任务A和B,任务A需要执行一些操作并生成一些结果,任务B需要使用任务A生成的结果进行进一步处理。在任务A执行完成后,可以通过以上的语法,将任务B作为一个参数传递给任务A,使得任务A执行完后自动触发任务B的执行,并且将任务A生成的结果传递给任务B进行处理。 总而言之,"job = build job, parameters, propagate: true" 这个语法的意思就是通过传递参数来执行特定的构建任务,并将这些参数传递给目标任务进行后续处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值