本发明提出一种面向通用多模态学习的神经框架搜索方法mmnasnet。
背景技术:
视觉问答(visualquestionanswering)是一项多模态领域的新兴任务,该任务旨在根据提供的图像,对某个给定的关于图像的问题进行回答。具体来讲是输入一副图像和一个问题,通过模型后回答出这个问题所对应的答案。例如,图像内容为一条街道,街道上有各种颜色的房子,停了不同类型的车,还有很多数,行走的行人。当给出一个具体问题时,例如“走在斑马线上的穿黑衣服的行人左边的汽车是什么颜色的?”,模型需要识别到图中的物体还有物体的不同属性然后进行推理得到答案。视觉定位(visualgrounding)任务旨在根据提供的物体描述,找出图像中相应的物体。例如,图像内容为两个人,左边的人穿着黑夹克,右边的人戴着红色帽子。当给出一个物体描述时,例如“穿黑夹克右边的人的帽子”,模型需要定位到右边的人的那一顶红色帽子上。图文匹配(image-textmatching)有两个子任务,分别是图像-文本匹配和文本-图像匹配,其目标是给定一段文本和一定数量的图片或者给定一副图片和一定数量的文本,需要对图片和文本的相关度进行打分并根据分数进行排序,找出前n副最相关的图像。
为了得到上述三个任务更准确的预测,机器需要理解给定图像和文本,并在此基础上对两者的信息进行合适的跨模态融合以最大程度地消除语义鸿沟。对比纯文本检索或者阅读理解任务,多模态任务需要从和文本相比不同模态的和不同形式的图像中获得关键信息来得到答案,那么如何更高效更轻量化的融合多模态信息就是解决问题的关键。
神经框架搜索(neuralarchitecturesearch,nas)是自动机器学习(automachinelearning,automl)的一个重要的分支。模型的结构设计一直是深度学习性能的关键因素,手工设计模型结构需要大量经验和人工试错并且模型的性能和效率都得不到保障。神经框架搜索旨在针对不同任务自动搜索出性能效率较为平衡的网络结构,在学术界工业界都是备受关注的课题,而神经框架搜索方法优异的特性也是解决上述三个任务的保证。和普通的单模态神经框架搜索任务相比,多模态神经框架搜索任务是至今无人涉及的领域,如何保证搜索到的结构是图像-文本两个模态间的最优子结构是解决多模态的框架搜索任务关键所在。
深度学习自2006年产生之后就受到科研机构、工业界的高度关注,发展至今已收获诸多优秀的网络模型和各种有效的训练方法。单一模态的丰富研究支撑起跨模态的研究,使得跨模态任务逐渐成为一个主流研究方向。同时跨模态更符合真实的生活场景,具有丰富的研究意义和实际价值。图像作为近几年来一直发展的研究媒体,瓶颈渐现,而结合了自然语言形成的图像-文本的跨模态研究方向成为学术界工业界的热门研究点,但近年来跨模态领域的模型参数量冗余、计算效率低下、手工设计费时费力,这使得多模态的神经框架搜索任务成为值得深入探索的研究领域。
在实际应用方面,多模态神经框架搜索算法具有广泛的应用场景。现有工业界多模态任务各式各样,如多模态检索、推荐,文章自动配图等,但不同的任务几乎都有一套不同的架构,一方面导致了手工设计的成本过高,另一方面也导致算法迁移的难度较大,所以自动的构建网络架构具有十分良好的研究前景及重要的研究意义。
综上所述,多模态神经框架搜索是一个值得深入研究的课题,本专利拟从该任务中几个关键点切入展开探讨,解决目前方法存在的难点和重点,形成一套完整的多模态神经框架搜索系统。
针对框架来说,现有多模态框架类型很多,如基于双线性池化的,还有基于编码器解码器结构的,且不同的框架所使用的子操作也是各不相同。针对任务来说,自然语言的描述一般来自不同的标注者,具有较高的自由度,不具备统一固定的句子结构。同时,自然场景下的图像载体主题多样,内容复杂富于变化,物体框与框间可能具有较高的相似性和冗余度,而这使得所需要的架构需要,也使得架构搜索方法面临巨大的挑战。具体而言,主要存在如下两方面的难点:
(1)如何统一现有的基本结构,设计出冗余网络,保证设计的冗余网络可以覆盖现有较好的结构:前人手工设计的网络具有诸多可取之处,在设计基本结构的时候需要尽可能的覆盖前人手工设计的结构,在之基础上进行搜索改进,一来可以保证公平的对比,二来可以保证搜索出的结构稳定可靠。
(2)如何从冗余网络中搜索到最优子网络,保证性能的同时高效:设计出了基本结构后就需要构造出能覆盖基本结构衍生出各种可能的冗余网络。而最终的结构需要从冗余网络中进行搜索得到,而搜索算法则是关键所在,更优的子结构能保证算法的效率和性能。
技术实现要素:
本发明提供了一种面向通用多模态学习的神经框架搜索方法。本发明主要包含两点:一个覆盖更多可能性的稳定的高效冗余网络以及一个从冗余网络中搜索到子网络且保证子网络性能和效率的搜索算法。
本发明解决其技术问题所采用的的技术方案包括如下步骤:
步骤(1)、数据预处理,对图像和文本数据提取特征
首先对图像v进行预处理和特征提取:
对图像v进行亮度归一化并进行比例缩放得到预处理后图像v′,将v′输入到训练好的faster-rcnn网络中提取出图像中n个物体的框
其次提取文本数据的特征:
对于给定的单词数量为m的句子
步骤(2)、初始化编码器-解码器结构冗余网络和对应的架构参数:
定义子操作多头关系注意力模块mhra(x,y,z,r)。
定义子操作自注意力机制sa(x)=mhra(x,x,x,0)。
定义子操作协同注意力机制ga(x,y)=mhra(x,y,y,0)。
定义子操作关系自注意力机制rsa(x,r)=mhra(x,x,x,r)。
定义子操作前馈网络ffn(x)。
定义编码器层数e,解码器层数为d,初始化每一层的冗余结构:其结构如图1所示,其中每层编码器的冗余结构aenc,每层解码器的冗余结构adec。从而得到编码器aenc和解码器adec。
最后初始化每个子操作所对应的架构参数anet。
步骤(3)、从架构参数分布中采样子结构,并计算结果。
首先通过多项式分布对架构参数anet进行采样得到子结构编码器a′enc和子结构解码器a′dec。将文本特征fs通过子结构编码器a′enc得到f′s,将图像特征fv和变换后到文本特征f′s输入到子结构解码器a′dec后得到f′v。
如图2所示,其中视觉问答和图文匹配任务将f′s和f′v分别经过注意力消融模块areduce得到f″s和f″v,然后加和后得到分类向量c。训练阶段视觉问答任务通过交叉熵损失(cross-entropyloss)函数进行梯度求导反传,图文匹配任务通过匹配损失(matchloss)函数进行梯度反传。
视觉定位任务将f′s经过注意力消融模块areduce得到f″s,f′v不变,然后将f″s和f′v加和后得到分类矩阵
视觉定位任务拆解为两个子任务,子任务一是找出对应的物体,子任务二是回归物体的框坐标让框更准。训练阶段第一个子任务对应的是排序损失(rankloss),对所有物体排序;第二个子任务用的是回归损失(regressionloss),将所对应物体的框进行回归。在测试阶段,通过排序(rank)选到分数最高的物体框后再经过回归(regression)得到最后的框。
步骤(4)、模型搜索
模型搜索分为两个阶段:1.热启动阶段2.交替训练搜索阶段。
热启动阶段:首先随机初始化模型参数wnet和架构参数anet后,开始根据架构参数anet随机在冗余编码器aenc和冗余解码器adec采样子结构并进行梯度反传,这时只更新模型参数wnet,这样保证了多模态框架搜索的稳定性。
交替训练阶段:先更新k步模型参数wnet然后再更新1步架构参数anet,不断优化,直至整个网络模型收敛。
步骤(5)、模型训练
架构参数anet收敛了后根据分布选择最大概率子网络作为最终搜索到的网络。重新随机初始化子网络模型参数w′net,然后在三个任务的完整数据集上重新训练子网络模型参数w′net,不断优化,直至整个网络模型收敛。
步骤(1)具体实现如下:
1-1.对图像v进行亮度归一化并且比例缩放到最小边pmin像素,最长边裁剪到pmax像素,得到预处理后图像v′,将v′输入到训练好的faster-rcnn网络中提取出图像中n个物体的框
1-2.对于给定的单词数量为m的句子
步骤(2)构建冗余网络,具体实现如下:
2-1.定义子操作多头关系注意力模块mhra(x,y,z,r)。输入
其中
其中
2-2.定义子操作自注意力机制sa(x)=mhra(x,x,x,0)。
定义子操作协同注意力机制ga(x,y)=mhra(x,y,y,0)。
定义子操作关系自注意力机制rsa(x,r)=mhra(x,x,x,r)。
定义子操作前馈网络
2-3.定义编码器层数e,解码器层数为d,初始化每一层的冗余结构如图1所示,其中每层编码器的冗余结构:
aenc(x)={sa(x),ffn(x)}
每层解码器的冗余结构:
adec(x,y)={sa(x),rsa(x),ga(x,y),ffn(x)}。
从而得到编码器aenc(x):
和解码器adec(x,y):
初始化每个子操作所对应的架构参数:
其中,
步骤(3)从架构参数分布中采样子结构,并计算结果:
3-1.通过多项式分布(multinomialdistribution)对架构参数anet在每一层上进行采样,每一层选取一个子操作组成子结构编码器a′enc和子结构解码器a′dec。
3-2.将文本特征fs通过子结构编码器a′enc得到
f′s=a′enc(fs)
f′v=a′dec(fv,f′s)
3-3.视觉问答任务:
将f′s和f′v分别经过注意力消融模块areduce得到
f″s=areduce(f′s),f″v=areduce(f′v)
其中,
然后将f″s和f″v加和后经过线性变换和层归一化(layernormalization)模块aln得到分类向量
其中
训练阶段视觉问答任务通过交叉熵损失(cross-entropyloss)函数进行梯度求导反传。
3-4.图文匹配任务:
将f′s和f′v分别经过注意力消融模块areduce得到
其中
训练阶段图文匹配任务通过匹配损失(matchloss)函数lmatch函数进行梯度反传,匹配损失为:
lmatch(v,v′,s,s′)
=2log(wnet(v,s)) log(1-wnet(v,s′))
log(1-wnet(v′,s))
其中v,s分别为匹配的图像和文本,v′,s′分别是不匹配的图像和文本。wnet指代模型参数。
3-5.视觉定位任务:
视觉定位任务将f′s经过注意力消融模块areduce得到f″s,f′v不变,然后将和f″sf′v加和后得到隐含层矩阵
视觉定位任务拆解为两个子任务,一是找出对应的物体,二是回归物体的框坐标让框更准。通过线性变换得到排序分布crank∈rn
通过线性变换得到框的回归参数creg∈rn×4
训练阶段第一个子任务对应的是排序损失(rankloss),其具体使用的是kl散度损失(kl-divergenceloss),对所有物体排序;第二个子任务用的是回归损失(regressionloss)使用平滑l1损失(smoothl1loss),将所对应物体的框进行回归。在测试阶段,通过排序(rank)选到分数最高的物体框后再经过回归(regression)得到最后的框。
步骤(4)模型搜索分为两个阶段:1.热启动阶段2.交替训练搜索阶段,具体如下:
4-1.热启动阶段:
首先随机初始化模型参数wnet和架构参数anet后,开始根据架构参数anet随机在冗余编码器aenc和冗余解码器adec采样子结构并进行梯度反传,每次采样出的子网络对应的模型参数w′net,这时只更新模型参数w′net,这样保证了多模态框架搜索的稳定性。
4-2.交替训练搜索阶段:
4-2-1.连续更新k步,得到随机采样出的子网络模型参数w′net。4-2-2.再更新1步,只更新架构参数anet。
4-2-3.不断重复步骤4-2-1和4-2-2,进行优化,直至整个网络模型收敛。
步骤(5)、模型训练,具体如下:
架构参数anet收敛了后,根据分布选择最大概率子网络asubnet作为最终搜索到的网络。
重新随机初始化子网络模型asubnet,然后在三个任务(视觉问答任务、图文匹配任务和视觉定位任务)的完整数据集上重新训练子网络模型asubnet,不断优化,直至整个网络模型收敛。
本发明有益效果如下:
本发明提出一种面向通用多模态学习的神经框架搜索方法mmnasnet,首次在多模态领域中用自动搜索到的框架取代手工设计的框架。搜索使得模型架构联系更加紧密,冗余参数大幅降低,并且能有效的提升视觉问答、视觉定位和图文匹配的准确率,同时也验证了本发明的通用性,可在其他多模态任务中使用。
本发明参数量小,效果显著,有利于更高效的分布式训练,有利于部署于内存受限的特定硬件。
核心方法为提出针对编码器解码器结构利用冗余网络搜索出子图的方法,用来解决多模态表征的有效融合和参数量的缩减,并在视觉问答,视觉定位,图文检索这三个跨模态深度学习任务中验证该模型的优越性。本方法首次提出在多模态领域用神经框架搜索方法对各个模态的特征进行建模,不仅得到了针对不同任务的性能更优的架构和更低的参数量,同时能更直观的分析出不同任务需要什么模块进行建模,加强了黑盒模型的可解释性。在mmnasnet模型表现优异的前提下,本发明进一步地提出了搜索更多子操作可以提升性能的结论并加入基于物体问位置的自注意力模块来验证结论,该模块将不同物体之间的两两位置关系进行建模指导注意力映射表的构建。实验中将自注意力机制、关系的自注意力机制、协同自注意力机制、前馈网络机制作为子操作,完成了基于这些操作对三种多模态学习任务的架构搜索,进而得到了更好的实验结果并降低了参数量,这证明了该方法的高效性和通用性,可在更多其他多模态任务中充分发挥价值。
附图说明
图1:搜索空间和子操作。
图2:三种多模态任务的分类层。
图3:三种多模态任务通过mmnasnet配合不同的任务头,分别搜索出最优的架构。
具体实施方式
下面对本发明的详细参数做进一步具体说明。
如图1和2所示,本发明提供本发明提出一种面向通用多模态学习的神经框架搜索方法mmnasnet。本发明首先对图像和文本数据进行数据预处理,提取特征。然后初始化编码器-解码器结构冗余网络和对应的架构参数。其次从架构参数分布中采样出子结构,并计算结果。再然后模型搜索,热启动和交替更新保证搜索结构的稳定性。最后进行模型训练,将搜索出的最优子网络重新训练,得到最优网络模型。本发明提出一种针对图像文本多模态建模的神经框架搜索的方法,特别是针对不同的任务搜索到了更优的子网络,降低了网络的参数量计算量,充分利用各模态的深层次特征,提高了扩模态特征的表达能力,并且在三个多模态任务中获得了领先的效果。
本发明具体实现步骤如下:
步骤(1)所述的数据预处理及对图像和文本进行特征抽取,具体如下:
1-1.对图像v进行亮度归一化并且按比例缩放到最小边600像素,最长边裁剪到1000像素,得到预处理后图像v′,将v′输入到训练好的faster-rcnn网络中提取出图像中n个物体的框
1-2.对于给定的单词数量为m的句子
步骤(2)构建冗余网络,具体如下:
2-1.定义子操作多头关系注意力模块mhra(x,y,z,r)。输入x,y,z∈r{14,100}×512,r∈r{100×100}×64。
2-2.定义子操作自注意力机制sa(x)=mhra(x,x,x,0)。
定义子操作协同注意力机制ga(x,y)=mhra(x,y,y,0)。
定义子操作关系自注意力机制rsa(x,r)=mhra(x,x,x,r)。
定义子操作前馈网络ffx(x)=wf1dropout(max(wf0x,0)),其中wf0∈r512×2048,wf1∈r2048×512。
2-3.定义编码器层数12,解码器层数为18,初始化每一层的冗余结构。
步骤(3)采样子结构,并计算结果:
3-1.通过多项式分布(multinomialdistribution)对架构参数anet在每一层上进行采样,每一层选取一个子操作组成子结构编码器a′enc和子结构解码器a′dec。子结构编码器共12个子操作,子结构解码器共18个子操作。
3-2.将文本特征fs通过子结构编码器a′enc得到f′s∈r14×512,将图像特征fv和变换后到文本特征f′s输入到子结构解码器a′dec后得到f′v∈r100×512。。
3-3.视觉问答任务:将f′s和f′v,分别经过注意力消融模块areduce得到f″s∈r512,f″v∈r512,然后将f″s和f″v加和后经过线性变换和层归一化(layernormalization)得到分类向量c∈r3129。3129为答案的类别数量,通过筛选出出现频率高于8个的答案。训练阶段视觉问答任务通过交叉熵损失(cross-entropyloss)函数进行梯度求导反传。
3-4.图文匹配任务:将f′s和f′v,分别经过注意力消融模块areduce得到f″s∈r512,f″v∈r512,然后将f″s和f″v加和后经过线性变换和层归一化(layernormalization)aln得到分数score∈r,训练阶段图文匹配任务通过匹配损失(matchloss)函数进行梯度反传。
3-5.视觉定位任务将f′s经过注意力消融模块areduce得到f″s、f′v不变,加和后得到隐含层矩阵cvgd∈r100×1024。视觉定位任务拆解为两个子任务,一是找出对应的物体,二是回归物体的框坐标让框更准。通过线性变换得到rank分布crank∈r100,通过线性变换得到框的回归参数creg∈r100×4。训练阶段第一个子任务对应的是排序损失(rankloss)使用kl散度损失(kl-divergenceloss),对所有物体排序;第二个子任务用的是回归损失(regressionloss)使用平滑l1损失(smoothl1loss),将所对应物体的框进行回归。在测试阶段,通过排序(rank)选到分数最高的物体框后再经过回归(regression)得到最后的框。
步骤(4)模型搜索分为两个阶段:1.热启动阶段2.交替训练搜索阶段,具体如下:
4-1.热启动阶段首先随机初始化模型参数wnet和架构参数anet后,开始根据架构参数anet随机在冗余编码器aenc和冗余解码器adec采样子结构并进行梯度反传,每次采样出的子网络对应的模型参数w′net,这时只更新模型参数w′net,这样保证了多模态框架搜索的稳定性。
4-2.交替训练搜索阶段:
4-2-1.连续更新k步,得到随机采样出的子网络模型参数w′net。
4-2-2.再更新1步,只更新架构参数anet。
4-2-3.不断重复步骤4-2-1和4-2-2,进行优化,直至整个网络模型收敛。
步骤(5)、模型训练,具体如下:
架构参数anet收敛了后,可以根据分布选择最大概率子网络asubnet作为最终搜索到的网络。即每一层选择架构参数最大的子操作作为当前层的操作,asubnet共12层编码器和18层解码器。
重新随机初始化子网络模型asubnet,然后在三个任务的完整数据集上重新训练子网络模型asubnet,不断优化,直至整个网络模型收敛。
1.一种面向通用多模态学习的神经框架搜索方法,其特征在于包含两点:一个覆盖更多可能性的稳定的高效冗余网络以及一个从冗余网络中搜索到子网络且保证子网络性能和效率的搜索方法;具体包括如下步骤:
步骤(1)、数据预处理,对图像和文本数据提取特征
步骤(2)、初始化编码器-解码器结构冗余网络和对应的架构参数;
步骤(3)、从架构参数分布中采样子结构,并计算结果;
步骤(4)、模型搜索,分为两个阶段:1.热启动阶段2.交替训练搜索阶段;
步骤(5)、模型训练,不断优化,直至整个网络模型收敛。
2.根据权利要求1所述的一种面向通用多模态学习的神经框架搜索方法,其特征在于步骤(1)具体实现如下:
1-1.对图像v进行预处理和特征提取:
对图像v进行亮度归一化并且比例缩放到最小边pmin像素,最长边裁剪到pmax像素,得到预处理后图像v′,将v′输入到训练好的faster-rcnn网络中提取出图像中n个物体的框
1-2.提取文本数据的特征:
对于给定的单词数量为m的句子
3.根据权利要求2所述的一种面向通用多模态学习的神经框架搜索方法,其特征在于步骤(2)具体实现如下:
2-1.定义子操作多头关系注意力模块mhra(x,y,z,r);输入x,y,
其中
其中
2-2.定义子操作自注意力机制sa(x)=mhra(x,x,x,0);
定义子操作协同注意力机制ga(x,y)=mhra(x,y,y,0);
定义子操作关系自注意力机制rsa(x,r)=mhra(x,x,x,r);
定义子操作前馈网络ffn(x)=wf1dropout(max(wf0x,0)),其中
2-3.定义编码器层数e,解码器层数为d,初始化每一层的冗余结构,其中每层编码器的冗余结构:
aenc(x)={sa(x),ffn(x)}
每层解码器的冗余结构:
adec(x,y)={sa(x),rsa(x),ga(x,y),ffn(x)};
从而得到编码器aenc(x):
和解码器adec(x,y):
初始化每个子操作所对应的架构参数:
其中,
4.根据权利要求3所述的一种面向通用多模态学习的神经框架搜索方法,其特征在于步骤(3)具体实现如下:
3-1.通过多项式分布对架构参数anet在每一层上进行采样,每一层选取一个子操作组成子结构编码器a′enc和子结构解码器a′dec;
3-2.将文本特征fs通过子结构编码器a′enc得到
f′s=a′enc(fs)
f′v=a′dec(fv,f′s)
3-3.视觉问答任务:
将f′s和f′v分别经过注意力消融模块areduce得到
f″s=areduce(f′s),f″v=areduce(f′v)
其中,
然后将f″s和f″v加和后经过线性变换和层归一化模块aln得到分类向量
其中
训练阶段视觉问答任务通过交叉熵损失函数进行梯度求导反传;
3-4.图文匹配任务:
将f′s和f′v分别经过注意力消融模块areduce得到
其中
训练阶段图文匹配任务通过匹配损失函数lmatch函数进行梯度反传,匹配损失为:
lmatch(v,v′,s,s′)
=2log(wnet(v,s)) log(1-wnet(v,s′)) log(1-wnet(v′,s))
其中v,s分别为匹配的图像和文本,v′,s′分别是不匹配的图像和文本;wnet指代模型参数;
3-5.视觉定位任务:
视觉定位任务将f′s经过注意力消融模块areduce得到f″s,f′v不变,然后将和f″sf′v加和后得到隐含层矩阵
视觉定位任务拆解为两个子任务,一是找出对应的物体,二是回归物体的框坐标让框更准;通过线性变换得到排序分布crank∈rn
通过线性变换得到框的回归参数creg∈rn×4
训练阶段第一个子任务对应的是排序损失,其具体使用的是kl散度损失,对所有物体排序;第二个子任务用的是回归损失使用平滑l1损失,将所对应物体的框进行回归;在测试阶段,通过排序选到分数最高的物体框后再经过回归得到最后的框。
5.根据权利要求2所述的一种面向通用多模态学习的神经框架搜索方法,其特征在于步骤(4)具体实现如下:
4-1.热启动阶段:
首先随机初始化模型参数wnet和架构参数anet后,开始根据架构参数anet随机在冗余编码器aenc和冗余解码器adec采样子结构并进行梯度反传,每次采样出的子网络对应的模型参数w′net,这时只更新模型参数w′net,这样保证了多模态框架搜索的稳定性;
4-2.交替训练搜索阶段:
4-2-1.连续更新k步,得到随机采样出的子网络模型参数w′net;
4-2-2.再更新1步,只更新架构参数anet;
4-2-3.不断重复步骤4-2-1和4-2-2,进行优化,直至整个网络模型收敛。
6.根据权利要求5所述的一种面向通用多模态学习的神经框架搜索方法,其特征在于步骤(5)具体实现如下:
架构参数anet收敛了后,根据分布选择最大概率子网络asubnet作为最终搜索到的网络;
重新随机初始化子网络模型asubnet,然后在视觉问答任务、图文匹配任务和视觉定位任务这三个任务的完整数据集上重新训练子网络模型asubnet,不断优化,直至整个网络模型收敛。
技术总结