Processing math: 3%
  • 中国精品科技期刊
  • CCF推荐A类中文期刊
  • 计算领域高质量科技期刊T1类
高级检索

基于多种同构化变换的SLP向量化方法

冯竞舸, 贺也平, 陶秋铭, 马恒太

冯竞舸, 贺也平, 陶秋铭, 马恒太. 基于多种同构化变换的SLP向量化方法[J]. 计算机研究与发展, 2023, 60(12): 2907-2927. DOI: 10.7544/issn1000-1239.202220354
引用本文: 冯竞舸, 贺也平, 陶秋铭, 马恒太. 基于多种同构化变换的SLP向量化方法[J]. 计算机研究与发展, 2023, 60(12): 2907-2927. DOI: 10.7544/issn1000-1239.202220354
Feng Jingge, He Yeping, Tao Qiuming, Ma Hengtai. SLP Vectorization Method Based on Multiple Isomorphic Transformations[J]. Journal of Computer Research and Development, 2023, 60(12): 2907-2927. DOI: 10.7544/issn1000-1239.202220354
Citation: Feng Jingge, He Yeping, Tao Qiuming, Ma Hengtai. SLP Vectorization Method Based on Multiple Isomorphic Transformations[J]. Journal of Computer Research and Development, 2023, 60(12): 2907-2927. DOI: 10.7544/issn1000-1239.202220354
冯竞舸, 贺也平, 陶秋铭, 马恒太. 基于多种同构化变换的SLP向量化方法[J]. 计算机研究与发展, 2023, 60(12): 2907-2927. CSTR: 32373.14.issn1000-1239.202220354
引用本文: 冯竞舸, 贺也平, 陶秋铭, 马恒太. 基于多种同构化变换的SLP向量化方法[J]. 计算机研究与发展, 2023, 60(12): 2907-2927. CSTR: 32373.14.issn1000-1239.202220354
Feng Jingge, He Yeping, Tao Qiuming, Ma Hengtai. SLP Vectorization Method Based on Multiple Isomorphic Transformations[J]. Journal of Computer Research and Development, 2023, 60(12): 2907-2927. CSTR: 32373.14.issn1000-1239.202220354
Citation: Feng Jingge, He Yeping, Tao Qiuming, Ma Hengtai. SLP Vectorization Method Based on Multiple Isomorphic Transformations[J]. Journal of Computer Research and Development, 2023, 60(12): 2907-2927. CSTR: 32373.14.issn1000-1239.202220354

基于多种同构化变换的SLP向量化方法

基金项目: 中国科学院战略性先导科技专项(XDA-Y01-01,XDC02010600)
详细信息
    作者简介:

    冯竞舸: 1988年生. 博士, 高级工程师. 主要研究方向为编译优化和性能优化

    贺也平: 1962年生. 博士,研究员. 主要研究方向为系统安全、隐私保护

    陶秋铭: 1979年生. 博士,副研究员. 主要研究方向为操作系统、编译技术、软件工程

    马恒太: 1970年生. 博士,副研究员. 主要研究方向为软件安全分析、操作系统安全

    通讯作者:

    冯竞舸(jingge815@gmail.com

  • 中图分类号: TP312

SLP Vectorization Method Based on Multiple Isomorphic Transformations

Funds: This work was supported by the Strategic Priority Research Program of Chinese Academy of Sciences (XDA-Y01-01, XDC02010600)
More Information
    Author Bio:

    Feng Jingge: born in 1988. PhD, senior engineer. His main research interests include compiler optimization and performance optimization

    He Yeping: born in 1962. PhD, professor. His main research interests include system security and privacy protection

    Tao Qiuming: born in 1979. PhD, associate professor. His main research interests include operating system, compiler, and software engineering

    Ma Hengtai: born in 1970. PhD, associate professor. His main research interests include software security analysis and operating system security

  • 摘要:

    超字级并行(superword level parallelism,SLP)是一种面向处理器单指令多数据(single instruction multiple data,SIMD)扩展部件实现程序自动向量化的方法,这种方法被广泛应用于主流编译器中.SLP方法有赖于先找到同构指令序列再对之进行自动向量化. 将非同构指令序列等价转为同构指令序列以扩展SLP方法的适用范围是当前研究趋势之一. 提出SLP的一种扩展方法──SLP-M向量化方法,引入二元表达式替换同构转换方式,基于条件判断和收益计算的选择,利用多种指令序列同构化转换,将满足特定条件的非同构指令序列转换为同构指令序列,再进一步实施自动向量化,从而提升SLP的适用范围和收益. 在LLVM中实现了SLP-M方法,并利用SPEC CPU 2017等标准测试集进行了测试评估. 实验结果表明,SLP-M方法相比于已有方法在核心函数测试中性能提升了21.8%,在基准测试程序整体测试中性能提升了4.1%.

    Abstract:

    SLP (superword level parallelism) is an efficient auto-vectorization method to exploit the data level parallelism for basic block, oriented to SIMD (single instruction multiple data), and SLP has been widely used in the mainstream compilers. SLP performs vectorization by finding multiple sequences of isomorphic instructions in the same basic block. Recently there is a research trend that the compilers translate the sequences of non-isomorphisic instructions into the sequences of isomorphisic instructions to extend application scope of the SLP vectorization method. In this paper, we introduce SLP-M, a novel auto-vectorization method that can effectively vectorize the code containing sequences of non-isomorphic instructions in the same basic block, translatting the code into isomorphic form by selection and conduction of multiple transformation methods based on condition judgment and benefit evaluation. A new transformation method for binary expression replacement is also proposed. SLP-M improves application scope and performance benefit for SLP. We implement SLP-M in LLVM. A set of applications are taken from some benchmarks such as SPEC CPU 2017 to compare our approach and prior techniques. The experiments show that, compared with the existing methods, the performance of SLP-M improves by 21.8% on kernel functions, and improves by 4.1% in the overall tests of the benchmarks.

  • 随着互联网的发展,社交媒体平台成为人们发表言论和观点的主要阵地,高效地识别用户对重要组织、重要人物、商品等实体及其方面 1的情感对平台治理用户的不当言论、建模用户偏好以实现精准的个性化推荐有重要的实用意义. 同时也有助于监控消费者行为、评估产品质量、监控舆情、调研市场等.

    不同于句子级情感分析任务为整个句子预测情感,方面术语提取和方面级情感分类(aspect-term extraction and aspect-level sentiment classification, AESC)任务的目标是抽取句子中的方面-情感对. 方面术语提取(aspect-term extraction, AE)提取句子中包含的方面术语,方面级情感分类(aspect-level sentiment classification, ALSC)预测用户对给定方面的情感. 比如来自Twitter的一条评论:“I love animals , so nice to see them getting along ! Here are our dogs , Greek and Salem , laying together”,提取出的方面-情感对为〈“Greek”,正面〉〈“Salem”,正面〉,即句子中包含方面“Greek”和“Salem”,表述者对它们的情感都是正面的.

    在文本领域中,已有研究[1-3]实现了方面-情感对提取方法,并应用于商品评论数据的情感分析. 然而在Twitter,Instagram等社交媒体平台上,人们习惯发表短小且口语化的文字并配以图片,相关研究指出,文本单模态的模型在此类用户数据上表现并不好[4-6]. 考虑图片非仅仅依靠文本来分析用户发表的观点是时代的趋势,因此在多模态领域实现方面术语提取和方面级情感分类将具有一定的实用价值和现实意义.

    在多模态领域,Zhang等人[7]和Yu等人[8]分别研究了方面术语抽取和方面级情感分类. 通过实体识别技术提取句子中包含的方面术语,接着将提取的方面术语和句子输入到方面级情感分类模型进行情感预测,可通过这种流水线方式实现方面-情感对的提取. 然而,目前的这种方法存在不足之处:首先,使用2个完全独立的模型分步实现方面-情感对的提取,使得建模特征的语义深度不同且不关联,忽略了2个任务之间潜在的语义关联,当句子中包含多个方面时,情感分类模型可能会混淆它们之间的上下文信息而造成预测失误;其次,方面术语提取模型一次提取句子中的多个方面术语,而情感分析模型一次只能预测一个方面的情感,前者的吞吐量大于后者,且情感分析必须在方面术语提取完成后进行,降低了方面-情感对的抽取效率.

    针对以上问题,本文提出了一个同时进行方面术语提取和方面级情感分类的统一框架UMAS. 该统一框架包含3个模块:共享特征模块、方面术语提取模块、情感分类模块. 首先,该统一框架使用共享特征的方式表示方面术语提取和情感分类2个子任务的底层文本和图像特征,在学习的过程中建立2个子任务之间的语义联系. 相比于之前的方面术语提取模型和方面级情感分类模型使用不同的网络编码文本和图像的特征,本文所提出的特征共享的方法简化了模型. 其次,采用序列标注的方式,同时输出句子中包含的多个方面和对应的情感,方面术语提取模块和情感分类模块可并行执行,大大提升了方面-情感对提取的效率.

    此外,既往多模态方面术语提取方法[7,9-10]未能充分利用文本的语法信息,而方面级情感分析方法[8,11]由于缺乏观点词的标注而未能通过观点信息更好地判断情感倾向. 为提升2个子任务的性能,本文使用词性标注工具spaCy[11]获取单词的词性,对2个子任务做如下改进:在方面术语提取模块中,使用多头自注意力机制获取词性特征,融合视觉特征、文本特征、词性特征作为分类层的输入,提升了方面术语提取的性能;在情感分类模块,为充分发挥观点词对情感分类的作用,通过词性标注将动词、形容词、副词、介词标记为观点词,在情感分类中增加对这些观点词的注意权重,并将观点词特征融入到最后的分类层以提升情感分类的性能. 本文提出的方法与多个基线模型相比,在方面术语提取、方面级情感分类、AESC任务上的性能都有明显的提升.

    本文的主要贡献有3个方面:

    1) 在多模态领域提出方面术语提取和方面级情感分类的统一框架UMAS (unified multi-modal aspect sentiment),通过建模方面术语提取和方面级情感分类任务之间的语义关联,同时提高了方面-情感对提取的性能和效率.

    2) 本文通过引入词性特征提升了方面术语提取的性能;通过词性标注获取观点词特征并结合位置信息,提升了方面级情感分类的性能.

    3) 该统一框架在Twitter2015,Restaurant2014这2个基准数据集上相比于多个基线模型在方面术语提取、方面级情感分类、AESC任务上都具有优越的性能.

    目前,文本领域的基于方面的情感分析研究发展的比较成熟,现有研究[12-18]在Restaurant,Laptop,Twitter等数据集上,根据提供的方面术语预测情感类别;Ying 等人[19]根据方面术语提取对应的观点并判断情感倾向;Oh等人[20]、Chen等人 [21]、Xu等人[22]则使用多任务模型将方面术语提取、观点词提取、情感分类3个任务统一. 其中,Chen等人 [21]详细阐述了3个任务之间的关系,并在多层的网络模型RACL中通过关系传导机制促进子任务之间的协作,最终以序列标注的方式分别输出3个任务的结果. RACL将3个任务的关系总结如下:方面术语和观点词存在对应关系(比如“美味”一词不适合描述地点),方面术语和观点词的配对有助于预测情感,观点词对情感预测有最直接的帮助,方面术语是情感依托的对象. 文本领域的方面术语提取方法更关注文本的语法信息,Phan 等人[23]和薛芳等人[24]借助句法成分、依存关系提升方面术语提取的性能. 在情感分类中,Chen等人[21]、He 等人[25]利用观点词的信息提升了情感推断的准确性,He 等人[25]还利用了位置信息使注意力集中在方面的上下文. 文本领域基于方面的情感分析的研究,对多模态基于方面的情感分析的研究有重要的启发式意义.

    在多模态领域,可使用Zhang等人[7]提出的方面术语抽取模型和Yu 等人[8]提出的方面级情感分类模型流水线式地抽取方面-情感对. 尽管流水线方法符合人们处理此类问题的直觉且有利于灵活变动2个模型,但Wang等人[26]指出该方法在方面术语提取中的错误将传播到情感预测阶段,导致方面-情感对预测性能下降. 方面术语提取和方面级情感分类2个模型的独立无法像RACL一样建模2个任务之间的语义联系,且串行执行使得模型效率低下. 多模态方面术语提取方法[7,9-10]充分关注了图像对提取方面术语的帮助,并且使用门控机制降低图像引入的噪音,但忽视了文本中包含的语法信息. 在文本领域的方面级情感分类中,多种方法[19-21]利用观点词提取作为辅助任务提升情感分类的效果,然而多模态方面级情感分类的数据集主要是Twitter,目前数据集中包含的信息包括句子、图片、方面、情感等的标准,但是未有观点词的标注信息,所以多模态领域中以观点词提取为辅助任务的方法不存在监督信息,难以开展. 此外,目前多模态方面级情感分类模型如EASFN[8],ABAFN[12],以句子、图像、方面术语为输入,一次只能识别一个方面的情感,而文本领域采用序列标注的方法可同时识别句子中所有方面的情感.

    本节主要介绍任务定义,并详细阐述本文所提出的基于多模态方面术语提取和方面级情感分类的统一框架.

    给定长度为n的句子,即S={w1,w2,,wn},方面术语提取任务的目的是获取句子的方面术语标注序列YA={yA1,yA2,,yAi,,yAn},yAi{B,I,O},其中B表示方面术语的开始单词,I表示方面术语的中间单词及结尾单词,O表示不是方面术语. 而方面级情感分类任务的目的是获取句子的情感标注序列YS={yS1,yS2,,ySi,,ySn},ySi{0,1,2,3},其中0表示该单词不是方面术语,不被赋予情感,1表示情感为负面,2表示情感中立,3表示情感为正面. 方面术语提取和方面级情感分类的目的是抽取句子中包含的方面-情感对,即YP={as1,ae1,s1,,asi,aei,si,,asm,aem,sm}其中asi,aei,si分别为第i个方面术语的起始位置、终止位置和对应的情感类别.

    本文设计的方面术语提取和方面级情感分类的统一框架主要分为3个模块:共享特征模块、方面术语提取模块和情感分类模块,模型图如图1所示.

    图  1  本文模型框架
    Figure  1.  Framework of our proposed model

    在共享特征模块,使用VGG-16模型[27]获取图片特征表示,通过双向长短期记忆网络(bi-long short-term memory,BiLSTM)获取单词和字符的联合特征表示,通过多头自注意力机制[28]获取词性特征表示. 方面术语提取模块和情感分类模块以共享特征为输入,编码出特定于各自任务的私有特征. 在方面术语提取模块,通过文本和图像的交互注意力以及门控机制获取多模态表示,并与文本及词性特征拼接,作为方面术语提取模块最终的融合特征,最后通过条件随机场(conditional random fields,CRF)层获取方面术语序列标注. 情感分类模块将共享特征和特有特征融合,获取情感特征和观点词特征. 通过门控机制融合由情感特征引导的视觉注意特征和情感特征以获得多模态特征,并通过情感文本注意、位置信息和词性获得观点词特征,然后,将多模态特征和情感特征以及观点词特征融合,通过全连接层及softmax层获得情感序列标注. 在获得方面术语序列标签和情感序列标签后,通过简单的代码提取方面-情感对,实现AESC任务的目标. 图2是本文所提出的基于多模态方面术语提取和方面级情感分类的统一框架.

    图  2  基于多模态方面术语提取和方面级情感分类的统一框架
    Figure  2.  Unified framework based on multimodal aspect term extraction and aspect-level sentiment classification

    本文提出的方面术语提取和方面级情感分类的统一框架借鉴了多任务学习的思路,即通过参数共享建模2个子任务的语义联系,提升每个子任务的性能,并使用子任务的加权损失作为模型的损失. 但多任务模型通常有多个主要目标,而本文所提出的模型的主要目标只有1个,即抽取方面-情感对.

    共享特征模块的图像特征、文本特征、词性特征分别由图像编码器、文本编码器、词性编码器生成.

    裁剪图片为224×224像素,作为VGG-Net16[27]的输入,图像编码器保留最后1层池化层输出结果作为图像特征(维度为512×7×7). 其中,7×7代表图像的49个区域,512表示每个区域的特征维度. 所以图像特征可表示为{\widetilde{v}_{\mathrm{I}}}=\left\{{\boldsymbol{v}}_{i}\right|{{{\boldsymbol{v}}}}_{i}\in {\mathbb{R}}^{{d}_{\boldsymbol{v}}},i=\mathrm{1,2},…,49\} {{\boldsymbol{v}}}_{i} 代表图像区域i的具有512维度的特征向量.

    字符级的嵌入式表示可以减轻罕见词和拼写错误的问题,且能捕获前缀后缀的信息,因此,本文将字符级表示作为单词表示的一部分. 通过查找字符向量表,可以获取第t个单词的字符表示{c}_{t,\mathrm{W}}= \{{\boldsymbol{c}}_{t,1}, {\boldsymbol{c}}_{t,2},…,{\boldsymbol{c}}_{t,m}\},其中{\boldsymbol{c}}_{t,i}\in {\mathbb{R}}^{{d}_{\mathrm{c}}}为第t个单词第i个字母的向量表示,m为单词的长度. k个不同窗口大小的卷积核[{C}_{1},{C}_{2},…,{C}_{k}]被应用在单词特征上,每一次卷积后加一步最大池化操作,最后将获得的k个特征{\boldsymbol{w}'}_{t,1}{\boldsymbol{w}'}_{t,2},…,{\boldsymbol{w}'}_{t,k}拼接在一起作为单词的字符级表示,即

    {\boldsymbol{w}}'_{t}=[{\boldsymbol{w}}'_{t,1}\oplus{\boldsymbol{w}}'_{t,2}\oplus…\oplus{\boldsymbol{w}}'_{t,k}]. (1)

    通过查询预训练的词向量矩阵,可获得单词t的词嵌入式表示{\boldsymbol{w}}''_{t},将其与字符特征{\boldsymbol{w}' }_{t}拼接在一起作为单词t的联合表示,即{\boldsymbol{w}}_{t}=[{\boldsymbol{w}}'_{t},{\boldsymbol{w}}''_{t}]. 接着,使用BiLSTM获取包含上下文信息的单词t的隐藏特征{\boldsymbol{h}}_{t},即

    {\boldsymbol{h}}_{t}=[\stackrel{\rightharpoonup}{{\boldsymbol{h}}_{t}},\stackrel{\leftharpoonup}{{\boldsymbol{h}}_{t}}], (2)
    \boldsymbol{H}=\left\{{\boldsymbol{h}}_{j}\right|{\boldsymbol{h}}_{j}\in {\mathbb{R}}^{d},j=\mathrm{1,2},…,n\}, (3)

    其中H表示最终的共享文本特征,d为隐藏特征的向量维度.

    Phan等人[23]使用句法成分信息提升了方面术语提取的准确率,本文同样也使用spaCy工具获取单词的词性. 根据随机初始化的词性向量矩阵,可获得句子的词性特征\widetilde{\boldsymbol{P}}=(\widetilde{{\boldsymbol{p}}_{1}},\widetilde{{\boldsymbol{p}}_{2}},…,\widetilde{{\boldsymbol{p}}_{n}})n为句子长度). 然后,本文使用文献[27]中的多头自注意力机制进一步获取深层次的词性嵌入式特征\boldsymbol{P}.

    本文提出的模型中共有2个结构相同的文本编码器,分别为共享文本编码器和情感模块的私有文本编码器. 方面术语提取模块和情感分类模块共享图像编码器、词性编码器、共享文本编码器的输出数据.

    方面术语提取模块通过文本注意和视觉注意建模不同模态之间的语义交互作用,使用门控机制获取多模态融合特征,并使用过滤门减少多模态引入的噪音,最后将多模态融合特征、文本特征、词性特征拼接作为CRF解码器的输入,获得方面术语标注序列.

    首先,使用线性层分别将图像特征映射到与文本同维度的空间,将共享文本特征编码为方面术语提取模块的私有文本特征,即

    {\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{A}}={\rm{tanh}}({\boldsymbol{W}}_{\mathrm{I}}^{\mathrm{A}}\tilde{{\boldsymbol{v}}_{\mathrm{I}}}+{\boldsymbol{b}}_{\mathrm{I}}^{\mathrm{A}}), (4)
    {\boldsymbol{X}}^{\mathrm{A}}={\rm{tanh}}({\boldsymbol{W}}_{\mathrm{H}}^{\mathrm{A}}\boldsymbol{H}+{\boldsymbol{b}}_{\mathrm{H}}^{\mathrm{A}}), (5)

    其中{\boldsymbol{W}}_{\mathrm{I}}^{\mathrm{A}},{\boldsymbol{W}}_{\mathrm{H}}^{\mathrm{A}},{\boldsymbol{b}}_{\mathrm{I}}^{\mathrm{A}},{\boldsymbol{b}}_{\mathrm{H}}^{\mathrm{A}}为可训练参数.

    通常情况下,句子中的单词只对应图像中的一小块区域,为减小图像其他区域引入的噪音,该模块使用文本引导的视觉注意来获取不同区域的权重,图像区域与单词越相关,它被赋予的权重越大. 给定一个单词的特征{\boldsymbol{x}}_{t}^{\mathrm{A}}{{\boldsymbol{x}}_{t}^{\mathrm{A}}\in \boldsymbol{X}}^{\mathrm{A}}),通过神经网络和softmax函数来生成单词t对应的图像权重分布{\boldsymbol{\alpha }}_{t},并通过加权和生成单词t对应的图像特征表示\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}},即

    {\boldsymbol{z}}_{t}^{\mathrm{M}}={\rm{tanh}}({\boldsymbol{W}}_{{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{A}}}{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{A}}\oplus({\boldsymbol{W}}_{{\boldsymbol{h}}_{t}}{\boldsymbol{x}}_{t}^{\mathrm{A}}+{\boldsymbol{b}}_{{\boldsymbol{h}}_{t}}\left)\right), (6)
    {\boldsymbol{\alpha }}_{t}={s}{o}{f}{t}{m}{a}{x}({\boldsymbol{W}}_{{\boldsymbol{\alpha }}_{t}}{\boldsymbol{z}}_{t}^{{{\rm{M}}}}+{\boldsymbol{b}}_{{\boldsymbol{\alpha }}_{t}}), (7)
    \widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}=\sum _{i}{\boldsymbol{\alpha }}_{t,i}{\boldsymbol{v}}_{i}^{\mathrm{A}}, (8)

    其中{\boldsymbol{x}}_{t}^{\mathrm{A}}\in {\mathbb{R}}^{d}d为单词和图像特征的维度,{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{A}}\in {\mathbb{R}}^{d\times N}表示N个图片区域的特征, {\boldsymbol{v}}_{i}^{\mathrm{A}}\in {\mathbb{R}}^{d} 表示图片第i个区域的特征. {\boldsymbol{W}}_{{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{A}}},{\boldsymbol{W}}_{{\boldsymbol{h}}_{t}},{\boldsymbol{W}}_{{\boldsymbol{\alpha }}_{t}},{\boldsymbol{b}}_{{\boldsymbol{h}}_{t}},{\boldsymbol{b}}_{{\boldsymbol{\alpha }}_{t}}为可训练的参数. 符号\oplus表示2个特征的拼接,当2个操作数分别为矩阵和向量时,表示复制多个向量与矩阵的每一列进行拼接.

    类似地,上下文有助于丰富当前单词特征包含的信息,且对上下文不同的单词应当有不同的关注程度,所以本文通过视觉引导的文本注意力来获取单词t所需关注的上下文的权重{\boldsymbol{\beta }}_{t},通过对句子中单词的加权获得单词t的新的特征表示.

    {\boldsymbol{z}}_{t}^{\mathrm{T}}={\rm{tanh}}({\boldsymbol{W}}_{{\boldsymbol{X}}^{\mathrm{A}}}{\boldsymbol{X}}^{\mathrm{A}}\oplus({\boldsymbol{W}}_{\boldsymbol{X},\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}+{\boldsymbol{b}}_{\boldsymbol{X},\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}\left)\right), (9)
    {\boldsymbol{\beta }}_{t}={s}{o}{f}{t}{m}{a}{x}({\boldsymbol{W}}_{{\boldsymbol{\beta }}_{t}}{\boldsymbol{z}}_{t}^{{{\rm{T}}}}+{\boldsymbol{b}}_{{\boldsymbol{\beta }}_{t}}), (10)
    \widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}=\sum _{j}{\boldsymbol{\beta }}_{t,j}{\boldsymbol{x}}_{j}^{\mathrm{A}}, (11)

    其中{\boldsymbol{W}}_{{\boldsymbol{X}}^{\mathrm{A}}},{\boldsymbol{W}}_{\boldsymbol{X},\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}},{\boldsymbol{W}}_{{\boldsymbol{\beta }}_{t}},{\boldsymbol{b}}_{\boldsymbol{X},\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}},{\boldsymbol{b}}_{{\boldsymbol{\beta }}_{t}}为可训练的参数.

    当句子中包含多个实体时,往往并不是每个实体都存在与图像中的某个区域对应的关系,可能图片中描述了一个实体,而句子中有3个不同的实体. 为此,在融合多模态特征时,也需动态权衡视觉特征和文本特征的比例. 方面术语提取模块使用式(12)~(15)获取多模态融合特征{\boldsymbol{m}}_{t}^{\mathrm{A}}

    {\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}={\rm{tanh}}({\boldsymbol{W}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}+{\boldsymbol{b}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}), (12)
    {\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}}={\rm{tanh}}({\boldsymbol{W}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}}\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}+{\boldsymbol{b}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}}), (13)
    {\boldsymbol{g}}_{t}=\sigma \left({\boldsymbol{W}}_{{\boldsymbol{g}}_{t}}\left({\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}\oplus{\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}}\right)\right), (14)
    {\boldsymbol{m}}_{t}^{\mathrm{A}}={\boldsymbol{g}}_{t}{\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}}+(1-{\boldsymbol{g}}_{t}){\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}}, (15)

    其中 {\boldsymbol{W}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}},{\boldsymbol{W}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}},{\boldsymbol{W}}_{{\boldsymbol{g}}_{t}},{\boldsymbol{b}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}},{\boldsymbol{b}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}} 为参数, {\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{A}}}},{\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{A}}}} 分别为使用线性层获取的单词t对应的新的视觉特征和文本特征, {\boldsymbol{g}}_{t} 为通过sigmoid激活函数获取的视觉特征的权重.

    尽管多模态融合特征考虑了文本和图像的权重,但方面术语提取所依赖的最重要的数据应该是文本,

    所以方面术语提取模块将初始的文本特征、多模态特征和词性特征拼接起来作为解码器的输入. 此外,当预测的单词是动词或副词时,加入图像特征会引起噪音,所以在拼接之前,对多模态特征进行过滤操作,具体公式为:

    {\boldsymbol{s}}_{t}=\sigma ({\boldsymbol{W}}_{{\boldsymbol{s}}_{t},{\boldsymbol{x}}_{t}^{\mathrm{A}}}{\boldsymbol{x}}_{t}^{\mathrm{A}}\oplus({\boldsymbol{W}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}},{\boldsymbol{s}}_{t}}{\boldsymbol{m}}_{t}^{\mathrm{A}}+{\boldsymbol{b}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}},{\boldsymbol{s}}_{t}}\left)\right), (16)
    {\boldsymbol{u}}_{t}^{\mathrm{A}}={\boldsymbol{s}}_{t}\left({\rm{tanh}}\right({\boldsymbol{W}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}}}{\boldsymbol{m}}_{t}^{\mathrm{A}}+{\boldsymbol{b}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}}}\left)\right), (17)
    \widehat{{\boldsymbol{m}}_{t}^{\mathrm{A}}}={\boldsymbol{W}}_{\widehat{{\boldsymbol{m}}_{t}^{\mathrm{A}}}}({\boldsymbol{x}}_{t}^{\mathrm{A}}\oplus{\boldsymbol{u}}_{t}^{\mathrm{A}}\oplus{\boldsymbol{p}}_{t}^{\mathrm{A}}), (18)
    \widehat{{\boldsymbol{M}}^{\mathrm{A}}}=\{\widehat{{\boldsymbol{m}}_{1}^{\mathrm{A}}},\widehat{{\boldsymbol{m}}_{2}^{\mathrm{A}}},…,\widehat{{\boldsymbol{m}}_{n}^{\mathrm{A}}}\}, (19)

    其中 {{\boldsymbol{W}}_{{\boldsymbol{s}}_{t},{\boldsymbol{x}}_{t}^{\mathrm{A}}},\boldsymbol{W}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}},{\boldsymbol{s}}_{t}},{\boldsymbol{W}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}}},{\boldsymbol{W}}_{\widehat{{\boldsymbol{m}}_{t}^{\mathrm{A}}}},{\boldsymbol{b}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}},{\boldsymbol{s}}_{t}},{\boldsymbol{b}}_{{\boldsymbol{m}}_{t}^{\mathrm{A}}} 为参数, {\boldsymbol{x}}_{t}^{\mathrm{A}}{,\boldsymbol{u}}_{t}^{\mathrm{A}},{\boldsymbol{p}}_{t}^{\mathrm{A}} 分别为单词t的文本特征、过滤后的多模态特征、词性特征, \widehat{{\boldsymbol{M}}^{\mathrm{A}}} 为最终方面术语提取模块的句子表示.

    最后,方面术语提取模块使用CRF作为解码器进行方面术语的序列标注. 以 \boldsymbol{X}= \{{\boldsymbol{w}}_{0},{\boldsymbol{w}}_{1},. ..,{\boldsymbol{w}}_{T}\} 作为一般化的输入序列,其中 {\boldsymbol{w}}_{i} 表示第i个单词的特征向量, Y=\{{Y}_{0},{y}_{1},. ..,{y}_{T}\} 表示X对应的一种序列标签,Y表示所有可能的序列标注集合. 对于给定的X,所有可能的y可以由式(20)计算得到:

    p\left(y\right|\boldsymbol{X})=\frac{\prod\limits _{i=1}^{T}{\Omega }_{i}({y}_{i-1},{y}_{i},\boldsymbol{X})}{\sum _{{y}^{{'}}\in Y}\prod\limits _{i=1}^{T}{\Omega }_{i}({y}_{i-1}^{{'}},{y}_{i}^{{'}},\boldsymbol{X})}, (20)

    其中\varOmega表示可能性函数.

    情感分类模块可以分为4个部分:情感私有特征、多模态融合、观点词特征、情感分类.

    由于方面术语提取和情感分类的目标不一致,使用完全的共享特征机制会使训练效果不好,同时共享特征包含的信息有助于在底层更好地表现2个任务之间的语义联系,特别是方面作为情感的寄托者有助于情感的预测. 所以,在情感分类模块,存在一个私有的文本编码器以获取特有的情感特征. 接着,将共享表示层的文本特征和特有情感特征进行动态融合. 考虑使用动态融合是因为更关注共享特征中的方面而非其他单词. 该模块的情感私有特征表示 {\boldsymbol{X}}^{\mathrm{S}} 由式(21)~(25)获取:

    {\boldsymbol{H}}^{\mathrm{S}}={f}^{\mathrm{S}\mathrm{C}}\left(\boldsymbol{S}\right), (21)
    \widehat{{\boldsymbol{H}}^{\mathrm{S}}}={\rm{tanh}}({\boldsymbol{W}}_{{\boldsymbol{H}}^{\mathrm{S}}}{\boldsymbol{H}}^{\mathrm{S}}+{\boldsymbol{b}}_{{\boldsymbol{H}}^{\mathrm{S}}}), (22)
    \widehat{\boldsymbol{H}}={\rm{tanh}}({\boldsymbol{W}}_{\boldsymbol{H}}\boldsymbol{H}+{\boldsymbol{b}}_{\boldsymbol{H}}), (23)
    {\boldsymbol{g}}^{\mathrm{S}}=\sigma \left({\boldsymbol{W}}_{{\boldsymbol{g}}^{\mathrm{S}}}\right(\widehat{{\boldsymbol{H}}^{\mathrm{S}}}\oplus \widehat{\boldsymbol{H}}\left)\right), (24)
    {\boldsymbol{X}}^{\mathrm{S}}={\boldsymbol{g}}^{\mathrm{S}}\widehat{{\boldsymbol{H}}^{\mathrm{S}}}+(1-{\boldsymbol{g}}^{\mathrm{S}})\widehat{\boldsymbol{H}}, (25)

    其中, {f}^{\mathrm{S}\mathrm{C}} 表示表示情感模块私有文本编码器的函数,S表示输入的句子, {\boldsymbol{W}}_{{\boldsymbol{H}}^{\mathrm{S}}},{\boldsymbol{W}}_{\boldsymbol{H}},{\boldsymbol{W}}_{{\boldsymbol{g}}^{\mathrm{S}}},{\boldsymbol{b}}_{{\boldsymbol{H}}^{\mathrm{S}}},{\boldsymbol{b}}_{\boldsymbol{H}} 为参数.

    用户在社交媒体发布的文字具有不完整、较短、口语化的特点,仅仅使用文本内容来推测情感是不充分的. 因此,情感分类模块使用图像信息来提升预测的准确性. 与方面术语提取模块一样,在判断单词t(假设单词t为方面术语)的情感时,需要着重关注图像中该方面对应的区域,应尽量减少其他区域引起的干扰,所以使用相同的方法为不同的视觉区域分配不同的权重. 首先,将共享图像特征转换至与文本同一维度的空间内,然后使用情感引导的注意获取图像的权重分布 {{\boldsymbol{\gamma}} }_{t} ,最终加权获得单词t在情感分类模块对应的图像特征 \widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}} ,运算公式为:

    {\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{S}}={\rm{tanh}}({\boldsymbol{W}}_{\mathrm{I}}^{\mathrm{S}}\widetilde{{\boldsymbol{v}}_{\mathrm{I}}}+{\boldsymbol{b}}_{\mathrm{I}}^{\mathrm{S}}), (26)
    {\boldsymbol{z}}_{t}^{\mathrm{S}}={\rm{tanh}}({\boldsymbol{W}}_{{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{S}}}{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{S}}\oplus({\boldsymbol{W}}_{{\boldsymbol{h}}_{t}}{\boldsymbol{x}}_{t}^{\mathrm{S}}+{\boldsymbol{b}}_{{\boldsymbol{h}}_{t}}\left)\right), (27)
    {\boldsymbol{\gamma }}_{t}={s}{o}{f}{t}{m}{a}{x}({\boldsymbol{W}}_{{\boldsymbol{\gamma }}_{t}}{\boldsymbol{z}}_{t}^{{{\rm{S}}}}+{\boldsymbol{b}}_{{\boldsymbol{\gamma }}_{t}}), (28)
    \widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}=\sum _{i}{\boldsymbol{\gamma }}_{t,i}{\boldsymbol{v}}_{i}^{\mathrm{S}}, (29)

    其中 {\boldsymbol{W}}_{\mathrm{I}}^{\mathrm{S}} , {\boldsymbol{W}}_{{\boldsymbol{v}}_{\mathrm{I}}^{\mathrm{S}}} , {\boldsymbol{W}}_{{\boldsymbol{h}}_{t}} , {\boldsymbol{W}}_{{\boldsymbol{\gamma }}_{t}} , {\boldsymbol{b}}_{\mathrm{I}}^{\mathrm{S}} , {\boldsymbol{b}}_{{\boldsymbol{h}}_{t}} , {\boldsymbol{b}}_{{\boldsymbol{\gamma }}_{t}} 为可训练的参数.

    不同于方面术语提取模块对文本引入视觉注意的处理,在情感分类模块,为减少视觉特征引起的噪音,本文采用多头自注意的方式来获取单词t对上下文的关注,使某个位置的单词关注来自不同表示子空间的其他单词的特征. 该模块多头自注意力的查询矩阵、键矩阵、值矩阵都为情感特征矩阵. 最终多头自注意力输出的文本特征为 \widehat{{\boldsymbol{X}}^{\mathrm{S}}} .

    接着,同样通过门控机制获得情感特征和图像特征的多模态融合特征 {\boldsymbol{m}}_{t}^{\mathrm{S}} .

    {\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}}={\rm{tanh}}({\boldsymbol{W}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}}\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}+{\boldsymbol{b}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}}), (30)
    {\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}}={\rm{tanh}}({\boldsymbol{W}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}}\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}+{\boldsymbol{b}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}}), (31)
    {\boldsymbol{g}}_{t}^{\mathrm{S}}=\sigma \left({\boldsymbol{W}}_{{\boldsymbol{g}}_{t}^{\mathrm{S}}}\right({\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}}\oplus{\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}}\left)\right), (32)
    {\boldsymbol{m}}_{t}^{\mathrm{S}}={\boldsymbol{g}}_{t}^{\mathrm{S}}{\boldsymbol{h}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}}+(1-{\boldsymbol{g}}_{t}^{\mathrm{S}}){\boldsymbol{h}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}}, (33)

    其中 {\boldsymbol{W}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}} , {\boldsymbol{W}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}} , {\boldsymbol{W}}_{{\boldsymbol{g}}_{t}^{\mathrm{S}}} , {\boldsymbol{b}}_{\widehat{{\boldsymbol{v}}_{t}^{\mathrm{S}}}} , {\boldsymbol{b}}_{\widehat{{\boldsymbol{x}}_{t}^{\mathrm{S}}}} 为参数.

    由于人们表达情感是通过观点抒发的,即观点词有助于情感的判断,所以本文模块中使用词性标注识别的观点词信息帮助情感的预测,首先使用简单的神经网络编码得到观点词特征表示 {\boldsymbol{X}}^{\mathrm{O}} .

    {\boldsymbol{X}}^{\mathrm{O}}={\rm{tanh}}({\boldsymbol{W}}_{\mathrm{S}}^{\mathrm{O}}{\boldsymbol{X}}^{\mathrm{S}}+{\boldsymbol{b}}_{\mathrm{S}}^{\mathrm{O}}), (34)

    其中 {\boldsymbol{W}}_{\mathrm{S}}^{\mathrm{O}} , {\boldsymbol{b}}_{\mathrm{S}}^{\mathrm{O}} 为参数.

    观点描述的短语通常由动词、副词、形容词、介词构成,比如“agree with”“run fast”“beautiful”等. 在获取第t个单词的上下文时,应该给予这些单词更多的权重. 此外,通常情况下,观点词会出现在描述对象的附近,因此,位置关系也可以被考虑. 基于上述的分析,为获取单词t对应的观点信息,本文模块使用单词t(假设为方面术语)引导的注意,并考虑形容词、副词、动词和介词的权重以及位置权重,最终得到单词t对应的观点特征.

    {\boldsymbol{z}}_{t}^{\mathrm{O}}={\rm{tanh}}({\boldsymbol{W}}_{{\boldsymbol{X}}^{\mathrm{O}}}{\boldsymbol{X}}^{\mathrm{O}}\oplus({\boldsymbol{W}}_{\mathrm{O},{\boldsymbol{x}}_{t}^{\mathrm{S}}}{\boldsymbol{x}}_{t}^{\mathrm{S}}+{\boldsymbol{b}}_{\mathrm{O},{\boldsymbol{x}}_{t}^{\mathrm{S}}}\left)\right), (35)
    \widehat{{\boldsymbol{z}}_{t,i}^{\mathrm{O}}}={\boldsymbol{z}}_{t,i}^{\mathrm{O}}\cdot {\left[\mathrm{l}\mathrm{o}\mathrm{g}\right(2+|i-t|\left)\right]}^{-1}\cdot {\boldsymbol{\varphi }}_{i}, (36)
    {\boldsymbol{\varphi }}_{i}=\left\{\begin{split}&w,{\rm{if}}\;{w}_{i}\;{\rm{is}}\;{\rm{the}}\;{\rm{opinion}},\\ &0,{\rm{if}}\;{w}_{i}\;{\rm{is}}\;{\rm{not}}\;{\rm{the}}\;{\rm{opinion}},\end{split}\right. (37)
    {\boldsymbol{\kappa }}_{t}={s}{o}{f}{t}{m}{a}{x}({\boldsymbol{W}}_{{\boldsymbol{\kappa }}_{t}}\widehat{{\boldsymbol{z}}_{t}^{{{\rm{O}}}}}+{\boldsymbol{b}}_{{\boldsymbol{\kappa }}_{t}}), (38)
    \widehat{{\boldsymbol{x}}_{t}^{\mathrm{O}}}=\sum _{i}{\boldsymbol{\kappa }}_{t,i}{\boldsymbol{x}}_{i}^{\mathrm{O}}, (39)

    其中 {\boldsymbol{W}}_{{\boldsymbol{X}}^{\mathrm{O}}} , {\boldsymbol{W}}_{\mathrm{O},{\boldsymbol{x}}_{t}^{\mathrm{S}}} , {\boldsymbol{W}}_{{\boldsymbol{\kappa }}_{t}} , {\boldsymbol{b}}_{\mathrm{O},{\boldsymbol{x}}_{t}^{\mathrm{S}}} , {\boldsymbol{b}}_{{\boldsymbol{\kappa }}_{t}} 为参数. w 为超参,表示观点词的权重. \widehat{{\boldsymbol{x}}_{t}^{\mathrm{O}}} 为最终的观点词特征.

    将多模态融合特征、情感特征、观点特征融合,输入到分类层,得到最后的情感分类结果为:

    \widehat{{\boldsymbol{m}}_{t}^{\mathrm{S}}}={\boldsymbol{m}}_{t}^{\mathrm{S}}\oplus{\boldsymbol{x}}_{t}^{\mathrm{S}}\oplus \widehat{{\boldsymbol{x}}_{t}^{\mathrm{O}}}, (40)
    \widehat{{\boldsymbol{M}}^{\mathrm{S}}}=\{\widehat{{\boldsymbol{m}}_{1}^{\mathrm{S}}},\widehat{{\boldsymbol{m}}_{2}^{\mathrm{S}}},. ..,\widehat{{\boldsymbol{m}}_{n}^{\mathrm{S}}}\}, (41)
    p\left({y}_{t}^{\boldsymbol{S}}\right|\widehat{{\boldsymbol{m}}_{t}^{\boldsymbol{S}}})={s}{o}{f}{t}{m}{a}{x}({\boldsymbol{W}}_{{s}}\widehat{{\boldsymbol{m}}_{t}^{{{\rm{S}}}}}+{\boldsymbol{b}}_{{s}}), (42)

    其中 {\boldsymbol{W}}_{\mathrm{s}} , {\boldsymbol{b}}_{\mathrm{s}} 为可训练参数.

    AESC模块的损失函数是最小化交叉熵损失,实验的目标是最小化这2个模块的加权损失,即

    {\mathcal{L}}^{\mathrm{A}}=-\frac{1}{N}\sum _{i}\mathrm{l}\mathrm{o}\mathrm{g}p\left({y}_{i}^{\mathrm{A}}\right|\widehat{{\boldsymbol{M}}^{\mathrm{A}}}), (43)
    {\mathcal{L}}^{\mathrm{S}}=-\frac{1}{N}\sum _{i}\mathrm{l}\mathrm{o}\mathrm{g}p\left({y}_{i}^{\mathrm{S}}\right|\widehat{{\boldsymbol{M}}^{\mathrm{S}}}), (44)
    \mathcal{L}={{\alpha }_{1}\mathcal{L}}^{\mathrm{A}}+{{\alpha }_{2}\mathcal{L}}^{\mathrm{S}}, (45)
    {\alpha }_{1}+{\alpha }_{2}=1, (46)

    其中 {\alpha }_{1},{\alpha }_{2} 为超参,为2个模块损失函数的权重.

    通过AESC模块,可分别获取句子的方面术语和情感标注序列,即{Y}^{\mathrm{A}}= \left\{{y}_{1}^{\mathrm{A}},{y}_{2}^{\mathrm{A}},… ,{y}_{i}^{\mathrm{A}},…,{y}_{n}^{\mathrm{A}}\right\}, {y}_{i}^{\mathrm{A}}\in \left\{\mathrm{B},\mathrm{I},\mathrm{O}\right\}{Y}^{\mathrm{S}}=\{{y}_{1}^{\mathrm{S}},{y}_{2}^{\mathrm{S}},\mathrm{ }… , {y}_{i}^{\mathrm{S}},…, {y}_{n}^{\mathrm{S}}\}, {y}_{\mathrm{i}}^{\mathrm{S}}\in \{\mathrm{0,1},\mathrm{2,3}\}. 为了实现AESC任务的目标,本文进行方面-情感对抽取,具体的算法如算法1所示.

    算法1. 方面-情感对抽取.

    输入:句子长度L,方面术语标注序列 {Y}^{\mathrm{A}} ,情感标注序列 {Y}^{\mathrm{S}}

    输出:方面-情感对 {Y}^{\mathrm{P}} .

    ① 令 {Y}^{\mathrm{P}}=\left[\right],i=0

    ② while i<L do

    ③ if {Y}^{\mathrm{A}}\left[i\right]={=\mathrm{B}}\;\mathrm{t}\mathrm{h}\mathrm{e}\mathrm{n}

    ④ 令start=iend=i

    i+=1;

    ⑥ while i<L and {Y}^{\mathrm{A}}\left[i\right]=={\rm{I}} do

    end=i

    i+=1;

    ⑨ end while

    {Y}^{\mathrm{P}}.append\left(\right(start,end,{Y}^{\mathrm{S}}\left[start\right]\left)\right)

    ⑪ else

    i+=1;

    ⑬ end if

    ⑭ end while

    为验证本文所提出的模型的有效性,本文使用了数据集Twitter2015[8]和Restaurant2014[20]进行实验. Twitter2015[8]是一个多模态数据集,其包含文本内容、图片、方面信息以及情感类别信息. Restaurant2014[20]属于文本领域的方面级情感分类数据集,其不包含图片信息. 本文数据集的训练集、测试集以及验证集与来源保持一致. 表1表2分别是这2个数据集的统计信息.

    表  1  Twitter2015数据集统计信息
    Table  1.  Statistics of Twitter2015 Dataset
    数据集情感数量句子数量方面数量
    POSNEGNeutral
    训练集9283681 88321013179
    验证集3031496707271122
    测试集3171136076741037
    下载: 导出CSV 
    | 显示表格
    表  2  Restaurant2014数据集统计信息
    Table  2.  Statistics of Restaurant2014 Dataset
    数据集评分等级数量句子数量方面数量
    level 1level 2level 3level 4
    训练集17476455207324362985
    验证集41716211718608714
    测试集728196196148001134
    注:level是按评分等级划分的数据集.
    下载: 导出CSV 
    | 显示表格

    为了初始化模型中的词嵌入式表示,本文使用了Zhang等人[7]在3000万条推特上预训练好的GloVe[29]词嵌入式词典. 词嵌入式表示的维度为200,不在词典内的单词被随机初始化,并服从−0.25~0.25的均匀分布. 字符嵌入式表示、词性嵌入式表示的维度分别为30和16,且随机初始化服从−0.25~0.25的均匀分布. 句子和单词最大的长度都取数据集中的最大值,不满足最大值的单词或句子采用填充的方式使所有单词或句子等长. BiLSTM输出的隐藏向量维度为200,方面术语提取模块的私有特征维度为200,情感分类模块私有特征的维度为100. 方面术语提取和情感分类2个模块的损失权重分别为0.5和0.5. 训练过程中,周期(epoch)为50,批大小为20,优化器为Adam,学习率为0.001.

    在实验中用作对比的模型主要包括文本领域和多模态领域的模型.

    CMLA+TCap和DECNN+TCap.CMLA[30]和DECNN[31]是方面术语提取任务中经典的模型,TCap[32]是方面级情感分类领先的方法,本文分别将2个方面术语提取模型和1个情感分类模型进行整合,形成2个流水线模型.

    1)MNN[26]. 该模型是使用联合标注方法的方面术语提取和情感分类统一的模型.

    2)E2E-AESC[33]. 该模型是使用联合标注方法,并以观点词提取为辅助任务的方面术语提取和情感分类统一的模型.

    3)DOER[34]. 该模型是联合训练方面术语提取和情感分类的多任务统一框架.

    4)RACL[21]. 是将方面术语提取、观点词提取、情感分类统一的多任务模型,该模型使用多层叠加的框架.

    5)UMAS-Text. 该模型是本文提出的方面术语提取和方面级情感分类的统一框架,它将模型中关于视觉特征处理的网络层去除,变成处理纯文本数据的模型.

    1)VAM[9].VAM使用视觉注意机制和门控机制的多模态方面术语提取模型.

    2)ACN[7].ACN使用文本注意机制、视觉注意机制和门控机制的多模态方面术语提取模型.

    3)UMT[10].UMT使用Bert预训练模型表征文本的多模态方面术语提取模型.

    4)Res-RAM和Res-MGAN.它们是2个方面级情感分类模型. 采用Hazarika 等人[35]提出的多模态融合方法将视觉特征和RAM[36]或MGAN[37]的文本特征融合,最后采用softmax层分类.

    5)Res-RAM-TFN和Res-MGAN-TFN.它们是采用Zadeh等人[5]提出的多模态融合方法将视觉特征和RAM或MGAN的文本特征融合进行方面级情感分类的模型.

    6)MIMN[38]. MIMN是采用多跳记忆网络建模方面术语、文本和视觉之间交互关系的方面级情感分类模型,具有较高的性能.

    7)EASFN[8]. EASFN是目前多模态领域最新的方面级情感分类模型.

    8)ACN-ESAFN. ACN-ESAFN是使用ACN[7]获取方面术语、ESAFN[8]获取方面级情感的流水线模型.

    9)UMT-ESAFN. UMT-ESAFN是使用UMT[10]获取方面术语、ESAFN[8]获取方面级情感的流水线模型.

    10)UMAS-AE. UMAS-AE是将本文提出的模型中的共享特征模块和方面术语提取模块组合成单任务的方面术语提取模型.

    11)UMAS-SC. UMAS-SC是将本文提出的模型中的共享特征模块和情感分类模块组合成单任务的方面级情感分类模型.

    12)UMAS-Pipeline. UMAS-Pipeline是将独立的UMAS-AE和UMAS-SC模型使用流水线方式合并而成的模型.

    13)UMAS:UMAS是本文提出的多模态方面术语提取和方面级情感分类的统一框架,由2个模块共享浅层的特征表示.

    本文使用精确率(precision,P)、召回率(recall,R)、F1评价方面术语提取模型的性能,以下简记为AE-P、AE-R、AE-F1;使用准确率(accuracy,ACC)、F1评价情感分类的性能,简记为SC-ACC,SC-F1;使用F1评价方面-情感对提取的性能,简记为AESC-F1,即当且仅当方面术语提取和情感预测同时正确时记为预测正确.

    表3报告了本文所提出的模型UMAS在文本领域与现有方法的性能对比. 在文本数据集Restaurant2014上,UMAS的F1在方面术语提取、情感分类2个子任务上相较于第2优秀的模型RACL-GloVe的F1值分别提升了0.21个百分点和1.9个百分点,且方面-情感对的提取表现也是最好的. 说明UMAS在删除视觉处理的相关网络后,在文本领域也具有良好的表现.

    表  3  Restaurant2014数据集上UMAS-Text与现有方法的性能对比
    Table  3.  Performance Comparison of UMAS-Text and Existing Methods on Restaurant2014 Dataset %
    模型AE -F1SC-F1AESC-F1
    CMLA+TCap81.9171.3265.68
    DECNN+TCap82.7971.7766.84
    MNN83.0568.4563.87
    E2E-AESC83.9268.3866.6
    DOER84.6364.568.55
    RACL85.3774.4670.67
    UMAS-Text85.5876.3670.70
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格

    表4表5报告了UMAS在多模态领域与现有方法在方面术语提取和方面级情感分类2个子任务上的性能对比. 在多模态数据集Twitter2015上,UMAS与当前3个方面术语提取模型相比,F1值分别提升了21.78个百分点、4.25个百分点、0.15个百分点,比使用BERT预训练的方面术语提取模型UMT略有优势. 方面术语提取的P值比ACN高了1.99个百分点. 然而R值比UMT模型低了2.22个百分点. 这一定程度上体现了UMAS相对于UMT在识别方面时边界更加严格,提升了P值的同时损失了R值. 在情感分类任务中,UMAS的性能超过了所有的基线模型,比当前最新的模型ESAFN的F1值提高了5.97个百分点、ACC提高了0.1个百分点.

    表  4  Twitter2015数据集上AE性能对比
    Table  4.  Performance Comparison of AE on Twitter2015 Dataset %
    模型AE -PAE -RAE -F1
    VAM58.1056.7057.39
    ACN79.1071.1774.92
    UMT78.5079.5679.02
    UMAS(本文)81.0977.3479.17
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格
    表  5  Twitter2015数据集上SC性能对比
    Table  5.  Performance Comparison of SC on Twitter2015 Dataset %
    模型SC-ACCSC-F1
    Res-RAM71.5564.68
    Res-RAM-TFN69.9161.49
    Res-MGAN71.6563.88
    Res-MGAN-TFN70.364.14
    MIMN71.8465.69
    EASFN73.3867.37
    UMAS(本文)73.4873.34
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格

    表6报告了UMAS和当前多模态流水线方法的性能对比. UMAS在多模态数据集上提取方面-情感对的F1值为58.05%,分别高于现有流水线方法2.49个百分点和1.16个百分点,且时间效率是现有方法的16.3倍和16倍,体现了本文所提出的统一框架具有最优的性能.

    表  6  Twitter2015数据集上AESC性能对比
    Table  6.  Performance Comparison of AESC on Twitter2015 Dataset
    模型AESC-F1/%运行时间/s
    ACN-ESAFN55.56163
    UMT-ESAFN56.89160
    UMAS(本文)58.0510
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格

    表7报告了UMAS和单任务模型的性能对比. 结果表明,UMAS相比于方面术语提取和情感分类单任务模型,性能都有一定的提升,F1值分别提升了0.01个百分点和2.55个百分点,方面术语提取的ACC提升了2.79个百分点,情感分类的ACC提升了2.22个百分点. 然而,UMAS中方面术语提取的R值相对于单任务下降了2.7个百分点,这可能是因为在UMAS中方面的特征表示受到了情感模块的影响. 此外,UMAS的AESC性能与2个单任务串联的流水线模型对比,UMAS对方面-情感对提取性能有1.29个百分点的提升. 结果表明了底层的特征共享对2个子任务的性能提升都有帮助,通过建立2个任务之间的语义联系有利于提高方面-情感对提取的准确率.

    表  7  统一框架和单任务模型的对比
    Table  7.  Comparison of Unified Model and Single-Task Model %
    模型AE-PAE-RAE-F1SC-ACCSC-F1AESC-F1
    UMAS-AE78.3080.0479.16
    UMAS-SC71.2670.79
    UMAS-Pipeline78.3080.0479.1671.2670.7956.76
    UMAS(本文)81.0977.3479.1773.4873.3458.05
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格

    结合表4表5表7,可以看出本文的方面术语提取单任务模型比ACN的性能高了4.24个百分点,验证了词性特征对方面术语提取的重要影响. 相比于其他方面级情感分类,本文的单任务情感分类模型也有较大的改善,说明观点词和位置信息对情感分类有一定的帮助.

    首先介绍UMAS的7个变体模型.

    1)UMAS-no_visual. 删除视觉特征.

    2)UMAS-no_POS_features. 删除词性特征.

    3)UMAS-no_opinion. 删除情感分类模块中观点词特征.

    4)UMAS-no_self_attention. 删除情感分类模块中情感特征的自注意机制.

    5)UMAS-no_gate_fusion. 将情感分类模块中私有特征获取部分的门控融合机制改为直接拼接操作.

    6)UMAS-special. 只保留情感模块中私有特征部分中的特有情感特征,删除共享文本特征.

    7)UMAS-share. 只保留情感模块中私有特征部分中的共享文本特征,删除特有情感特征.

    表8报告了变体模型的性能. 通过分别消除视觉特征、词性特征、观点特征、情感模块的自注意机制、情感模块私有特征的门控融合机制、情感模块的共享文本特征、情感模块的特有特征,验证了各个部分存在的作用. 由于2个模块之间存在参数的共享,所以一个模块的结构的变化不仅影响自身,而且影响另一个模块. 表8的第1行和最后1行的对比显示了视觉特征对方面术语提取和情感分类模块都有明显的性能提升,F1值分别提升了2.45个百分点和2.07个百分点. 情感分类模块中的观点词特征将方面级情感分类的性能整体提升了2.61个百分点. 情感模块的自注意机制对该模块的性能有2.83个百分点的提升. 情感模块私有特征获取的门控融合机制,既考虑了方面对情感预测的影响,也考虑了情感特征本身的重要性,将情感分类的F1提升了3.59个百分点,AESC性能提升了2.35个百分点. 根据表8最后3行的结果,可以看出在情感分类模块中的私有特征部分单独使用共享特征或特有特征的效果都不好,将这二者融合是最佳的选择.

    表  8  消融实验结果
    Table  8.  Results of Ablation Experiment %
    模型AE-PAE-RAE-F1SC-ACCSC-F1AESC-F1
    UMAS-no_visual77.6775.8076.7271.2671.2754.76
    UMAS-no_POS_features76.5977.6377.1171.2670.7354.69
    UMAS-no_opinion75.1679.3677.2073.0072.2855.44
    UMAS-no_self_attention75.8779.4677.6371.3670.5155.77
    UMAS-no_gate_fusion75.3078.7877.0271.2669.7555.70
    UMAS-special76.4677.0576.7571.3671.3654.76
    UMAS-share75.4478.7877.0868.2767.9152.55
    UMAS(本文)81.0977.3479.1773.4873.3458.05
    注:加粗数字表示最优结果.
    下载: 导出CSV 
    | 显示表格

    为了说明情感分类模块私有特征部分不同选择的不同效果,本节进行了相关的可视化分析. 首先,情感分类模块的私有特征可以有3种选择:情感模块私有文本编码器输出的特有情感表示、共享文本编码器输出的共享文本表示、特有情感表示和共享文本表示的融合特征. 为了方便说明,将这3种特征对应的模型记为UMAS-special,UMAS-share,UMAS-combine. 表9说明了图3图4涉及的统计量的含义.

    表  9  统计量说明
    Table  9.  Instruction of Statistics
    统计对象统计量说明
    combine_true_special_wrongUMAS-combine 预测正确而UMAS-special 预测错误的数量. 体现了UMAS-combine 对UMAS-special 的纠正能力.
    combine_wrong_special_trueUMAS-combine 预测错误而UMAS-special 预测正确的数量.
    combine_true_share_wrongUMAS-combine 预测正确而UMAS-share 预测错误的数量.
    combine_wrong_share_trueUMAS-combine 预测错误而UMAS-share 预测正确的数量.
    special_contributionUMAS-share 预测错误而UMAS-special 预测正确的数量.体现了UMAS-special 的特殊贡献.
    share_contributionUMAS-special 预测错误而UMAS-share 预测正确的数量.
    下载: 导出CSV 
    | 显示表格
    图  3  不同情感私有特征的结果对比
    Figure  3.  Result comparison of different sentiment private features
    图  4  不同表示对情感分类的贡献
    Figure  4.  Different representations contribute to sentiment classification

    图3显示了不同情感私有特征表示的结果. 首先,在AE模块,UMAS-combine预测正确且UMAS-special预测错误的数量为128,而UMAS-combine预测错误且UMAS-special预测正确的数量为99,说明UMAS-combine对UMAS-special的纠正能力要强于UMAS-special对UMAS-combine的纠正能力,即UMAS-combine模型的性能较优越. 通过图3中其他数据的对比分析,可以发现无论是对方面术语提取还是情感分类,UMAS-combine的性能总是要强于UMAS-special和UMAS-share. 其次,在情感分类模块,UMAS-special预测正确而UMAS-share预测错误的数量为83,而UMAS-share预测正确而UMAS-special预测错误的数量为53,体现了特有情感特征和共享特征对情感模块性能的不同贡献. 图4展示了特有情感特征和共享特征对情感模块的不同贡献程度,特有情感特征的贡献约为60%,共享特征的贡献程度约为40%.

    综上体现了将特有情感特征和共享文本特征进行动态融合的必要性,且特有情感特征对方面级情感分类的贡献比较突出. 同时,也说明了方面术语提取和方面级情感分类2个任务之间既有联系又有区别,既要考虑2个任务之间的交互关系,又要充分考虑任务本身的特征.

    为了解决目前AESC任务流水线方法的不足,本文提出了多模态方面术语提取和方面级情感分类的统一框架UMAS. 该统一框架使用3个共享编码器,即文本、图像、词性编码器构建方面术语提取模块和情感分类模块底层的共享特征模块. 该共享特征模块不仅使模型在训练过程中学习到2个任务之间的语义联系,而且简化了模型. 同时,该统一框架能并行地执行2个子任务,同时输出句子中的多个方面及其对应的情感类别,解决了流水线方法效率低的问题. 此外,本文通过词性标注获取单词的词性,并使用多头自注意机制获取词性特征,将视觉特征、文本特征、词性特征融合作为方面术语提取模块解码器的输入,提升了方面术语提取的性能. 在情感分类模块,本文使用词性识别句子中的观点词,在情感分析中增加对这些观点词的注意权重并考虑位置信息以提升情感分类的性能. 本文所提出的统一框架在Twitter2015和Restaurant2014这2个数据集上相比于其他基线模型都有良好的表现.

    随着transformer,BERT等技术的不断发展,在未来的研究中可以考虑将预训练技术加入到本文模型中以获得更好的特征表示.

    作者贡献声明:周如提出了算法思路和撰写论文;朱浩泽提出了实验方案并负责完成实验;郭文雅、于胜龙、张莹提出指导意见并修改论文.

  • 图  1   一个示例程序采用不同自动向量化方法进行处理的过程

    Figure  1.   Process of various auto-vectorization methods adopted by an example program

    图  2   基于shuffle指令的程序转换示例

    Figure  2.   An example of program transformation based on shuffle instruction

    图  3   扩展变换示例

    Figure  3.   An example of extended transform

    图  4   二元表达式替换示例

    Figure  4.   An example of replacement of binary expression

    图  5   SLP-M的处理流程

    Figure  5.   Process flow of SLP-M

    图  6   转换模式示例

    Figure  6.   An example of conversion pattern

    图  7   同构化转换选择方法示例

    Figure  7.   An example of isomorphism transform selection method

    图  8   不同方法在构造核心函数上的加速比

    Figure  8.   Speedup ratios of various methods on constructing kernel functions

    图  9   构造核心函数自动向量化方法减少的指令代价

    Figure  9.   Reduced instruction costs of auto-vectorization methods on constructing kernel functions

    图  10   不同方法在核心函数上的加速比

    Figure  10.   Speedup ratios of various methods on kernel functions

    图  11   不同操作数量的核心函数代码片段

    Figure  11.   Code fragments of the kernel function with different numbers with opcodes

    图  12   函数gl_render_vb代码片断生成的汇编指令

    Figure  12.   Assembly instructions generated by the code fragments of the function gl_render_vb

    图  13   不同操作类型的核心函数代码片段

    Figure  13.   Code fragments of the kernel function of different types of opcodes

    图  14   多种自动向量化方法对于函数box_UVCoord代码片断生成的汇编指令

    Figure  14.   Assembly instructions for the code fragments of the function box_UVCoord generated by various auto-vectorization methods

    图  15   函数intra16x16_plane_pred_mbaff代码片段

    Figure  15.   Code fragments of the function intra16x16_plane_pred_mbaff

    图  16   函数intra16x16_plane_pred代码片段

    Figure  16.   Code fragments of the function intra16x16_plane_pred

    图  17   多种自动向量化方法对于函数start_pass代码片断生成的汇编指令

    Figure  17.   Assembly instructions for the code fragments of the function start_pass generated by various auto-vectorization methods

    图  18   核心函数自动向量化方法减少的指令代价

    Figure  18.   Reduced instruction costs of auto-vectorization methods on kernel functions

    图  19   不同自动向量化方法在整体基准测试程序集上的加速比

    Figure  19.   Speedup ratios of various auto-vectorization methods on whole benchmarks

    表  1   X的扩展等价表达式

    Table  1   Equivalent Extended Expression of X

    序号X的扩展等价表达式依据的等价关系
    1X+0X+0 = X
    20+X0+X = X
    3X−0X−0 = X
    4X×1X×1 = X
    5XX = X
    6X/1X/1 = X
    7X<<0X<<0 = X
    8X>>0X>>0 = X
    下载: 导出CSV

    表  2   二元表达式替换模式列表

    Table  2   List of Patterns of Replacement for Binary Expressions

    原表达式二元替换等价表达式二元表达式替换的条件
    X+C1XC2C1C2是常数,且C1+C2=0
    X+XX×2
    XC1X+C2C1C2是常数,且C1+C2=0
    X×C1X<<C2C1C2是常数,C1是2的整数次幂,且C1={2^{C_2}}
    X×C1X+XC1是常数2
    X×C1X/C2C1C2是常数,且C1×C2=1
    X/C1X×C2C1C2是常数,C1×C2=1
    X>>C1X×C2C1C2是常数,且C2={2^{C_1}}
    下载: 导出CSV

    表  3   构造函数

    Table  3   Constructed Functions

    测试函数核心代码程序特征 测试函数核心代码程序特征
    s1a[0] =(b[0]+c[0])×5.0;
    a[1] = b[1]+c[1].
    操作个数不同,双精度浮点类型,2条语句 s9a[0] = b[0]/4.0;
    a[1] = b[1]×5.0;
    a[2] = b[2]×6.0;
    a[3] = b[3]×7.0.
    操作类型不同,单精度浮点类型,4条语句
    s2a[0] = b[0]/11.0;
    a[1] = b[1]×13.0.
    操作类型不同,双精度浮点类型,2条语句s10a[0] = b[0]+c[0];
    a[1] =(b[1]+c[1])×5.0;
    a[2] =(b[2]+c[2])/4.0;
    a[3] =(b[3]+c[3])×7.0.
    操作个数和类型不同,单精度浮点类型,4条语句
    s3a[0] = b[0]+11.0;
    a[1] = b[1]×13.0.
    操作类型不同,双精度浮点类型,2条语句s11a[0] = b[0]−4.0;
    a[1] = b[1]×5;
    a[2] = b[2]/4.0;
    a[3] = b[3]×7.
    操作类型不同,单精度浮点类型,4条语句
    s4a[0] = b[0];
    a[1] = b[1]×11;
    a[2] = b[2]×11;
    a[3] = b[3]×11.
    操作个数不同,整数类型,4条语句s12a[0] = b[0]+c[0];
    a[1] =(b[1]+c[1])×5.0;
    a[2] =(b[2]+c[2])×6.0;
    a[3] =(b[3]+c[3])×7.0.
    操作个数不同,双精度浮点类型,4条语句
    s5a[0] = b[0]<<2;
    a[1] = b[1]×5;
    a[2] = b[2]×6;
    a[3] = b[3]×7.
    操作类型不同,整数类型,4条语句s13a[0] = b[0]/4.0;
    a[1] = b[1]×5.0;
    a[2] = b[2]×6.0;
    a[3] = b[3]×7.0.
    操作类型不同,双精度浮点类型,4条语句
    s6a[0] = b[0];
    a[1] = b[1]×5;
    a[2] = b[2]<<2;
    a[3] = b[3]×7.
    操作个数和类型不同,整数类型,4条语句s14a[0] = b[0]+c[0];
    a[1] =(b[1]+c[1])×5.0;
    a[2] =(b[2]+c[2])/4.0;
    a[3] =(b[3]+c[3])×7.0.
    操作个数和类型不同,双精度浮点类型,4条语句
    s7a[0] = b[0]−4;
    a[1] = b[1]×5;
    a[2] = b[2]<<2;
    a[3] = b[3]×7.
    操作类型不同,整数类型,4条语句s15a[0] = b[0]−4.0;
    a[1] = b[1]×5;
    a[2] = b[2]/4.0;
    a[3] = b[3]×7.
    操作类型不同,双精度浮点类型,4条语句
    s8a[0] = b[0]+c[0];
    a[1] =(b[1]+c[1])×5.0;
    a[2] =(b[2]+c[2])×6.0;
    a[3] =(b[3]+c[3])×7.0.
    操作个数不同,单精度浮点类型,4条语句s16a[0] = b[0]−4.0;
    a[1] = 5×b[1];
    a[2] = b[2]/4.0;
    a[3] = b[3]×7.
    操作类型不同,双精度浮点类型,4条语句
    下载: 导出CSV

    表  4   核心函数描述

    Table  4   Description of the Kernel Functions

    序号函数描述类型语言
    1gl_render_vbOpenGL函数库 (SPEC CPU 2000 177)操作个数不同C
    2u2sPERL编程语言(SPEC CPU 2006 400)操作个数不同C
    3calc_pair_energy生物系统模拟(SPEC CPU 2006 444)操作个数不同C++
    4start_pass_fdctmgr图像压缩(MediaBench2 cjpeg)操作类型不同C
    5ssim_end1x264编解码(SPEC CPU 2017 625)操作类型不同C
    6box_UVCoord影像光线追踪(SPEC CPU 2006 453)操作类型不同C++
    7intra16x16_plane_pred_mbaffx264编解码(SPEC CPU 2017 625)操作个数和类型不同C
    8intra16x16_plane_predx264编解码(SPEC CPU 2017 625)操作个数和类型不同C
    9start_pass图像压缩(MediaBench2 cjpeg)操作个数和类型不同C
    下载: 导出CSV
  • [1] 高伟,赵荣彩,韩林,等. SIMD自动向量化编译优化概述[J]. 软件学报,2015,26(6):1265−1284 doi: 10.13328/j.cnki.jos.004811

    Gao Wei, Zhao Rongcai, Han Lin, et al. Research on SIMD auto-vectorization compiling optimization[J]. Journal of Software, 2015, 26(6): 1265−1284 (in Chinese) doi: 10.13328/j.cnki.jos.004811

    [2]

    Maleki S, Gao Yaoqing, Garzar M J, et al. An evaluation of vectorizing compilers[C] //Proc of the 20th IEEE Parallel Architectures and Compilation Techniques. Piscataway, NJ: IEEE, 2011: 372−382

    [3] 冯竞舸,贺也平,陶秋铭. 自动向量化:近期进展与展望[J]. 通信学报,2022,43(3):180−195 doi: 10.11959/j.issn.1000-436x.2022051

    Feng Jingge, He Yeping, Tao Qiuming. Auto-vectorization: Recent development and prospect[J]. Journal on Communications, 2022, 43(3): 180−195 (in Chinese) doi: 10.11959/j.issn.1000-436x.2022051

    [4]

    Kennedy K, Allen J R. Optimizing Compilers for Modern Architectures: A Dependence-based Approach [M]. San Francisco, CA: Morgan Kaufmann, 2001

    [5]

    Larsen S, Amarasinghe S. Exploiting superword level parallelism with multimedia instruction sets[J]. Programming Language Design and Implementation, 2000, 35(5): 145−156

    [6] 李玉祥,施慧,陈莉. 面向向量化的局部数据重组[J]. 小型微型计算机系统,2009,30(8):1528−1534

    Li Yuxiang, Shi Hui, Chen Li. Vectorization-oriented local data regrouping[J]. Computer System, 2009, 30(8): 1528−1534 (in Chinese)

    [7]

    Porpodas V, Magni A, Jones T M. PSLP: Padded SLP automatic vectorization[C] //Proc of the 13th IEEE Code Generation and Optimization. Piscataway, NJ: IEEE, 2015: 190−201

    [8]

    Porpodas V, Rocha R C O, Góes L F W. Look-ahead SLP: Auto-vectorization in the presence of commutative operations[C] //Proc of the 16th ACM Code Generation and Optimization. New York: ACM, 2018: 163−174

    [9]

    Porpodas V, Rocha R C O, Brevnov E, et al. Super-Node SLP: Optimized vectorization for code sequences containing operators and their inverse elements[C] //Proc of the 17th ACM Code Generation and Optimization. New York: ACM, 2019: 206−216

    [10]

    Feng Jingge, He Yeping, Tao Qiuming, et al. An SLP vectorization method based on equivalent extended transformation[J/OL]. Wireless Communications and Mobile Computing, 2022[2022-04-20].https://downloads.hindawi.com/journals/wcmc/2022/1832522.pdf

    [11]

    Porpodas V, Ratnalikar P. PostSLP: Cross-region vectorization of fully or partially vectorized code[C] //Proc of the 32nd ACM Workshop on Languages and Compilers for Parallel Computing. New York: ACM, 2019: 15−31

    [12]

    Rocha R C O, Porpodas V, Petoumenos P, et al. Vectorization-aware loop unrolling with seed forwarding[C/OL] //Proc of the 29th ACM Int Conf on Compiler Construction. New York: ACM, 2020[2022-04-23].https://rcor.me/papers/cc20valu.pdf

    [13] 魏帅,赵荣彩,姚远. 面向SLP的多重循环向量化[J]. 软件学报,2012,23(7):1717−1728 doi: 10.3724/SP.J.1001.2012.04106

    Wei Shuai, Zhao Rongcai, Yao Yuan. Loop-nest auto-vectorization based on SLP[J]. Journal of Software, 2012, 23(7): 1717−1728 (in Chinese) doi: 10.3724/SP.J.1001.2012.04106

    [14] 高伟,韩林,赵荣彩,等. 向量并行度指导的循环SIMD向量化方法[J]. 软件学报,2017,28(4):925−939 doi: 10.13328/j.cnki.jos.005029

    Gao Wei, Han Lin, Zhao Rongcai, et al. Vectorization method for loops guided by SIMD parallelism[J]. Journal of Software, 2017, 28(4): 925−939 (in Chinese) doi: 10.13328/j.cnki.jos.005029

    [15] 赵捷,赵荣彩. 基于有向图可达性的SLP向量化识别方法[J]. 中国科学:信息科学,2017,47(3):310−325 doi: 10.1360/N112016-00146

    Zhao Jie, Zhao Rongcai. Identifying superword level parallelism with directed graph reachability[J]. SCIENTIA SINICA Informationis, 2017, 47(3): 310−325 (in Chinese) doi: 10.1360/N112016-00146

    [16]

    Shin J, Hall M, Chame J. Superword-level parallelism in the presence of control flow[C] //Proc of the 3rd IEEE Code Generation and Optimization. Piscataway, NJ: IEEE, 2005: 165−175

    [17]

    Chen Y, Mendis C, Amarasinghe S. All you need is superword-level parallelism: Systematic control-flow vectorization with SLP [C] //Proc of the 43rd ACM SIGPLAN Int Conf on Programming Language Design and Implementation. New York: ACM, 2022: 301−315

    [18]

    Huh J, Tuck J. Improving the effectiveness of searching for isomorphic chains in superword level parallelism[C] //Proc of the 50th ACM Int Symp on Microarchitecture. New York: ACM, 2017: 718−729

    [19]

    Liu Jun, Zhang Yuanrui, Jang O, et al. A compiler framework for extracting superword level parallelism[C] //Proc of the 33rd ACM Programming Language Design and Implementation. New York: ACM, 2012: 347−358

    [20]

    Mendis C, Amarasinghe S. GoSLP: Globally optimized superword level parallelism framework[C/OL] //Proc of the 30th ACM Object Oriented Programming Systems Languages and Applications. New York: ACM, 2018[2022-03-12].https://dl.acm.org/doi/pdf/10.1145/3276480

    [21] 吕鹏伟,刘从新,赵一明,等. 基于动态规划的自动向量化方法[J]. 北京理工大学学报,2017,37(5):544−550 doi: 10.15918/j.tbit1001-0645.2017.05.020

    Lü Pengwei, Liu Congxin, Zhao Yiming, et al. Auto-vectorization method based on dynamic programming[J]. Transactions of Beijing Institute of Technology, 2017, 37(5): 544−550 (in Chinese) doi: 10.15918/j.tbit1001-0645.2017.05.020

    [22]

    Porpodas V, Jones T M. Throttling automatic vectorization: When less is more[C] //Proc of the 24th IEEE Parallel Architecture and Compilation. Piscataway, NJ: IEEE, 2015: 432−444

    [23]

    Porpodas V, Rocha R C O, Góes L F W. VW-SLP: Auto-vectorization with adaptive vector width[C/OL] //Proc of the 28th IEEE Parallel Architectures and Compilation Techniques. Piscataway, NJ: IEEE, 2018[2022-03-11]. http://vporpo.me/papers/vwslp_pact2018.pdf

    [24] 赵博,赵荣彩,李雁冰,等. 类型转换语句的SLP发掘方法[J]. 计算机科学,2014,41(11):16−21 doi: 10.11896/j.issn.1002-137X.2014.11.004

    Zhao Bo, Zhao Rongcai, Li Yanbing, et al. SLP exploitation method for type conversion statements[J]. Computer Science, 2014, 41(11): 16−21 (in Chinese) doi: 10.11896/j.issn.1002-137X.2014.11.004

    [25]

    Liu Yuping, Hong Dingyong, Wu Janjan, et al. Exploiting SIMD asymmetry in ARM-to-x86 dynamic binary translation [J/OL]. Transactions on Architecture and Code Optimization, 2019[2022-02-13].https://dl.acm.org/doi/pdf/10.1145/3301488

    [26]

    Mendis C, Jain A, Jain P, et al. Revec: Program rejuvenation through revectorization[C]//Proc of the 28th ACM Int Conf on Compiler Construction. New York: ACM, 2019: 29−41

    [27]

    Chen Yishen, Mendis C, Carbin M, et al. VeGen: A vectorizer generator for SIMD and beyond[C] //Proc of the 26th ACM Int Conf on Architectural Support for Programming Languages and Operating Systems. New York: ACM, 2021: 902−914

    [28]

    Fritts J E, Steiling F W, Tucek J A, et al. MediaBench II video: Expediting the next generation of video systems research[J]. Microprocessors and Microsystems, 2009, 33(4): 301−318 doi: 10.1016/j.micpro.2009.02.010

    [29]

    Jia Zhihao, Padon O, Thomas J, et al. TASO: Optimizing deep learning computation with automatic generation of graph substitutions [C] //Proc of the 27th ACM Symp on Operating Systems Principles. New York: ACM, 2019: 47−62

    [30]

    Willsey M, Nandi C, Wang Y R, et al. Egg: Fast and extensible equality saturation[C/OL] //Proc of the 48th ACM SIGPLAN Symp on Principles of Programming. New York: ACM, 2021[2022-03-12].https://dl.acm.org/doi/pdf/10.1145/3434304

    [31]

    Lattner C, Adve V. The LLVM compiler framework and infrastructure tutorial[C] //Proc of the 17th Int Workshop on Languages and Compilers for Parallel Computing. Berlin: Springer, 2004: 15−16

    [32] 纪守领,李进锋,杜天宇,等. 机器学习模型可解释性方法、应用与安全研究综述[J]. 计算机研究与发展,2019,56(10):2071−2096 doi: 10.7544/issn1000-1239.2019.20190540

    Ji Shouling, Li Jinfeng, Du Tianyu, et al. Survey on techniques, applications and security of machine learning interpretability[J]. Journal of Computer Research and Development, 2019, 56(10): 2071−2096 (in Chinese) doi: 10.7544/issn1000-1239.2019.20190540

  • 期刊类型引用(2)

    1. 黄坚会,张江江,沈昌祥,张建标. 基于TPCM可信根的双体系可信终端计算架构. 通信学报. 2025(04): 1-14 . 百度学术
    2. 李旖旎. 基于Intel SGX的工业互联网平台数据隐私保护机制研究. 电脑编程技巧与维护. 2024(06): 70-72 . 百度学术

    其他类型引用(4)

图(19)  /  表(4)
计量
  • 文章访问数:  138
  • HTML全文浏览量:  36
  • PDF下载量:  54
  • 被引次数: 6
出版历程
  • 收稿日期:  2022-05-22
  • 修回日期:  2023-02-08
  • 网络出版日期:  2023-09-19
  • 刊出日期:  2023-11-30

目录

/

返回文章
返回