1.本发明涉及自然语言处理技术领域,具体地,涉及一种基于对比学习和多头自注意力机制的多模态情感分析方法。
背景技术:
2.随着互联网的发展,我国网民数量日益增加,网民规模日益庞大。越来越多的人通过终端设备,在微博、论坛、社交软件等平台中针对一些热门话题发表自己的观点看法。以微博为例,人们可以通过文字和图片等形式发表自己的观点,而人们在这些社交媒体发表的内容往往带有强烈的主观意识,蕴含着丰富的情感。情感分析也被称为观点挖掘,指对带有情感色彩的主观性文本进行识别并分析情感倾向的过程。情感分析的理论意义在于当人们做决策时,很大程度上依赖于他人的看法及评价,观点是影响人们行为的主要因素。情感分析包含多个子任务,如情感分类、情感信息抽取、主题识别、主客观分析等。而在社会价值方面,随着论坛、微博等社交媒体的普及,人们越来越倾向于在网络上表达自己对问题、事件、话题、新闻的看法,因此对社交媒体上的非结构性文本进行情感分析,可以知道群众的评论导向,提取群众对某事件的观点,从而帮助政府或者社会有关部门更好地掌握民意作出相应的决策。在其他方面,情感分析技术还被应用于心理学领域,为心理学理论证明提高提供了可行路径。情感分析还可以实现论文的自动评审、预测股票、电影票房的趋势等。
3.以往的社交网用户情绪分析主要着眼于用户状态更新中的文本信息,文本情感分析任务是根据文本内容判断用户的情绪极性。随着上传附带短文本的图像或视频成为用户在社交网上分享自己的心情和表达观点的主要方式,图像和文本共同构成社交媒体中内容的主要部分。多模态数据通常具有互补性、相互验证性、融合性和可转换性的特点。互补性是多模态数据的一个重要属性,各种各样的数据类型都能提供关于某个事物或现象的部分解释和描述。不同类型的原始数据之间的结构差异很大,但在进行适当的处理后,这些多样性的数据可以融合在一起,甚至可以互相转换,从而验证同一事件产生结果的一致性。最近,在数据融合领域,研究者将深度学习技术应用到多模态数据分析任务中,取得了一些重要进展。基于深度学习的多模态数据分析方法在情感分析、语言翻译、跨模态检索和医学辅助诊断等领域取得了一些成果,深度学习为多模态数据融合领域带来了新的机遇。
技术实现要素:
4.本发明考虑到文本和图像特征难以融合和对齐,且融合之后的图文特征中存在一些和情感分析无关的信息,导致多模态图文情感分析一直是一个比较难的任务;提出了一种基于对比学习和多头自注意力机制的多模态情感分析方法;旨在使用基于多头自注意力机制的transformer-encoder结构帮助文本和图像特征进行对齐和融合,同时加入两种辅助对比学习任务,帮助模型更好的提取学习文本和图像融合后的特征,帮助模型提升数据情感的区分能力。
5.本发明是通过以下方案实现的:
6.一种基于对比学习和多头自注意力机制的多模态情感分析方法:
7.所述方法具体包括以下步骤:
8.步骤一:获取用于多模态情感分析的训练样本;并对训练样本进行数据划分和预处理;获得训练样本的文本与图像数据;
9.步骤二:将训练样本中的每条样本中的句子划分为子词,并在句子的开头和结尾加入标志符,之后将字词映射为词向量索引,完成文本的初步表示;
10.步骤三:将训练样本中的图像读入到内存中,并将图像格式映射为rgb格式的向量数据,完成图像的初步表示;
11.步骤四:将步骤二获得的文本的初步表示以及步骤三获得的图像的初步表示分别输入到文本预训练模型bert和图像特征提取模型resnet-50中,分别得到文本文本的序列特征表示和图像的特征表示;
12.步骤五:将步骤四得到的图像特征表示输入到多层的transformer-encoder网络中,获取二次提取的图像特征;
13.步骤六:将步骤四得到的文本特征表示和步骤五中得到的二次提取的图像特征进行拼接,获取文本-图像特征序列表示,将文本-图像特征序列表示输入到多层的 transformer-encoder网络中,通过多头自注意力机制的计算,对文本-图像特征进行对齐和融合,得到文本-图像序列融合特征向量;
14.步骤七:将步骤六中的文本-图像序列融合特征向量,经过attention层,获取最终的文本-图像融合特征向量;
15.步骤八:将步骤七中得到的文本-图像融合特征向量输入到情感分类器中,得到情感分类的结果和损失函数;
16.步骤九:将步骤七中得到的文本-图像融合特征向量,经过基于同一batch集合中相同标签数据之间进行info-nce对比学习,作为辅助任务,计算损失函数;
17.步骤十:将步骤一中得到的文本-图像数据进行数据增强,并通过步骤二到步骤七,得到数据增强的文本-图像融合特征向量,之后将步骤七中得到的最终的文本-图像融合特征向量与数据增强的文本-图像融合特征向量进行info-nce的对比学习,作为辅助任务,计算损失函数;
18.步骤十一:将步骤八到步骤十的三个损失函数按权重相加,优化整个多模态情感分析模型。
19.进一步地,在步骤一中,所述数据划分具体方法为:将数据集按照8∶1∶1的比例划分成训练集,验证集和测试集;并保证每个集合中的文本与图像数据的数量均衡。
20.进一步地,在步骤二中,将训练样本的文本序列s={w1w2...wn}进行切词,并在首尾加入开始和结束符;
21.切词后的文本序列为s
sub
={[start],w1,w2,...,wn,[end]},之后将切词后的文本序列转换成词向量索引:
[0022][0023]
进一步地,在步骤三中:将图像读入到内存中,得到图像的rgb格式的向量数据,并
经过缩放,得到图像向量数据img:
[0024]
img=convert_to_rgb(image_read(image_file_path))。
[0025]
进一步地,步骤四:将文本词向量索引s
index
和图像向量数据img分别输入到模型中,分别得到文本的序列特征表示text_model(s
index
)和图像的序列特征表示 image_model(img);
[0026]
[t
r[cls]
,t
r1
,t
r2
,...,t
rn
,t
r[end]
]=text_model(s
index
) [i
r1
,i
r2
,...,i
r49
]=image_model(img)。
[0027]
进一步地,在步骤五中,将图像序列特征输入到多层transformer-encoder网络中,得到和文本更加相近的图像特征,得到二次图像特征transformer
img
([i
r1
,i
r2
,...,i
r49
]);
[0028][0029]
进一步地,在步骤六中,所述文本-图像特征序列表示:
[0030][0031]
将文本-图像特征序列表示输入到多层transformer-encoder中,得到文本-图像序列融合特征向量[m1,m2,...,m
n 51
];
[0032]
[m1,m2,...,m
n 51
]=transformer
text-img
(t_img);
[0033]
在步骤七中,最终的文本-图像的融合特征向量:
[0034]
[q1,q2,...,q
n 51
]=softmax(linear([m1,m2,...,m
n 51
]))
[0035][0036]
进一步地,在步骤八中,所述情感分类的结果和损失函数为:
[0037]
f=gelu(r
text-image
wf bf)
[0038]
o=softmax(fwo bo)
[0039]y′
=argmax(o)∈[1,c]
[0040]
lossc=ylog(o(y
′
))/len(labels)
[0041]
其中,f为情感类别特征向量,o为情感类别概率值,其中,f为情感类别特征向量,o为情感类别概率值,m和n均是线性层的隐层维度,c表示情感类别数量,y
′
表示最终的情感类别,y表示真实的情感标签,labels表示同一个batch中所有的标签,损失函数lossc采用交叉熵损失函数进行计算;
[0042]
在步骤九中,具体计算公式如下:
[0043][0044]
cl_self_labels=get_target_labels(labels)
[0045]
cl_self_encoder=cl_self_encoder/temperature
[0046]
cl_self_loss=gather(cl_self_encoder,dim=1,index=cl_self_labels)
[0047]
loss
cl_self
=cl_self_loss/len(labels)
[0048]
其中get_target_labels()函数根据原始的标签,生成info-nce对比学习中需要的同一batch集合中需要最大化概率的相同标签的索引数据,gather()函数根据给定的标
签的索引数据,从对比学习编码特征中抽取最大化选中的特征并进行损失计算;
[0049]
步骤十:针对数据增强得到的文本-图像特征和原始数据的文本-图像特征之间进行 info-nce对比学习,计算公式如下:
[0050]
ta,ia=data_augmentation(s,img)
[0051]rtext-image,a
=multimodal_model(ta,ia)
[0052][0053]
cl_labels=range(len(labels))
[0054]
loss
cl
=crossentropyloss(cl_encoder,cl_labels)/len(labels)
[0055]
公式中的data_augmentation()用于对文本-图像数据进行数据增强,其中针对文本进行反向翻译,即源语言-翻译语言-源语言的形式;针对图像数据,采用明暗变换,裁剪,对比度变换进行数据增强;公式中的multimodal_model为步骤四到步骤七中的操作,其中的模型参数和原始数据的所使用的模型是参数共享的;
[0056]
步骤十一:最后将步骤八至步骤十得到的lossc、loss
cl self
和loss
cl
按比例相加,共同优化多模态情感分析模型,公式如下:
[0057]
loss=lossc αloss
cl_self
βloss
cl
[0058]
其中α和β取1。
[0059]
一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0060]
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时实现上述方法的步骤。
[0061]
本发明有益效果
[0062]
本发明使用基于多头自注意力机制的transformer-encoder结构帮助文本和图像特征进行对齐和融合,同时加入两种辅助对比学习任务,分别是针对标签类型的对比学习和针对图文融合特征的对比学习,分别帮助模型更加关注于图文融合特征中的情感特征和图文融合过程中相关联的特征,帮助模型提升数据情感的区分能力。
附图说明
[0063]
图1为本发明的整体模型结构图;
[0064]
图2为本发明模型结构中数据特征提取组件的结构图;
[0065]
图3为本发明模型结构中基于多头自注意力机制的多模态融合组件的结构图;
[0066]
图4为本发明的模型训练流程图。
具体实施方式
[0067]
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068]
结合图1至图4,
[0069]
一种基于对比学习和多头自注意力机制的多模态情感分析方法:
[0070]
所述方法具体包括以下步骤:
[0071]
步骤一:获取用于多模态情感分析的训练样本;并对训练样本进行数据划分和预处理;获得训练样本的文本与图像数据;
[0072]
步骤二:将训练样本中的每条样本中的句子划分为子词,并在句子的开头和结尾加入标志符,之后将字词映射为词向量索引,完成文本的初步表示;
[0073]
步骤三:将训练样本中的图像读入到内存中,并将图像格式映射为rgb格式的向量数据,完成图像的初步表示;
[0074]
步骤四:将步骤二获得的文本的初步表示以及步骤三获得的图像的初步表示分别输入到文本预训练模型bert和图像特征提取模型resnet-50中,分别得到文本文本的序列特征表示和图像的特征表示;
[0075]
步骤五:将步骤四得到的图像特征表示输入到多层的transformer-encoder网络中,这一步是为了将图像特征转成和文本更加相近的图像特征,获取二次提取的图像特征;
[0076]
步骤六:将步骤四得到的文本特征表示和步骤五中得到的二次提取的图像特征进行拼接,获取文本-图像特征序列表示,将文本-图像特征序列表示输入到多层的 transformer-encoder网络中,通过多头自注意力机制的计算,对文本-图像特征进行对齐和融合,得到文本-图像序列融合特征向量;
[0077]
步骤七:将步骤六中的文本-图像序列融合特征向量,经过attention层,获取最终的文本-图像融合特征向量;
[0078]
步骤八:将步骤七中得到的文本-图像融合特征向量输入到情感分类器中(全连接层和 softmax层),得到情感分类的结果和损失函数;
[0079]
步骤九:将步骤七中得到的文本-图像融合特征向量,经过基于同一batch集合中相同标签数据之间进行info-nce对比学习,作为辅助任务,计算损失函数;
[0080]
步骤十:将步骤一中得到的文本-图像数据进行数据增强,并通过步骤二到步骤七,得到数据增强的文本-图像融合特征向量,之后将步骤七中得到的最终的文本-图像融合特征向量与数据增强的文本-图像融合特征向量进行info-nce的对比学习,作为辅助任务,计算损失函数;
[0081]
步骤十一:将步骤八到步骤十的三个损失函数按权重相加,优化整个多模态情感分析模型。
[0082]
在步骤一中,所述数据划分具体方法为:将数据集按照8∶1∶1的比例划分成训练集,验证集和测试集;并保证每个集合中的文本与图像数据的数量均衡。
[0083]
在步骤二中,将训练样本的文本序列s={w1w2...wn}进行切词,并在首尾加入开始和结束符;
[0084]
切词后的文本序列为s
sub
={[start],w1,w2,...,wn,[end]},之后将切词后的文本序列转换成词向量索引:
[0085][0086]
在步骤三中:将图像读入到内存中,得到图像的rgb格式的向量数据,并经过缩放,得到3*224*224的图像向量数据img:
[0087]
img=convert_to_rgb(image_read(image_file_path))。
[0088]
步骤四:将文本词向量索引s
index
和图像向量数据img分别输入到模型中,分别得到文本的序列特征表示text_model(s
index
)和图像的序列特征表示image_model(img);(如图 2数据特征提取组件的结构图所示):
[0089]
[t
r[cls]
,t
r1
,t
r2
,...,t
rn
,t
r[end]
]=text_model(s
index
) [i
r1
,i
r2
,...,i
r49
]=image_model(img)。
[0090]
对于文本序列特征,这里针对每个子词,提取到了768维的特征向量,对于图像,得到的是49*768维的特征向量。
[0091]
在步骤五中,将图像序列特征输入到多层transformer-encoder网络中,得到和文本更加相近的图像特征,得到二次图像特征transformer
img
([i
r1
,i
r2
,...,i
r49
]);(如图3基于多头自注意力机制的多模态融合组件的结构图);
[0092][0093]
这里是为了让图像特征和文本特征更加契合,帮助模型更好的进行之后的文本-图像特征融合;
[0094]
在步骤六中,所述文本-图像特征序列表示:
[0095][0096]
将文本-图像特征序列表示输入到多层transformer-encoder中,得到文本-图像序列融合特征向量[m1,m2,...,m
n 51
];(如图3基于多头自注意力机制的多模态融合组件的结构图):
[0097]
[m1,m2,...,m
n 51
]=transformer
text-img
(t_img);
[0098]
在步骤七中,最终的文本-图像的融合特征向量:
[0099]
[q1,q2,...,q
n 51
]=softmax(linear([m1,m2,...,m
n 51
]))
[0100][0101]
在步骤八中,所述情感分类的结果和损失函数为:(如图1左上第一个任务):
[0102]
f=gelu(r
text-image
wf bf)
[0103]
o=softmax(fwo bo)
[0104]y′
=argmax(o)∈[1,c]
[0105]
lossc=ylog(o(y
′
))/len(labels)
[0106]
其中,f为情感类别特征向量,o为情感类别概率值,其中,f为情感类别特征向量,o为情感类别概率值,m和n均是线性层的隐层维度,c表示情感类别数量,y
′
表示最终的情感类别,y表示真实的情感标签,labels表示同一个batch中所有的标签,损失函数lossc采用交叉熵损失函数进行计算;
[0107]
在步骤九中,将同一batch集合中的相同标签数据之间进行info-nce对比学习,这里是为了让模型可以偏向学习到文本-图像融合之后的情感信息特征,而不是仅仅关注于如何融合文本和图像特征,具体计算公式如下:
[0108][0109]
cl_self_labels=get_target_labels(labels)
[0110]
cl_self_encoder=cl_self_encoder/temperature
[0111]
cl_self_loss=gath er(cl_self_encoder,dim=1,index=cl_self_labels)
[0112]
loss
cl_self
=cl_self_loss/len(labels)
[0113]
其中get_target_labels()函数根据原始的标签,生成info-nce对比学习中需要的同一 batch集合中需要最大化概率的相同标签的索引数据,参考图1中间矩阵的阴影部分, gather()函数根据给定的标签的索引数据,从对比学习编码特征中抽取最大化选中的特征 (需要的特征)并进行损失计算;
[0114]
步骤十:针对数据增强得到的文本-图像特征和原始数据的文本-图像特征之间进行 info-nce对比学习(如图1的左上矩阵的阴影部分),计算公式如下:
[0115]
ta,ia=data_augmentation(s,img)
[0116]rtext-image,a
=multimodal_model(ta,ia)
[0117][0118]
cl_labels=range(len(labels))
[0119]
loss
cl
=crossentropyloss(cl_encoder,cl_labels)/len(labels)
[0120]
公式中的data_augmentation()用于对文本-图像数据进行数据增强,其中针对文本进行反向翻译,即源语言-翻译语言-源语言的形式;针对图像数据,采用明暗变换,裁剪,对比度变换等策略进行数据增强;公式中的multimodal_model为步骤四到步骤七中的操作,其中的模型参数和原始数据的所使用的模型是参数共享的;
[0121]
步骤十一:最后将步骤八至步骤十得到的lossc、loss
cl self
和loss
cl
按比例相加,共同优化多模态情感分析模型,公式如下:
[0122]
loss=lossc αloss
cl_self
βloss
cl
[0123]
其中α和β取1。
[0124]
一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0125]
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时实现上述方法的步骤。
[0126]
模型优化时的训练规则如图4流程图所示,定义一个总训练轮次数epoch,和两个分层训练轮次数epoch1和epoch2,且epoch=epoch1 epoch2,对文本进行训练,训练过程中采用分层优化,首先优化图3部分的模型参数,经过epoch1之后,对全部模型参数进行优化。定义一个批训练大小batch size,为模型在一个批次(batch)中取用的训练样本数目。
[0127]
可选的,本实施例中,学习率为2e-5,使用adamw优化器。
[0128]
实施例数据及评估指标介绍
[0129]
本实施例中,使用了渥太华大学的mcr实验室提供的用于多模态图文情感分析的数据集mvsa-single,mvsa-single数据集需要手动进行划分为训练集,验证集和测试集。数据划分之后的分布情况如表1所示:
[0130][0131]
表1:mvsa-single数据集情感标签分布情况
[0132]
本次实施例中,还使用了清华大学提供的基于twitter的讽刺识别多模态情感数据集 hfm。数据集本身已经划分好了训练集,验证集和测试集,其数据分布情况如表2所示:
[0133][0134]
表2:hfm数据集情感标签分布情况
[0135]
本发明采用f1值和准确率作为评价指标。
[0136]
实验结果
[0137]
在mvsa-single数据集上的实验结果如表3所示:
[0138][0139]
表3:mvsa-single数据集情感分类实验结果
[0140]
在hfm数据集上的实验结果如表4所示:
[0141][0142]
表4:mvsa-single数据集情感分类实验结果
[0143]
针对mvsa-single数据集的实验结果,bert和resnet-50是文本和图像预训练模型。 multisentinet是基于多场景语义的多模态情感识别方法,comn(6)是基于互注意力机制的多模态情感识别方法,mgnns是基于多通道图神经网络的多模式情感识别方法;
[0144]
针对hfm数据集的实验结果,bert和resnet-50是文本和图像预训练模型。random 表示随机生成答案得到的预测结果。concat是将文本和图像的特征拼接起来进行分类的方法,hierarchical fm是基于层次的局部和全局特征的多模态情感识别方法。
[0145]
以上对本发明所提出的一种基于对比学习和多头自注意力机制的多模态情感分析方法,进行了详细介绍,对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
转载请注明原文地址:https://tc.8miu.com/read-92.html