Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model

Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model

    • 背景
      • Skip-gram
    • 算法
      • 算法思路
      • 原理

这篇2013年的文章提出了DeViSE这种方法,主要是综合了传统视觉识别的神经网络和词向量处理(word2vec)中的skip-gram模型,实现了一个视觉和语义兼顾的ZSL模型,取得了较好的效果,时至今日准确率仍然可以排在前面。

背景

Skip-gram

Skip-gram是Word2Vec模型中的一种,给定一个input word来预测上下文,训练之后的模型的目的并不是用这个模型来预测,而是为了得到这模型隐层中学得的权重参数。
首先,我们构建一个完整的神经网络,包含输入层隐层输出层
例如,对于一个句子“I want to eat an apple.” 选取一个词作为输入,这里选择"eat",再定义一个参数skip-window,它代表着我们从当前input word的一侧(左边或右边)选取词的数量。如果我们设置 s k i p _ w i n d o w = 2 skip\_window=2 skip_window=2,就代表选取输入词左边2个和右边2个单词进入窗口[“want”,“to”,“an”,“apple”];另外一个参数num-skips,代表我们从窗口中选取多少个不同的词,作为我们的output,当 s k i p _ w i n d o w = 1 , s k i p _ n u m = 2 skip\_window=1,skip\_num=2 skip_window=1skip_num=2时,我们将会得到两组 (input word, output word) 形式的训练数据,即 (“eat”, “to”),(“eat”, “I”).
神经网络基于这些训练数据将会输出一个概率分布,这个概率代表着我们词典中的每个词是output word的可能性。例如,上面我们得到两组数据。我们先用一组数据('来训练神经网络,那么模型通过前面学习这个训练样本,会告诉我们词汇表中其他单词的概率大小和“eat”的概率大小。
具体地,因为神经网络的的输入必须为数值,所以我们会首先将词汇表中的单词进行one-hot编码,隐层不使用任何激活函数,但是输出层用softmax.

算法

算法思路

分别预训练一个视觉网络和一个词向量skip-gram网络,再结合两个网络进行训练。

原理

预训练一个视觉模型如下图:
在这里插入图片描述

和一个skip-gram模型,如下:
在这里插入图片描述

将两个模型整合:
在这里插入图片描述
具体:

  1. 语义模型
    通过Skip-gram对模型进行训练,Skip-gram为通过单词来预测单词的上下文,训练模型最后得到一个权重矩阵,该矩阵即为需要的Embedding矩阵。
  2. 视觉模型
    采用了1,000-class ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2012 这篇文章提出的模型,并将结果作为benchmark。
  3. Deep Visual Semantic Embedding Model
    即本文提出的模型。输出层去掉了之前的softmax,换成了一个将4096维向量(图像)映射到500或1000维(词向量)的线性映射transformation。
  4. 损失函数:使用点积相似性(dot-product similarity)和铰链损失函数(hinge rank loss)结合来作为该模型的损失函数,这可以使得在图像模型的输出和该图像对应的正确的标签的向量表示之间的点积相似性,要比不正确的其他标签的向量与该图像的相似性高。
    定义:对于输入的image, core visual model的输出为 v ˉ ( \bar{v}( vˉ(image ) ) ) ,transformation模块的线性映射参数为 M M M,标签label,经过skip-gram模型的输出为 t ˉ label \bar{t}_{\text {label}} tˉlabel 其中 image对应label,相似性度量为点积度量,同时结合了hinge rank loss,而未采用 l 2 l_{2} l2 loss论文的 解释为分类问题(最近邻问题)本质为排名问题,即正确的标签排名应高于错误的标签,而 l 2 l_{2} l2 loss仅 仅是考虑了让预测向量与正确的向量尽可能接近,却忽略了预测向量与其它错误向量的距离,实验 结果也证明 l 2 l_{2} l2 loss效果不如hinge rank loss, 因此loss为:
    l ( image,label ) = ∑ j ≠ l a b e l max ⁡ [ 0 , margin ⁡ − ( t ˉ label M v ˉ ( image ) − t ˉ j M v ˉ ( image ) ) ] l(\text {image,label})=\sum_{j \neq l a b e l} \max \left[0, \operatorname{margin}-\left(\bar{t}_{\text {label}} M \bar{v}(\text {image})-\bar{t}_{j} M \bar{v}(\text {image})\right)\right] l(image,label)=j=labelmax[0,margin(tˉlabelMvˉ(image)tˉjMvˉ(image))]
    其中margin为超参数,实验中设置为0.1

你可能感兴趣的:(Zero-Shot,Learning,计算机视觉,零样本学习,少样本学习,神经网络)