多模态之ViLBERT:双流网络,各自为王

2023-11-06 18:28
文章标签 网络 双流 模态 vilbert

本文主要是介绍多模态之ViLBERT:双流网络,各自为王,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通篇读完这个论文,需要解决如下问题:

  1. ViLBERT架构是什么样子的?
  2. ViLBERT预训练任务是什么?
  3. ViLBERT实现细节有哪些?

我之前写了两个多模态基础的文章,没看过的同学可以先看看这两个文章:

分别是 在解决多模态任务的时候需要重点解决的6个问题如何把BERT的两种预训练任务扩展到多模态数据中去

1. ViLBERT架构是什么样子的?

首先我们来聊第一个问题:ViLBERT架构是什么样子的?

直接看图:

img

这个图其实很不错,我简单来概述一下,如下:

首先ViLBERT包含两个并行的流,上面的那个是图片流,下面那个是文本流;

每个流是由一些TRM Blocks和 co-attentional TRM layers【Co-TRM】组成;

需要注意的是TRM Blocks 和Co-TRM 可以是多层的;

这里面最主要的部分其实就是这个Co-TRM;

在那个虚线框中,我们可以看到Co-TRM有两个部分,真正的Co-TRM和后连接的TRM;

首先我们要明确,从图片流前半部分【未交互之前】出来的是一个个图片regions的embeddings;

从文本流前半部分出来的是一个个文本tokens的embeddings;【需要注意的是文本这有一个L-K X的符号,其实代表的就是构建多层的TRM,在本文就是一个BERT-Base】;

知道各自流前半部分出来的是什么之后,就到了重头戏上的Co-TRM这个架构,直接来看论文中的图:

img

其实这个结构很简单,就是在做attention的时候,做一些改动;

在上面这个图片流,我的Q矩阵来自图片信息,但是我的K和V矩阵来自文本信息;

在下面这个文本流,我的Q矩阵来自文本信息,但是我的K和V矩阵来自图片信息;

简单说,就是做了一个在文本条件下的图片的attention和在图片条件下的文本的attention;

也就是在文本和图片之间做了一个信息的交互;

这里需要注意的是,在交互之后,各自走自己独立的TRM结构,而并没有拼接在一起走TRM结构;

我自己在之前的多模态落地讲解文章中有谈到,我的baseline架构和这个很类似,只不过,我是做了双方面的attentinon之后,直接拼接接了任务相关的结构;

2. ViLBERT预训练任务是什么?

然后我们再来看ViLBERT预训练任务是什么?

之前文章谈到,多模态的预训练任务从BERT演化而来,可以分为两类任务:重建任务和匹配任务;

那么在ViLBERT也是这两类;

重建任务就是文本重建和图片重建;

匹配任务是是否匹配;

需要注意的是重建任务构建的时候并么有保持另一个模态数据保持完整;匹配任务是H_cls和H_img相乘接了一个MLP做分类;

也是直接来看图:

img

这么看文本和图片的任务是合在一起训练了,其实从模型架构我们可以看到两个流在最后是各自分支输出的,这点需要注意;

3. ViLBERT实现细节有哪些?

实现细节这里其实可说的没有多,主要是ViLBERT本身的预训练和在四个下游任务进行迁移学习;

在预训练的时候,数据使用的是330万个图像-字幕对;

这个很有意思,相当于是一种无监督的语料,但是怎么处理文本和字母不相关的问题,因为并不是每时每刻都是相关的,想一下电视剧的情景;所以这种数据噪声估计很严重,需要清理;

论文使用的数据来自ACL2018论文搞出来的数据,比较干净一点;

由于担心训练时间,ViLBERT中的BERT这个流使用的是bert-base,后来发现bert-large可能会有更好的表现;

使用FasterRCNN,通过卡阈值的方式来提取图像中的置信度比较高的候选框【10-36个】,使用 mean-pooled convolutional feature 作为这个候选区域的特征向量;

其他的:8个TitanX GPUs / batch size of 512 /10 epochs / Adam optimizer / initial learning rates of 1e-4.

下游任务中的几个任务:Visual Question Answering (VQA);Grounding Referring Expressions;Caption-Based Image Retrieval;‘Zero-shot’ Caption-Based Image Retrieval;

做了两个对比实验:

  1. 第一个是使用了单流的bert-videobert;没怎么改变bert的架构;

这个其实对照到文本相似度这边,其实属于交互式模型,所以这种模型存在的一个问题是没有办法很好的缓存单个文本或者单个图片的embedding,这样在做一些检索任务的时候就非常的不方面;

为啥DSSM 架构这么有名,效果是一方面,速度更加的被大家看重;

  1. 第二个实验是相同的 ViLBERT架构,但是并没有在我们的图像-字幕数据集中进行预训练;

这个实验是为了 看一下 架构和预训练数据的作用,从而来证明,架构是有用的,预训练也是有用的;

这篇关于多模态之ViLBERT:双流网络,各自为王的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358290

相关文章

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使