【文献阅读】FPAIT——小样本学习与VQA(X. Dong等人,ACM MM,2018,有代码)

一、背景

文章题目:《Fast Parameter Adaptation for Few-shot Image Captioning and Visual Qestion Answering

之前看小样本学习的时候看到的一篇few-shot+VQA,不过一直没仔细看,现在回过头来看一下这篇文章。

文章下载地址:忘了这篇文章是从哪下载的了。。。

文章引用格式:Xuanyi Dong, Linchao Zhu, De Zhang, Yi Yang, Fei Wu. 2018. Fast Parameter Adaptation for Few-shot Image Captioning and Visual Question Answering. In 2018 ACM Multimedia Conference (MM’18), October 22-26, 2018, Seoul, Republic of Korea. ACM, New York, NY, USA, 9 pages. https://doi.org/10.1145/3240508.3240527

项目地址:https://github.com/D-X-Y/FPAIT

二、文章摘要

Given only a few image-text pairs, humans can learn to detect semantic concepts and describe the content. For machine learning algorithms, they usually require a lot of data to train a deep neural network to solve the problem. However, it is challenging for the existing systems to generalize well to the few-shot multi-modal scenario, because the learner should understand not only images and texts but also their relationships from only a few examples. In this paper, we tackle two multi-modal problems, i.e., image captioning and visual question answering (VQA), in the few-shot setting.

We propose Fast Parameter Adaptation for Image-Text Modeling (FPAIT) that learns to learn jointly understanding image and text data by a few examples. In practice, FPAIT has two benefts. (1) Fast learning ability. FPAIT learns proper initial parameters for the joint image-text learner from a large number of different tasks. When a new task comes, FPAIT can use a small number of gradient steps to achieve a good performance. (2) Robust to few examples. In few-shot tasks, the small training data will introduce large biases in Convolutional Neural Networks (CNN) and damage the learner’s performance. FPAIT leverages dynamic linear transformations to alleviate the side effects of the small training set. In this way, FPAIT flexibly normalizes the features and thus reduces the biases during training. Quantitatively, FPAIT achieves superior performance on both few-shot image captioning and VQA benchmarks.

人类可以通过图像和文本这两种模态发掘语义概念和描述场景。对于机器算法来说,往往需要大量的数据来训练神经网络以解决这些问题。然而,小样本学习和多模态的结合还有很多挑战,因为它不仅需要学习文本和图像,还要学习从仅有的几个样本之间学习他们的关系。这篇文章将结合小样本学习处理两个多模态问题,看图说话和VQA。

作者提出了FPAIT模型,学习如何通过小样本来联合学习理解图像和文本数据。FPAIT有两个优点:(1)快速学习能力。当面临一个新任务的时候,FPAIT能够使用很少的梯度迭代步骤来实现较好的性能。(2)小样本的鲁棒性。在小样本学习过程中,训练数据过少会引起巨大的偏见,并破坏学习器的性能。FPAIT使用动态线性变换来减少小样本训练集的边界效应。通过这种方式,FPAIT对特征归一化,因此能够减少训练过程中的偏见。

三、文章介绍

目前,多模态结合few-shot的应用还很少。多模态的不仅非常具有挑战且具有非常好的应用前景。下面是一个看图说话和VQA的例子:

目前针对这两个task,几乎 都是使用的监督方法,因此严重依赖于大量标记的样本。在小样本中,很多单词都不常见或者没见过,这种监督的方法就失效了。一些研究的处理方式就是使用外部知识来训练。而小样本学习与这类方法相比,训练集中是不能出现任何新的目标和单词的,因此更难。

本文因此提出FPAIT来学习如何让模型去学习。传统模型是学习来如何适应(fit)训练数据,而FPAIT则是教会学习器如何去泛化一个新的任务。如下图所示:

除了快速自适应能力,FPAIT还使用了最新的模型来学习文本和图像的表示。现有算法常常使用CNN来编码图像,这需要大量的训练数据来训练模型。然而,对于作者的模型,只使用5个训练数据。不过,这么少的样本会带来巨大的模型偏见,为了解决这类问题,FPAIT引入了图像的动态线性变换。将这个变换结合到CNN中,以减轻偏见。此外,这种变换的参数是通过编码的文本特征生成。

总的来说,这篇文章的主要贡献为以下几点:

(1) We propose FPAIT to tackle few-shot image captioning and VQA. FPAIT can train the joint image-text learner, which can quickly adapt itself to a new task given few training examples. 提出了FPAIT,用于看图说话和VQA 。

(2) We propose to use an advanced neural network to learn image and text representation in the few-shot scenario jointly. This network generates dynamical parameters from the text data and uses these parameters effectively influence the image encoding. 结合CNN和few-shot 。

(3) The proposed FPAIT achieves superior performance on both few-shot image captioning and VQA benchmarks. FPAIT表现较好。

1. 相关工作

这里对于看图说话的就不介绍了。

VQA:一般就是两个模块分别提取文本特征和图像特征,然后再合并两个特征用于预测答案。关键是合并方法,早期用的连接(一种联合嵌入方法)。这种监督方法缺点是需要大量的训练数据,是不适合小样本学习的。而针对有限样本的VQA,设计思路一般是使用外部知识。联合few shot的目前只有一篇,这篇文章将模型用于一个很小的VQA-Number数据集,该数据集的答案只有7类:

few-shot:作者的方法与Finn et al.的方法一致,即限制元学习器(meta-learner)使用梯度下降来更新基学习器(base-learner)。不同的是Finn的方法仅仅是处理图像的,但是作者提出的方法能够处理图像和文本。另外,根据文本特征来调整动态参数,以归一化图像特征。

  • Chelsea Finn, Pieter Abbeel, and Sergey Levine. 2017. Model-Agnostic MetaLearning for Fast Adaptation of Deep Networks. In ICML.

2. 方法

FPAIT的动机来源于近期的元学习和条件归一化。元学习大多关注于few-shot图像分类,FPAIT将其从图像扩展为图像文本联合模型。另外,FPAIT采用条件归一化来减少模型偏见。

基础:图像记为Q,文本记为I,答案有C类,函数f用于将(Q,I)映射到答案上,将p记为答案向量的得分,VQA的过程可以表达为p=f(Q, I)。

快速参数适应:如果few-shot是K-shot N-way的话,那么一共就需要K×N个样本。整个元学习的过程可以用如下的伪代码表示:

训练过程采用随机梯度下降来更新梯度,优化器采用Adam。

FPAIT结构:图像编码采用非常简单的CNN结构,该结构包含4个卷积块,模型的结构如下图所示:

卷积块中,3 × 3的卷积层,后跟BN层,最后再跟一个ReLU层。最终的图像编码模块输出的是256维的图像特征向量。文本编码模块这篇文章采用了不同的方法,包括LSTM,GRU等,最终输出的是512维的文本特征向量。FPAIT模块用于用融合两个不同的特征,传统的方法就是concatenate,如上图(a)中所示,这种方法适合于有大量训练数据的情况,对于小样本而言,作者使用了具有动态参数的变换函数,本文作者采用的是变换是Channel-wise Linear Transformation (CLT),计算方法如下图所示:

最终的答案预测则是采用了3个全连接层,如上图(c)所示,前两个全连接层的输出维度是512,最后一个是输出答案的概率。

loss函数:分类问题,自然考虑用交叉熵

FPAIT中的CNN:这里采用了一个非常简单的CNN,没有用复杂的CNN,比如resnet-101,这是因为复杂的CNN容易过拟合。

3. 实验

对于VQA来说,采用了Toronto COCO-QA数据集。

数据集:为了获得小样本数据集,作者用了以下5步:(1)合并训练集和测试集;(2)从(1)的数据集中挑选出关于目标的image-question pairs,组成新的数据集;(3)从(2)中选择出答案超过4次的样本,组成新的数据集;(4)从(3)中选择出所有出现次数超过4次的问题;(5)得到的数据集即为最终的小样本数据集。最终,训练集有57,834个问题和256种答案。测试集有13,965个问题和65种答案。

参数设置:N -way K-shot中的N设置为{5, 10, 20},K设置为{1, 5},优化器用Adam,epoch设置为50,学习率为0.001,batch size设置为32。

参与比较的模型:不同之处主要在于文本特征的提取,提取文本的不同模型包括:

(1) The basic one-layer RNN with hidden state dimension of 512 and dropout ratio of 0.5, denoted as RNN.

(2) The one-layer LSTM [14] with hidden state dimension of 512 and dropout ratio of 0.5, denoted as LSTM.

(3) The one-layer GRU [4] with hidden state dimension of 512 and dropout ratio of 0.5, denoted as GRU.

(4) The one-block TCN [3] with hidden state dimension of 512 and dropout ratio of 0.5, denoted as TCN.

(5) The TCN architecture integrated with the CLT module in FPAIT, denoted as TCN+CLT.

不同模型在VQA上的表现结果如下图所示:

最后具体的定量分析的结果如下图所示:

四、小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: VQA(Visual Question Answering,视觉问答)是一种结合图像和问题的任务,旨在根据给定的图像和问题,找到相应的回答。在VQA任务中,文本特征提取是一个关键步骤,它有助于理解问题和图像之间的语义关系。 VQA的文本特征提取代码通常分为两个部分:问题文本的处理和图像文本的处理。 对于问题文本的处理,代码通常会使用自然语言处理库(例如NLTK或spaCy)对文本进行预处理,包括分词、去除停用词、词干化等操作。接下来,通过嵌入层(Embedding)将每个词转换为固定长度的向量表示。常用的嵌入方法包括Word2Vec、GloVe和BERT等。这些嵌入方法可以通过预训练的词向量模型来获取词的语义信息。 对于图像文本的处理,代码会使用图像处理库(例如OpenCV或PIL)对图像进行预处理,包括缩放、裁剪、归一化等操作。然后,使用卷积神经网络(CNN)对图像进行特征提取。常用的CNN模型有VGG、ResNet和Inception等,在VQA任务中,这些模型通常是在大规模图像分类数据集上进行预训练的,例如ImageNet。最后,将提取的图像特征进行降维,以减少特征的维度和计算量。 在VQA任务中,问题文本和图像文本的特征通常会进行融合,以捕捉问题和图像之间的语义关系。常用的特征融合方法包括将问题和图像的特征连接、相加或相乘等。融合后的特征可以继续用于后续的模型训练和预测。 总之,VQA的文本特征提取代码涉及到问题文本的预处理和嵌入,图像文本的预处理和特征提取,以及特征融合等步骤。这些步骤有助于理解问题和图像之间的语义关系,进而实现对视觉问答任务的准确回答。 ### 回答2: VQA(Visual Question Answering)是一个结合了计算机视觉和自然语言处理的任务,旨在让机器能够根据给定的图像和问题,自动回答这个问题。其中,文本特征提取是 VQA任务中的重要一环。 在VQA任务的文本特征提取中,常用的方法是使用词嵌入(Word Embedding)技术将问题的文本转化为向量表示。词嵌入是将单词映射到低维度的连续向量空间中,使得单词的含义可以通过向量来表示。常见的词嵌入方法有word2vec和GloVe。 首先,需要从训练数据中构建词汇表,也就是将训练集中所有问题中的单词去重,并为每个单词分配一个唯一的index。然后,在构建词汇表的基础上,使用预训练好的词嵌入模型(如word2vec或GloVe)加载相应的词向量。词向量的维度一般为几十至几百维。 对于给定的问题文本,我们可以通过遍历其中的每个单词,将每个单词的词向量拼接起来,得到整个问题文本的向量表示。这个向量表示可以作为问题文本的特征输入到后续的模型中进行回答预测。 除了词嵌入技术,还可以使用一些特征工程的方法来提取问题文本的特征,如n-grams模型和tf-idf模型。n-grams模型将问题文本拆分为n个连续的单词序列,并统计它们在问题中的出现频率作为特征。tf-idf模型通过计算单词在问题中的词频和整个训练数据中的逆文档频率,得到每个单词的重要性权重,并将其作为特征输入。 总而言之,VQA任务中的文本特征提取代码可以包括构建词汇表、加载预训练的词嵌入模型,以及使用词嵌入、n-grams模型和tf-idf模型等方法将问题文本转化为向量表示的步骤。这些特征可以作为问题文本的输入,与图像特征一起输入到机器学习模型中,进行问题回答的预测。 ### 回答3: VQA(Visual Question Answering)是一个结合视觉和文本的人工智能任务,旨在回答关于图像的问题。提取文本特征是为了将问题和图像进行有效的匹配和理解。下面是一个简单的VQA文本特征提取代码的示例: ```python import torch import torch.nn as nn from transformers import BertModel, BertTokenizer # 加载预训练的BERT模型和tokenizer model_name = 'bert-base-uncased' model = BertModel.from_pretrained(model_name) tokenizer = BertTokenizer.from_pretrained(model_name) # 定义一个用于提取文本特征的模型 class TextFeatureExtractor(nn.Module): def __init__(self, model): super(TextFeatureExtractor, self).__init__() self.model = model def forward(self, input_text): # 使用tokenizer将输入的文本转换为token input_ids = tokenizer.encode(input_text, add_special_tokens=True) input_tensor = torch.tensor([input_ids]) # 使用BERT模型获取文本的隐藏状态 _, pooled_output = self.model(input_tensor) # 返回BERT模型的pooled_output作为文本特征 return pooled_output # 使用提取文本特征的模型 text_model = TextFeatureExtractor(model) # 例子:提取问题的文本特征 question = "What is the color of the dog?" question_features = text_model(question) # 打印问题的文本特征 print(question_features) ``` 在这个示例中,我们使用了Hugging Face提供的`transformers`库来加载预训练的BERT模型和tokenizer。然后,我们定义了一个名为`TextFeatureExtractor`的模型类,该类继承了`nn.Module`,并使用BERT模型对输入的文本进行特征提取。最后,我们对一个问题进行文本特征提取并打印出来。 这个示例中的代码只是一个基本的VQA文本特征提取的例子,实际应用中可能还需要对图像进行特征提取并结合图像和文本进行问题回答。同时,可以对提取到的文本特征进行进一步的处理和应用,如将其输入到一个分类器或回归器中进行答案预测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全部梭哈迟早暴富

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值