array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 论文阅读笔记《Principal characteristic networks for few-shot learning》 - 爱码网

小样本学习&元学习经典论文整理||持续更新

核心思想

  本文提出一种基于度量学习的小样本分类算法(PC-Net),其中最重要的改进点是作者提出了本质特征(Principal Characteristic )的概念。作者首先指出PN网络中使用取平均值的方法来计算原型(类别表征)的方式是不合适的,因为这样无法区分各个支持集样本的特征向量对于原型的贡献区别,这种做法其实是认为每个样本的贡献是均等的。作者认为在计算原型时应该为每个样本赋予相应的权重,再进行加权求和得到该类别对应的原型,这样得到的原型就是所谓的本质特征了。本文提出的网络处理过程如下图所示
论文阅读笔记《Principal characteristic networks for few-shot learning》
  首先,支持集图像和查询集图像都要经过一个特征提取网络(eResNet)进行特征提取,eResNet是在ResNet的基础上改进得到的简化网络,以更少的参数实现了更好的效果(具体结构下文介绍)。得到每个样本对应的特征向量 f θ ( x i ) f_{\theta}(x_i) fθ(xi)后,就需要计算本质特征了,其中最重要的就是权重计算方式,本文先是计算了样本 x i x_i xi的特征向量 f θ ( x i ) f_{\theta}(x_i) fθ(xi)与同个类别其他各个样本之间的差值绝对值之和(SAD)
论文阅读笔记《Principal characteristic networks for few-shot learning》
然后对这个差值的负值做softmax处理转化为样本 x i x_i xi权重值,然后对各个样本的特征向量进行加权求和得到该类别对应的原型 p k p_k pk
论文阅读笔记《Principal characteristic networks for few-shot learning》
  这种方法的动机是作者认为同一类别的样本在特征空间中应该是非常接近的,而偶尔有一两个特例远离其他样本,其不能反映该类别样本的本质特征,应该减少其对于原型计算的影响(降低权重),而对于距离较近的样本,应该增加其对于原型计算的影响(增加权重)。这样做的效果可以在图中看出,如果采用PN的平均值计算方法(上方的图),则各个类别的原型(星状图标)会受到个别特殊样本影响而偏离中心(如红色类别),而如果采用本文设计的方法(下方的图),计算得到的原型则更接近于大部分样本的中心位置。最后作者利用余弦距离度量查询集样本与各个类别原型之间的距离,并预测类别。

实现过程

网络结构

  特征提取网络采用eResNet结构,其结构如下图所示
论文阅读笔记《Principal characteristic networks for few-shot learning》
每个残差块由三个3 * 3的卷积组和一个2 * 2的最大池化层构成,整个网络由4个残差块和一个1 * 1的卷积层与平均池化层构成。与ResNet-18相比,主要是使用最大池化层取代了带有步长的卷积层,减少了网络的参数数量,其与ResNet-18和4-Conv网络的结构参数对比如下
论文阅读笔记《Principal characteristic networks for few-shot learning》

损失函数

  本文设计了一种混合损失函数,在交叉熵损失函数的基础上,增加了相关误差损失函数
论文阅读笔记《Principal characteristic networks for few-shot learning》
式中当查询样本 x ^ \hat{x} x^属于类别 k k k,且标签 y i = k y_i=k yi=k时, z i = 1 z_i=1 zi=1,即损失函数的第二项为0;否则 z i = 0 z_i=0 zi=0,即损失函数的第三项为0。 a ( x ^ , p k ) a(\hat{x},p_k) a(x^,pk)是经过softmax归一化处理后的 x ^ \hat{x} x^ p k p_k pk之间的相似性。上式的目的是当查询样本类别和 p k p_k pk样本相同时,尽可能地增加二者之间的相似程度,反过来当类别不同时就尽可能地降低二者之间的相似程度。

创新点

  • 设计了eResNet特征提取网络,以更少的参数实现更好的效果
  • 提出了本质特征的概念,以SAD作为权重计算的依据,为每个样本赋予相应权重
  • 设计了混合损失函数

算法评价

  本文提出地本质特征这一概念还是很有启示意义的,我一直认为PN那种平均值计算类别表征的方式过于简单粗暴了,而本文巧妙地利用了SAD作为权重计算依据,为同类样本中偏离中心较远的特殊样本赋予较低的权重,减少了其对于原型计算的影响。eResNet和混合损失函数的设计也很有想法,感觉这篇3区期刊文章的质量高于许多的顶会文章了。

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。论文阅读笔记《Principal characteristic networks for few-shot learning》

相关文章: