Advertisement

论文笔记:Hyper-dimensional computing for a visual question-answering system that is trainable end-to-end

阅读量:

论文笔记:Hyper-dimensional computing for a visual question-answering system that is trainable end-to-end

这是一篇发表于 NIPS 2017 的关于 HyperDimensional Computing(HD) 的文章。

任务

这篇文章面向的任务是 Visual Question Answering (VQA),通俗讲就是给机器一张图片,一个相应的问题,然后机器根据图片来回答问题。

通常来讲,处理这种任务的模型一般分为两个部分,一个部分是是 RNN,用来 encode 问题,并生成答案;另外一部分是 CNN,用来分析图片。成功的关键在于如何把两者的输出,有机的结合起来,能让生成答案的过程更加合理。

另外一类方法也是分为两个部分。一个叫 perceiver,另外一个叫 evaluator。Perceiver 负责把图片变成一个知识库 (Knowledge base);evaluator 则负责根据问题,在这个知识库上面搜索,找到最合适的答案。

其实不管哪种方法,最难解决的,也是这个任务最有趣的,就是如何统一文字和图片这二者的 feature,毕竟他们有着非常不一样的结构,被不一样的模型处理。本文的作者希望能用 HyperDimensiona(HD)Computing 解决这个不统一的问题。在这篇文章里面,知识库就是用 HD vector 来表示的。

数据集

图片比较小,28x28 的尺寸。 image.png

每张图片里面有两个物体,每个物体,有四种可能的颜色和四种可能的位置

colors: red, green, magenta, orange

shapes: circle, square, triangle, cross

提的问题肯定是围绕着图里面物体的种类,颜色,和位置展开的。总体来说,还算一个人工造的数据集。

HD 和 知识库

我们以上图的第一个图片为例,可以用一句话描述它,

"In position top-left there is a shape of type square and color magenta; and in position top-right there is a shape of type square and color green"

我们接下来就是使用 HD-computing 用一个 向量 来表示这句话。

一个 HD vector,就是一个随机生产的,高维的,里面只有 +1, -1 的一个向量。这里他用的是 1000 维的,但是实际上,HD 一般大家使用 10K 维的。基本上,维数越高,效果越好。

接着定义 HD vector 的几个操作。

第一:乘法操作 image.png

第二:加法操作 image.png

第三:求距离(夹角)操作 image.png

假设每一个 concept 都用一个 HD vector 来表示:

"position", "color", "shape", "top-left", "top-right", "bottom-left", "bottom-right", "red", "green", "magenta", "orange", "circle", "square", "triangle", "cross"

(这些 vectors 是随机产生的)

那么上面那句就可以表达成: image.png

这个东西有什么用呢?

他有个非常有个有趣的性质。就是这个东西在某种程度上是可逆 的。

我们拿到一个图片的 m encoding 之后,假如我们想得到在 top-left 位置上物体的 shape(这个叫做 decode)。我们可以做如下操作

m\otimes \text{top-left} \otimes \text{shape}

得到的这个 vector 虽然不是 square,但是他离 square 的距离要比其他形状更近。所以,我们是可以利用 HD vector 来实现非精确的 decoding 的。

在 HD 上面查询

假如我们想查询跟 位置 有关系的问题。

Positions = {top−left, top−right, bottom−left, bottom−right}

以下的问题就可以这么来做: image.png image.png

对于一张图片 I ,我们有上面类似的五个问题,每个问题都一个要么是 False,要么是 True 的回答,所以我们就造出了一个数据集 image.png

这里的 q可以理解成是 label。

Training and Testing

然后他们使用这样一个数据集来训练一个新的网络,这个网络的输入是 图片,输出是一个 1000 维的向量。 image.png image.png

这个地方表示不理解为什么还要另外 train 一个网络。。。

全部评论 (0)

还没有任何评论哟~