2018年5月1日星期二

你的论文能否中顶会?这篇分析同行评审结果的论文可帮助你

在人工智能领域,会议论文是证明研究人员学术水平的重要一环。是否存在一些「技巧」可以提高论文被大会接收的几率?人工智能是否可以帮助我们?近日,来自卡耐基梅隆大学(CMU)研究者们收集了上万篇 AI 顶级会议的接收/被拒论文,并使用机器学习工具进行分析,获得了一些有趣的结果。最后,当然……这一研究的论文已经被即将在 6 月 1 日于美国举行的自然语言处理顶会 NAACL 2018 接收。

项目地址:https://ift.tt/2r3OCa0

简介

权威的科学会议利用同行评审来决定要将哪些论文列入其期刊或会议记录。虽然这一过程似乎对科学出版物至关重要,但其往往也饱受争议。意识到同行评审的重要影响,一些研究人员研究了这一过程中的各个方面,包括一致性、偏差、作者回应和一般评审质量 (Greaves 等,2006;Greaves 等,2011;De Silva and Vance, 2017)。例如,NIPS 2014 会议的组织者将 10% 的会议提交论文分配给两组不同的审查人员,以衡量同行评审过程的一致性,并观察到两个委员会对超过四分之一的论文接受/拒绝决定意见不一样 (Langford and Guzdial, 2015)。

尽管已经有了这些努力,但是关于同行评审的定量研究还是有限的,很大程度上是由于只有很少的人能够接触到一个学术活动的同行评审(例如期刊编辑和程序主席)。本文的目的是通过首次引入一个用于研究目的的同行评审公共数据集: PeerRead,来降低科学界研究同行评审的障碍。

在此论文中,我们使用三种策略来构建数据集: ( i ) 与会议主席、会议管理系统协作,允许作者和评审人分别选择其论文草稿和同行评审。( ii ) 抓取公开的同行评审,并用数字评分对文本评审进行标注,如「清晰度」和「影响」。(iii) 对与重要会议提交日期一致的 arXiv 提交论文进行编目,并在以后的会议记录中检查是否出现类似论文。总的来说,该数据集由 14700 篇论文草稿和相应的「接受/拒稿」决定组成,其中 3000 篇论文包含专家撰写的 10700 条文本评论。此外,我们将定期发布 PeerRead,为每年新的学术活动增加更多的内容。

PeerRead 数据集可以以多种方式使用。对同行评审的定量分析可以提供见解,帮助更好地理解 (且可能改进) 评审过程的各种细微差别。例如,在该论文的第三部分中,我们分析了总体推荐分数与单个方面分数 (例如清晰度、影响和原创性) 之间的相关性,并量化了口头演示推荐评论与海报推荐评论有何不同。其他的样本可能包括匹配评论分数与作者,以揭示性别或国籍偏差。从教学角度来看,PeerRead 数据集还为经验不足的作者和首次审稿人提供了不同的同行评审实例。

表 1: PeerRead 数据集。Asp. 代表评审是否具有特定方面的得分(例如清晰度)。注意,ICLR 包括由标注者给出的不同方面的得分(详见 2.4 部分)。Acc/Rej 一列表示接受/拒绝的论文比例。需要注意,NIPS 仅仅提供了被接受的论文的评审意见。

作为一个自然语言处理资源,同行评审是个有趣的挑战,无论是从语义情感分析领域还是文本生成领域,前者前者预测被评审论文的不同属性,例如清晰度和原创性,后者则是在给定一篇论文的情况下,自动地生成它的评审意见。在被以足够高的质量解决时,这种类型的 NLP 任务也许会在评审过程中帮助审稿人、区域主席以及程序主席,例如,通过为某些论文投稿减少所需的审稿人数量。

在第四部分中,我们基于这个数据集引入了两个新的 NLP 任务:(i) 预测一篇论文是否会被某个学术会议接受,(ii)预测论文在某些方面的数字得分。我们的结果显示:在 PeerRead 的四个不同部分中,与大多数全部拒绝(reject-all) 基线相比,我们能够以误差减小 6--21%de 的结果预测「接受/拒稿」决策结果。由于我们使用的基线模型相当简单,因此有足够的空间来开发更强的模型以做出更好的预测。

论文接受分类

论文接受分类是一个二分类任务:给定一篇论文草稿,预测在一组预定的学术会议中它将会被接受还是拒稿。

模型: 我们训练一个二值分类器来为一篇论文预测「接受/拒稿」的概率,也就是:P(accept=True | paper)。我们用不同类型的分类器做了实验:logistic 回归、使用线性核或者 RBF 核的 SVM、随机森林、最近邻、决策树、多层感知机、AdaBoost 以及朴素贝叶斯。我们使用了人工设计的特征,而不是神经网络模型,因为人工特征易于解释。

表 5: 接受分类的测试准确率。在所有的案例中,我们的最佳模型超越了大多数分类器。

我们使用了 22 个粗略的特征,例如标题长度,专门的术语(例如「深度」和「神经」)是否出现在摘要中,以及稀疏和密集的词汇特征。

实验设置:我们使用 PeerRead 数据集中的 ICLR 2017 和 arXiv 部分来做实验。我们为每一个 arXiv 类别训练了独立的模型:例如 cs.cl,cs.lg,以及 cs.ai。我们的所有模型都使用 python 的 sklearn 实现 (Pedregosa et al., 2011)。我们考虑了支持向量机和 logistic 回归的不同正则化参数(所有超参数的详细描述参见附录 A.1)。我们使用了标准的测试拆分,并且在训练集上使用了 5 重交叉验证。

结果: 表 5 展示了我们在论文接受准确率上的测试准确率。在所有的例子中,我们的最佳模型都以大于 22% 的误差率优势超过大部分分类器。不过,由于我们的模型在评价给定论文所做工作的质量方面缺乏成熟性,所以这可能意味着我们定义的一些特征与某些强有力的论文,或者有偏差的审稿人的判断相关。

我们对数据集中的 ICLR 和 arXiv 部分进行了控制变量研究。为了简化分析,我们为 arXiv 中的三种类别训练了一个模型。表 6 展示了当我们移除了其中的一个特征的时候,最佳模型的测试中准确率的绝对下降。该表显示,一些特征对分类决策有着很大的贡献:例如增加一个附录,大量的定理或公式,引文前的文本的平均长度,本文提交前五年内发表的论文数量,ICLR 的论文摘要中是否包含「最先进的技术(state of the art)」,或者 arXiv 的摘要中是否包含术语「神经(neural)」,以及标题的长度。

表 6: 当我们从完整的模型中仅仅移除一个特征的时候,论文接收预测任务的绝对准确率的差别。

图中具有较大负差别的特征更加显著,研究人员仅仅显示了每个部分最显著的 6 个特征。分别是:num_X:即 X 的数量(例如定理或者公式),avg_len_ref:引用前的文本平均长度,附录:文章是否包含附录,abstractX:摘要是否包含术语 X,num_uniq_words:唯一单词的数量,num_refmentions:提及的参考文献的数量,以及 #recent_refs:近五年内发表的参考文献的数量。

图 1:PeerRead 测试集上预测任务的均方差(RMSE, 越小越好):左侧-- ACL 2017,右侧:ICLR 2017。

结论

我们的实验表明,论文的某些属性与较高的接收率正相关,例如包含附录。我们希望其他研究人员能够发现新的我们还没有在这个数据集中的同行评审中探索到的机会。一个具体的例子就是,研究接受/拒绝的决定是否反映了对作者的人口偏见 (例如国籍) 将是有意义的。

论文:一个同行评审数据集(PeerRead):集合、洞见以及自然语言处理应用

论文链接:https://ift.tt/2I3Xzuj

同行评审是科学文献出版过程中的重要组成部分。在本研究中,我们提出了第一个可用于研究目的的科学文献同行评审公共数据集 ( PeerRead v1 ),该数据集为研究这一重要的现象提供了机会。该数据集由 1 万 4 千 700 份论文草稿,以及包括 ACL、NIPS 和 ICLR 在内的顶级学术活动对应的接受/拒稿决定组成。数据集还包括专家为论文子集撰写的 1 万零 700 份文本同行评审。我们描述了数据收集过程,并提供了在同行评审中观察到的有趣现象。我们在此基础上提出了两个新颖的 NLP 任务,并给出了简单的基线模型。在第一个任务中,我们展示了简单的模型可以预测一篇论文是否被接受,与大多数基线模型相比,误差减少了 21 %。在第二个任务中,我们预测了评审方面的数值分数,结果表明,对于诸如「原创性」和「影响」的高方差方面,简单模型可以优于平均基线。

]]> 原文: https://ift.tt/2w42nel
RSS Feed

机器知心

IFTTT

微软提出基于程序图简化程序分析,直接从源代码中学习

程序分析通常有两种方法,分别基于数理逻辑和自然语言理解。通过将程序表示成图结构,来自微软研究院和西门菲莎大学的研究者展示了一种结合二者的新方法,可以直接从源代码中学习,且更准确地查找已发布软件中的 bug。

过去五年,基于深度学习的方法给大量应用带来了变革,如需要理解图像、话语和自然语言的应用。对于计算机科学家而言,一个自然出现的问题是:计算机是否能够学会理解源代码。乍一看这个问题似乎很简单,因为编程语言的设计初衷就是被计算机理解。但是,很多软件 bug 的出现是因为我想让软件这么做,但是写出来却是另外一回事。也就是说,小的拼写错误可能导致严重后果。

看一下以下这个简单示例:

float getHeight { return this.width; }.

该示例中,人类或者理解「height」和「width」意思的系统可以很快发现问题所在。源代码具备两种功能。首先,它与计算机进行准确交流,以执行硬件指令。其次,它与其他程序员(或源代码作者)针对程序的运行情况进行交流。后者通过选择代号、代码布局和代码注释来实现。在发现两种交流渠道似乎可以分离后,一个自动发现软件 bug 的系统出现了。

之前的程序分析主要关注程序的正式、机器可理解语义或将程序看作(有点奇怪的)自然语言。前者的方法来自于数理逻辑,要求对每个需要处理的新案例进行大量的工程工作。而自然语言方法需要在纯句法任务上性能优越但尚无法学习程序语义的自然语言处理工具。

在 ICLR 2018 的一篇论文《Learning to Represent Programs with Graphs》中,来自微软研究院和西门菲莎大学的研究者展示了一种结合二者的新方法,并展示了如何查找已发布软件中的 bug。

程序图

为了学习源代码中的大量结构,研究者首先把源代码转换成程序图( program graph)。图中的节点包括程序的 token(即变量、运算子、方法名等)及其抽象句法树的节点(定义语言句法的语法元素,如 IfStatement)。程序图包含两种不同类型的边:句法边,表示代码解析方式,如 while loop 和 if block;语义边,即简单程序分析的结果。

图 1:句法边

句法边包括简单的「NextToken」边、用于表示抽象句法树的「Child」边,以及连接一个 token 和源代码中它最后一次出现的「LastLexicalUse」边。图 1 展示了此类边用于 statement Assert.NotNull(clazz) 的部分示例,其中对应 token 的节点是灰色框,对应程序语法的非终端的节点是蓝色椭圆形框。Child 边是蓝色的实线边,而 NextToken 边是黑色的双线边。

语义边包括连接一个变量和它在程序执行中最后一次使用的「LastUse」边(如果是循环案例,则变量在程序执行中最后一次使用的情况出现得更晚一些)、连接一个变量和它最后一次写入的「LastWrite」边,以及连接一个变量和它据此计算的值的「ComputedFrom」边。也可能有更多语义边,利用程序分析工具箱的其他工具,如 aliasing、points-to 分析,以及程序条件。图 2 是在一个小代码段(黑色)上形成的一些语义边。

图 2:语义边

LastUse 关系用绿色边表示,y 与循环前 y 最后一次使用的情况连接。类似地,LastWrite 关系用红色边表示,while 条件中的 x 的使用与循环前 x 的分配和循环中 x 的分配连接起来。最后,ComputedFrom 关系用蓝色边表示,变量与其据此计算的变量连接起来。

句法边大概对应程序员在阅读源代码时所看到的。语义边对应程序如何执行。通过在一个图中结合二者,该系统可以比单一方法学习到更多的信息。

从图中学习

由于图通常作为表征数据和数据关系的标准方式,从图结构数据中学习的方法近期受到了一定程度的关注。一个组织可以用图的形式展现出来,正如药物分子可以看成是原子构成的图。近期成功的应用深度学习的图方法是图卷积网络(卷积神经网络的一种扩展)和门控图神经网络(循环神经网络的一种扩展)。

这两种方法都是首先独立地处理每个节点,以获取节点本身的内部表征(即低维空间中的一个向量),然后将互相连接的节点的表征进行重复连接(两种方法的组合方式不同)。因此,经过一个步骤之后,每个节点拥有自身的信息和它的直接近邻节点的信息;经过两个步骤之后,每个节点将获得距离两个节点的信息,以此类推。由于所有的步骤都使用(小型)神经网络,因此这些方法可以被训练用于从数据中提取整个任务相关的信息。

搜索 bug

在程序图上学习可以用于搜索 bug,例如本文开头描述的那个例子。给定一个程序、程序中的某个位置以及在该位置上可以使用的一系列变量。然后模型被询问应该使用哪些变量。为了执行这项任务,程序被变换为程序图,某个特定节点对应所考虑的位置。通过考虑该特定节点的计算表征,以及对应可用变量的节点表征,网络可以计算每个变量的可能性。这样的模型可以很容易地通过几百万行已有代码来训练,并且不需要专门标注的数据集。

当模型在新代码上运行,并以很高的概率预测出 var1,然而程序员选择的是 var2,这可能就是一个 bug。通过标记这些问题让人类专家审核,可以发现真正的 bug。例如,以下来自 Roslyn(微软 C# 编译器)的例子:

注意参数 filepath 和字段_filePath 的使用,二者很容易被混淆。然而,_filePath 只是一个打字错误,开发者在研究员报告这个问题和类似问题之后将其修改了。相似的 bug 在很多其它 C# 项目中也被找到、报告和修改。

在一个更大规模的定量评估中,新方法远远超越了传统的机器学习技术。作为基线方法,双向循环神经网络(BiRNN)直接在源代码上执行,BiRNN 的简单扩展可以访问数据流的某些信息。为了评估不同的模型,微软分析了包含 290 万行源代码的开源 C# 项目。在测试时,源代码的某个变量被遮盖,然后让模型找出原始使用的变量(假定源代码是准确并经过良好测试的)。在第一个实验中,模型在项目的留出文件上进行测试(其他文件用于训练)。在第二个实验中,模型在全新项目的数据上测试。结果如下表所示,在新的程序图上学习的模型得到了明显更好的结果。

未来应用

程序图对于在程序上应用深度学习方法是很通用的工具,微软将继续朝这个方向探索。

原文地址:https://ift.tt/2JIKB2o

]]> 原文: https://ift.tt/2IagCn2
RSS Feed

机器知心

IFTTT

用摄像头和Tensorflow.js在浏览器上实现目标检测

Tensorflow.js 是一个能在你的浏览器里运行的全新深度学习库。本文将会介绍从原生 Tiny YOLO Darknet 模型到 Keras 的转换,再到 Tensorflow.js 的转换,如何利用其作一些预测,在编写 Tensorflow.js 遇到的一些问题,以及介绍使用联网摄像头/图像轻松地进行预测检测。

项目地址:https://ift.tt/2EAH1V0

YOLO9000:更好,更快,更强

严格意义上来讲这才是原文的标题。我们将会使用 Tiny YOLO,一个快速的、能在 200 FPS 下运行的目标检测模型。我们将会使用 Tiny YOLO 而非完整的 YOLOv2。为什么?首先,YOLOv2 只在功能强大的桌面级设备上以 40 帧每秒的速度运行,而这个条件大多数用户都达不到。同时,YOLOv2 的模型文件是 Tiny YOLO 的五倍大,这将会导致网络卡死。最后,YOLOv2 有一个暂时不被原生 Tensorflow.js 支持的重组层(reorg layer)。下一步,我们将重点放在 Tiny YOLO 的网络配置(神经网络结构)以及权重上。

YAD2K:又一个 DARKNET 2 KERAS(转换器)

你可能已经注意到 YOLO 是用 Darknet 编写的,而 Darknet 听起来和 Tensorflow 没什么关系。所以我们的第一步就是将 YOLO 模型转换为更加 Tensorflow 式的东西,在我们的例子中,这个东西是 Keras。Keras 是一个更高级的深度学习框架。我们推荐使用此种方式(https://js.tensorflow.org/tutorials/import-keras.html)将你的权重转换为 Tensorflow.js 的格式。

我们将会使用 YAD2K 来将 Darknet 模型转换为 Keras 模型。请按照此处的教程来安装 YAD2K(https://github.com/allanzelener/YAD2K#installation)。

当然了,你也可以假装你已经安装好了然后使用我已经给出的最终权重文件(https://modeldepot.io/mikeshi/tiny-yolo-in-javascript),但是这样的话你会失去不少乐趣!

现在,我们将要修复 YAD2K 里的一个 Bug 来正确加载 Tiny YOLO。

用你最喜欢的文本编辑器打开 yad2k.py,在第 83 行,将 buffer=weights_file.read(16) 改为 buffer=weights_file.read(20)。为什么?现在毫无头绪。

现在在你的电脑终端运行下列指令。这些指令会下载 Tiny YOLO 权重以及配置文件同时会将转换后的模型文件输出到 model_data/yolov2-tiny.h5。

wget https://pjreddie.com/media/files/yolov2-tiny.weights wget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov2-tiny.cfg ./yad2k.py yolov2-tiny.cfg yolov2-tiny.weights model_data/yolov2-tiny.h5

之后,我们要保证新模型能运转起来。一个有趣的事实是:之前我忘了做这一步然后我花了一整天纠结为什么 Tensorflow.js 不工作。

./test_yolo.py model_data/yolov2-tiny.h5

这个模型会输出一些预测。

TENSORFLOW.JS 转换器:我们最后的权重转换方式

这一步更加简单,我保证!查看此处的官方指导(https://js.tensorflow.org/tutorials/import-keras.html)。我已经把所有的难题解决了,所以如果你还觉得这些看起来太多了的话,你可以直接跳过这一步。

我们将要安装官方转换工具。在终端运行 pip install tensorflowjs 指令来安装转换器。

现在要转换我们的模型,再次使用终端!

tensorflowjs_converter --input_format keras \    model_data/yolov2-tiny.h5 \    tfjs_model_data

现在我们终于将模型文件转移到 tfjs_model_data 中去了!注意,那个文件夹还包含了 model.json 以及一些其他的碎片文件。model.json 告诉 Tensorflow.js 神经网络的结构是怎样的以及哪些碎片文件与哪些权重相对应。这些碎片文件包含了模型的权重。要保证这些碎片文件和 model.json 在同一个目录下,不然你的模型将会无法正确加载。

Tensorflow.js 

现在,我们到了有趣的部分。我们将同时处理 ML 和 JS 代码!

首先,我们导入 Tensorflow 然后加载模型。

import * as tf from '@tensorflow/tfjs'; const model = await tf.loadModel(url);

等等,什么是'url'?你可以使用此处的托管模型文件(https://raw.githubusercontent.com/MikeShi42/yolo-tiny-tfjs/master/model2.json)或者把路径加到你转换后的文件中去。

完美,现在我们做些真正的深度学习了:

function yolo (input) {   return model.predict(input); }

啊哈。这看起来好像也没什么特别的,等等。我们忘了将输出转换成边框、分类标签以及概率!

将数字转换为边框以及数字

我不准备深入探讨这个话题,因为对 YOLO 的后处理可以拿来单独写几篇博客了。相反,我会专注于我在将 Python 版本转换到 Javascript 时遇到的难题。

1. 一部分张量操作不可行。

Tensorflow.js 还很年轻,因此有一些功能暂时不可用,例如 boolean mask 以及 NMS。你可能也会遇到这样的问题,不过幸运的是你可以绕过它,通过下列方式:

const expected_shape = tensor.shape; const data = await tensor.data(); // Async transfer from GPU to CPU // Note: data is a flattened TypedArray of the original tensor //... data manipulation in JS on CPU tf.tensor1d(data).reshape(expected_shape); // Shape it back into where we were before

2. 你不能像 Python 那样使用 -1 索引

在 python 中,你可以使用 -1 作为「最后一个元素」。不幸的是,在 Tensorflow.js 中,如果你在 tf.slice 上尝试这样操作,它只会默默地失败。

3. 你不能使用 5d 张量

注意,Tensorflow,js 的 WebGL 后端不支持 5d 张量。既然无法想象五维的样子,为什么还要使用它们?在 YOLO 中我们将输出重塑为 [batch_size,xy,wh,box_confidence,box_class_pred]。这个很显然是五维的。幸运的是,为了避免这些麻烦,我删除了 batch_size。另一种做法是不将输出重塑为 5d 张量。但是有些细节还需要谨慎处理。

除此之外,我的使用体验是连贯的。我只需要重新实现两个通常情况下 Tensorflow 不使用的 CPU 算法(传统 JS)。

NPM 安装

现在把我们的深度学习应用到程序中去吧!

幸运的是,有人已经写好了代码,所以只需在终端安装 NPM 即可:

npm i tfjs-yolo-tiny

然后我们再稍微利用一下 Javascript:

import yolo, { downloadModel } from 'tfjs-yolo-tiny'; const model = await downloadModel(); const inputImage = webcam.capture(); const boxes = await yolo(inputImage, model);

哇,你说的这个 webcam.capture() 是什么?

除了 NPM 的安装之外...

你可能已经注意到我们还没有关注过输入到我们的 YOLO 中的到底是什么。这也是 Tensorflow.js 最棒的部分之一。

我们可以从文件(DOM)中取出视频或者图像然后将其转换为一个张量!

我们可以用 Javascript 写下这些:

import yolo, { downloadModel } from 'tfjs-yolo-tiny'; const model = await downloadModel(); const inputImage = webcam.capture(); const boxes = await yolo(inputImage, model);

棒!现在可以将图像作为张量输入!之后,从图像切换到网络摄像头,你只需将其指向正确的元素即可。这对我来说很神奇。

在这之后,我们要做一些预处理。在这种情况下,将其裁剪为正方形,调整大小为 416x416,然后除以 255 得到大小范围从 0 到 1 的像素值。

最后的一些想法

我们已经介绍了如何将模型转换为 Tensorflow.js 格式,加载模型并用它进行预测。然后,我们探讨了在 Tensorflow.js 中编写后处理代码的一些难题,但我们解决了这些问题。现在我们知道如何通过静态图像或网络摄像头抓取数据,可以将大多数 ML 模型从 Python 转换为 Tensorflow.js 并在浏览器中运行它们。

原文地址:https://ift.tt/2HhxDrn


]]> 原文: https://ift.tt/2FAwBoO
RSS Feed

机器知心

IFTTT

CVPR 2018:解耦神经网络DCNet,性能优于标准CNN

本论文提出一个通用的解耦学习框架,并构建了解耦神经网络 DCNet,实验表明解耦操作可大大提高模型性能,加速收敛,提升稳健性。这篇论文已被 CVPR 2018 接收,是大会的 Spotlight 论文。

卷积神经网络(CNN)大大拓展了视觉任务的边界,如目标识别 [24, 25, 5]、目标检测 [2, 23, 22]、语义分割 [16] 等。最近,CNN 领域一个重要研究方向是:通过引入捷径连接(shortcut connection)[5, 8] 、多分支卷积(multi-branch convulsion)[25, 30] 等改进架构,来增加网络的深度和表征能力。但另一方面,尽管 CNN 有了诸多改进和提升,对于卷积本身为何能够实现判别表征和优秀的泛化能力,这依然是一个有趣的、值得探索的问题。

如今,CNN 中通常利用内积来编码表示 patch x 和卷积核 w 之间的相似性。但内积公式 将语义差异(即类间差异)和类内差异耦合到同一个度量中。因此,当两个样本间的内积很大时,我们很难确定是由于两个样本间存在很大的语义/标签差异,还是由于存在很大的类内差异。为了更好地研究 CNN 表征的性质,进而改善现有的 CNN 框架,本文作者提出明确地解耦(decouple)语义差异和类内差异。具体而言,研究者使用范数和角度(angle)将内积重新参数化为:该直觉来自图 1 中的观察,其中角度表示语义/标签差异,而特征范数(feature norm)则表示类内差异。特征范数越大,则预测越可信。这种直观的解耦方法启发研究者提出了解耦卷积算子(decoupled convolution operator)。研究者希望,通过将内积解耦为范数和角度,能够更好地对深度网络中的类内差异和语义差异进行建模。

基于将内积解耦为范数和角度这一思路,研究者通过将传统的基于内积的卷积算子(||w|| ||x|| cos(θ_(w,x)))扩展至解耦算子,提出了一个全新的解耦神经网络 DCNet。为此,研究者将此类解耦算子定义为:某个范数函数 h(||w||, ||x||) 与某个角度函数 g(θ_(w,x)) 的乘积形式。解耦算子为更好地建模类内差异和语义差异提供了一个通用框架,原始的 CNN 等价于将 h(||w||, ||x||) 设置为 ||w|| ||x||,将 g(θ_(w,x)) 设置为 cos(θ_(w,x))。(在解耦算子中),幅度函数(magnitude function)h(||w||, ||x||) 建模类内差异,而角度函数(angular function)g(θ_(w,x)) 则建模语义差异。

从解耦的角度看,原始 CNN 包含了一个很强大的假设:类内差异可通过范数乘积的形式进行线性建模,而语义差异可利用角度余弦值刻画。但这个建模方法并非在所有任务中都是最优的,而通过解耦学习框架,我们可以根据任务本身设计解耦算子,或者直接从数据中「学习」出来。DCNet 共有以下四个优点:一,DCNet 不仅允许我们使用一些替代函数更好地建模类内差异和语义差异,还允许我们直接学习这些函数,而不是修复它们。二,通过使用有界幅度函数,DCNet 可以改善 [14] 中分析的问题,进而实现更快的收敛,同时取得和原始 CNN 相当甚至更好的准确率。三,DCNet 的一些实例展现出了面对对抗攻击时更强的稳健性:通过一个有界函数 h(·) 压缩各类别的特征空间,可以获得一定的稳健性。四,解耦算子具有很强的灵活性,且是架构不敏感的(architecture-agnostic),因此我们可以很轻松地将其引入各种网络架构,如 VGG [24]、GooleNet [25] 以及 ResNet [5]。

具体而言,研究者提出了两种不同的解耦卷积算子:有界算子和无界算子,并利用两种算子完成多个实例。结果显示,有界算子具有更快的收敛速度,且在对抗攻击中具有更好的稳健性;而无界算子则具有更好的表征能力。解耦算子可以是平滑或非平滑的,平滑与否会影响其表现。另外,研究者针对解耦算子提出了一个全新的概念:算子半径(operator radius)。算子半径刻画了幅度函数 h(·) 对输入 ||x|| 的导数的重大变化。通过利用反向传播算法联合学习算子半径,研究者还提出了可学习的解耦算子。最后,研究者展示了多种通过改进标准反向传播算法优化解耦算子的替代方式。本论文的主要贡献如下:

  • CNN 学得的特征是天然解耦的,受此启发,研究者提出了一个明确解耦的框架来研究神经网络。

  • 研究者展示了 CNN 中包含了一个很强大的假设,以完成对类内差异和类间差异的建模,而此假设可能不是最优的。通过对内积解耦,研究者能够针对不同任务设计出更有效的幅度函数和角度函数,而非使用原始的卷积。

  • 和标准 CNN 相比,DCNet 能够更容易地收敛,且具有更好的准确率和稳健性。

图 1:CNN 学得的特征天然是解耦的。图中的 2D 特征是通过将 CNN 特征维度设置为 2 直接得到的输出。

图 2:解耦卷积算子的几何解释。绿线表示原始向量,红线表示投影向量。

表 1:加权算子(TanhConv)在 CIFAR-100 上的评估结果。

表 2:未使用反向传播的原始 CNN-9 在 CIFAR-100 上的测试误差(%)。「N/C」表示模型未收敛,「-」表示没有结果。不同列中的结果来自于不同的角度激活函数(angular activation)。

表 6:标准 ResNet-18 和修正 ResNet-18 在 ImageNet-2012 上的 Center-crop Top-5 误差(%)。「*」表示使用了原始 CNN 在 ImageNet-2012 上的预训练模型作为初始模型(见 4.3)。

表 7:CIFAR-10 上的白盒(White-box)攻击,性能用准确率(%)度量。前三行是标准训练模型的结果,后三行是对抗训练模型的结果。

表 8:CIFAR-10 上的黑盒(Black-box)攻击,性能用准确率(%)度量。前三行是标准训练模型的结果,后三行是对抗训练模型的结果。

论文:Decoupled Networks

论文链接:https://ift.tt/2JEqUZo

摘要:长期以来,基于内积的卷积都是卷积神经网络(CNN)中的核心成分,也是学习视觉表征的关键所在。而 CNN 学得的特征天然能够解耦为特征范数(对应类内差异)和角度(对应语义差异),受此启发,我们提出了一个通用的解耦学习框架,对类内差异和语义差异分别进行建模。具体而言,我们首先将内积重新参数化为解耦形式,然后将其扩展至解耦卷积算子,并作为解耦神经网络的重要组成成分。我们展示了解耦卷积算子的多个有效实例,其中每个解耦算子都有很好的根据以及直观的几何解释。基于这些解耦算子,我们进一步提出直接从数据中学习算子。大量实验表明,这种解耦重新参数化操作极大地提升了模型性能,加快了模型的收敛速度,显著提升了模型的稳健性。

]]> 原文: https://ift.tt/2JMur8j
RSS Feed

机器知心

IFTTT

Google开放最大目标检测数据集,还要为它举办AI挑战赛

梅想好 发自 SSJQ

量子位 报道 | 公众号 QbitAI

Google推出的Open Images数据集又更新了。

最新发布的Open Images V4包含190万图像、600个种类,1540万个bounding-box标注,是当前最大的带物体位置标注信息的数据集

Open Images数据集的标注图像

Google方面称,为了保持标注的高质量,这些图像大部分由专业标注人员手动完成,图像丰富多样,通常还包含了具有多个对象的复杂场景——平均每张图像8个以上。

Open Images挑战赛

同时,结合Open Images V4版本的发布,Google还将举办一个Open Images挑战赛,该挑战赛将在ECCV 2018(2018年欧洲计算机视觉会议)上进行。

Google方面还说,Open Images挑战赛将遵循PASCAL VOC、ImageNet和COCO的挑战赛模式,但规模会更大,挑战也将是独一无二的。

比如:

  • 训练集包含500类170万张图片,带有1220万处bounding-box标注;
  • 比其他挑战赛有更广泛的检测类别,比如"雪人"等新对象;
  • 除了物体检测,还设置了视觉关系检测,用来识别特定关系中的物体对,如"女孩弹吉他"。

好消息是训练集已经开放,训练现在就可以开始了。

Kaggle将在今年7月1日发布一组10万规模的测试集,并于2018年9月1日截止提交结果。

Google表示很期待有更多令人惊喜的检测模型诞生,也认为大量带物体位置的标准图像,可以对视觉关系检测有帮助——他们坚信这会是一个越来越热的研究课题。

需要说明的是,Open Images V4中还包含了19,794类3010万个人工审核的图片级标签,但此次不"参赛"。

传送门

Open Images数据集&挑战赛:

Open Images Dataset V4

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2HF07Qp
RSS Feed

RSS5

IFTTT

Google开放最大目标检测数据集,还要为它举办AI挑战赛

梅想好 发自 SSJQ

量子位 报道 | 公众号 QbitAI

Google推出的Open Images数据集又更新了。

最新发布的Open Images V4包含190万图像、600个种类,1540万个bounding-box标注,是当前最大的带物体位置标注信息的数据集

Open Images数据集的标注图像

Google方面称,为了保持标注的高质量,这些图像大部分由专业标注人员手动完成,图像丰富多样,通常还包含了具有多个对象的复杂场景——平均每张图像8个以上。

Open Images挑战赛

同时,结合Open Images V4版本的发布,Google还将举办一个Open Images挑战赛,该挑战赛将在ECCV 2018(2018年欧洲计算机视觉会议)上进行。

Google方面还说,Open Images挑战赛将遵循PASCAL VOC、ImageNet和COCO的挑战赛模式,但规模会更大,挑战也将是独一无二的。

比如:

  • 训练集包含500类170万张图片,带有1220万处bounding-box标注;
  • 比其他挑战赛有更广泛的检测类别,比如"雪人"等新对象;
  • 除了物体检测,还设置了视觉关系检测,用来识别特定关系中的物体对,如"女孩弹吉他"。

好消息是训练集已经开放,训练现在就可以开始了。

Kaggle将在今年7月1日发布一组10万规模的测试集,并于2018年9月1日截止提交结果。

Google表示很期待有更多令人惊喜的检测模型诞生,也认为大量带物体位置的标准图像,可以对视觉关系检测有帮助——他们坚信这会是一个越来越热的研究课题。

需要说明的是,Open Images V4中还包含了19,794类3010万个人工审核的图片级标签,但此次不"参赛"。

传送门

Open Images数据集&挑战赛:

Open Images Dataset V4

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2HF07Qp
RSS Feed

RSS5

IFTTT

JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧!- InfoQ 每周精要848期

「每周精要」 NO. 848 2024/09/21 头条 HEADLINE JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧! 精选 SELECTED C++ 发布革命性提案 "借鉴"Rust...