翟永杰 吴童桐
(华北电力大学自动化系 河北 保定 071003)
随着人工智能技术的不断发展,计算机视觉技术随着深度学习发展不断进步,在图像分类[1-4]、目标检测[5-8]和图像理解[9-13]等各个方面都有了极大的提升。但是深度学习模型效果的提升一方面来源于大模型和大算力,另一方面是在如今的大数据时代能获得大量数据进行训练[14]。
传统的图像分类问题都是有监督学习问题,需要人工对大量的数据进行标注,最著名的ImageNet项目就是一个包含2万多个类别,总计400万幅图像的综合数据库。随着网络时代的到来,人们获取信息的途径越来越广泛,有着大量的图像数据可供使用,但是在实际项目中,不一定就会有已经标注好的大规模数据或者不一定便于获取特定类别的数据,例如某些珍稀动物的图像并不容易获取,样本数量很少,很难实现预期的训练效果。
零样本学习的方法源自半监督学习,半监督学习是通过结合一部分标注样本数据和大部分的未标注样本数据来进行学习[15]。零样本学习的方法通过图像特征的共通性和类别属性空间作为中间知识联系,实现了通过模型的训练,再去识别在训练集未出现的样本类别的方法,改善了传统的图像多分类问题对足够的样本和数据标签的依赖,实现了更好的半监督学习效果。零样本学习方法指在模型训练时,即使某一类别的训练样本未出现,但是通过中间属性空间知道该类别的特征属性,然后通过模型的训练建立图像特征和属性特征之间的联系,便可以将未出现的类别识别出来,这也就是基于属性的直接预测模型(Direct Attribute Prediction,DAP)[16]。
零样本学习方法的成功主要归功于对图像特征的学习和由图像特征空间到类别属性空间映射关系的学习是具有可迁移性的[17],可以应用迁移学习将已学习到的特征提取方法也就是模型的参数迁移到新的任务模型中。利用相似任务间模型学习到的底层特征提取方法的通用性,也可以认为图像识别任务的很多数据和任务是相关的,所以迁移学习可以将从大规模数据集上学习的模型参数应用到特定任务中,从而改善模型效果并且加快模型收敛的速度。
传统的零样本学习方法主要是基于属性的直接预测模型,以人工标注的属性特征作为中间类别描述信息。如图1所示,每一个类别的图像都有着其对应的属性特征,包含对应类别的描述信息。将属性特征和图像特征提取的结果以向量形式进行结合,通常以交叉熵损失函数作为目标进行训练,建立类别、图像、类别属性之间的映射[18]。实际情况下,针对类别进行属性的特征表述,就需要统一标准并进行大量细致的属性标记,这方面会用到大量的人工标记,比单纯标注分类标签要复杂得多。因此利用一种无监督学习词向量训练的方法,这也是语义信息迁移学习的应用,将文本信息作为中间辅助的属性特征,并在词向量的训练过程中对关键信息进行加强。
图1 零样本学习模型
从网络上获取大量无标签的图像数据和文本数据用于模型的训练,但是非结构化的图像特征数据和自然语言的文本数据存在语义鸿沟[19]。图像特征分布和语义空间的潜在语义信息存在偏差,这是图像理解,也可以说在语义和图像结合领域的最大障碍。因此在利用语义信息进行零样本学习方法时,对模型进行改进,加强了语义信息并提取关键信息,与图像特征空间的对应类别图像特征进行匹配。
针对上述问题,本文提出一种基于语义空间信息映射加强的零样本学习方法。主要贡献包括:设计了加强语义信息并将语义信息进行合成分析的方法,改进了整体的训练框架,更好地挖掘与发现语义特征空间和图像特征空间之间特征的相似关联,改善了零样本学习的效果。
基于语义空间信息映射的零样本学习任务所采用的算法模型是基于一种直接预测模型,其基本架构如图2所示。
图2 零样本学习模型
零样本学习模型核心目的是建立一个由图像特征到对应标签所代表类别信息的非线性映射[20]。第一层是图像提取层,该层主体为卷积神经网络,卷积神经网络可以通过图像卷积激活的方式提取图像的局部特征,将经过预处理的图像数据输入到卷积神经网络模型中提取出其对应的图像特征向量,并将其输入到中间层。第三层是类别信息层,包含训练集中出现的类别和未出现的类别的属性描述信息,通常为基于人工标注的属性特征或者基于词向量的语义特征。在训练时,将对应图像的标签输入到类别信息层中,在这一层中获取对应类别信息的特征向量,并将其输入到中间层。在中间层中需要将对应图像特征和类别信息特征建立映射关系,并对该映射关系进行训练。训练时在中间层中训练对应每一个图像特征和类别信息的分类器,当输入某一类别的图像数据时,判定图像特征模型提取的结果是否符合其类别信息,并将偏差作为损失进行最优化训练。
测试时将图像经过特征提取的结果,与类别信息层中各个类别对应的信息对比,以图像特征和类别信息的映射结果最为相似的类别作为分类结果,实现了利用训练集训练模型,并通过类别信息作为中间辅助知识,达到实现测试集中未见过的样本的效果。
在零样本学习方法中,一般而言,无论是训练集中出现的样本,还是在测试时使用的在训练集中未出现的类别样本,都需要提供类别描述信息。本文利用无监督学习方法生成的词向量作为类别描述信息,这样可以用大规模的文本语料进行训练,训练模型为Skip-Gram模型[21],核心是根据词汇去预测其上下文,并针对特定的名词进行数据增强采样,将获得的词向量作为类别描述信息输入到模型中。
本文使用维基百科语料数据进行采样:
The cat has a fatty meat pad.
设定skip-gram预测上下文的范围为3,因此,从输入单词的附近为3的范围内抽取输出单词作为模型的预测结果,经过采样,模型的输入和输出样例为:
[the, cat][the, has][the, a]
[cat, the][cat, has][cat, a][cat, fatty]
[has, the][has, cat][has, a][has, fatty][has, meat]
[a, the][a, cat][a, has][a, fatty][a, meat][a,pad]
…
同理,这句话还可以用上述方式以fatty、meat和pad作为输入对抽取出很多单词对。按照这种方式从输入单词附近抽取需要预测的上下文单词进行词向量的训练,最重要的是要结合图像进行零样本学习。所以,为了加强类别文本所包含的语义信息,使信息更为准确丰富,在从语料库中抽取数据时,针对零样本学习任务出现的类别名称文本进行数据增强,以实现词向量在训练中,对这部分文本进行重复多次采样以对其语义相互关系进行更好的信息加强。
使用维基百科语料的共计大约400万文本段,提取类别库中类别文本和其附近的段落整体,并对类别文本所在的句子进行重复采样,共计10万文本段,并从文本数据中提取出现频率前10 000的单词,包含类别文本,构建词汇表,进行词向量的训练。
Skip-Gram模型如图3所示,输入是单词的one hot向量,设定词向量的维度为300维,也就是隐藏层的单元数,对one hot特征向量建立映射也就是建立了一个对应[10 000,300]维的矩阵,对应词汇表维度和隐藏层单元数,一般被称为嵌入向量。所以词向量又被称为词嵌入(Word Embedding),将输入特征从10 000维的向量转化为300维嵌入向量,最后连接输出层,输出维度和词表相对应,结果为z,使用Softmax多分类激活函数,将输出转化为对各个单词的预测概率:
图3 Skip-Gram模型
(1)
(2)
最终将对应one hot向量映射到隐藏层的值作为对应单词的词向量,实现了将高维稀疏语义空间转化成低维稠密语义空间的词向量,将其进行降维显示,结果如图4所示。
图4 Word Embedding降维显示结果
可以看出,词向量具有可以将相似文本聚类的效果,普通动物、食肉猛兽、植物分别在相似的区域内,表明具有相同属性或者说语义相关的类别文本词向量会接近,这种语义特征和图像特征是具有一定共通性的。词向量训练中对上下文的预测本质上也是一种对词语共现统计特征的学习[22],例如:代表cat的词向量与代表dog的词向量的相似度偏差为a,与代表tree的词向量的偏差为b,映射到图像特征空间中,如果某一幅图片与图片dog特征向量的偏差同样为a,与图片tree特征向量的偏差为b,于是可以判断这幅图片为cat。这就是词向量可以用于零样本学习的类别信息的原因,虽然语义空间和图像特征空间存在差异,但是其中包含可用于图像区分的信息。本文在使用时对存在于类别库中的特定文本进行了数据增强,加强了其中包含的信息。
词向量的信息和图像特征存在偏差,为了将词向量代表的语义特征和图像特征之间的映射关系进行加强,本文在词向量后接一个全连接层来用于语义信息的分析与合成,其整体模型如图5所示。
图5 基于语义信息映射加强的模型
CNN图像特征提取部分是基于VGG16的卷积神经网络模型,模型输入图片大小是224×224×3,经过第一个conv×2和max pool卷积模块,是由两层conv和一层max pooling组成,其中conv采用ReLU激活函数,并使用最大池化的方法,模块输出为112×112×128。同理将其继续输入到第二个conv×2和max pool卷积模块、第三个conv×3和max pool卷积模块、第四个conv×3和max pool卷积模块,最后经过一个conv和max pool层并将其展开生成4 096维的向量,并添加一个全连接层输出为1 024维的向量t,使用tanh激活函数,其输出为[-1,1]。
(3)
利用式(3)对向量中各个元素进行归一化处理以便于进行余弦相似度的计算。VGG卷积模型如图6所示,该模型提取出代表图像的特征向量。
图6 VGG图像特征提取模型
另外,将由无监督学习得到的词向量作为类别描述信息输入到模型中。图像总计有190类图片,将其对应每一个类别的词向量组合起来得到一个类别文本词向量库,其大小为300×190,其中300为词向量的维度,将其连接全连接层进行语义的分析和合成,这也是用来加强语义信息的一种方法,自动匹配语义和图像中的信息关键点,有助于语义和图像之间进行映射。全连接层输出维度为1 024,同样在此层设定激活函数为tanh,并以此作为代表类别描述信息的语义向量,其代表语义向量β。
将图像特征向量α和语义向量β进行匹配,同为1 024维,以其余弦相似度作为向量之间相似匹配的距离度量,将图像特征和语义特征在高维空间进行映射。将图像特征向量1 024×1和由类别文本词向量库生成的语义向量库1 024×190中每个类别代表的语义向量进行余弦相似度计算,得到190维向量S,计算公式为:
(4)
S中每一项对应图像和库中各个类别的相似程度,余弦相似度最小的类别即为模型预测图片的类别。
使用Python语言,利用TensorFlow 1.1搭建实验模型,实验环境是Ubuntu 16.04版本训练服务器,配备4块1080Ti显卡。
本文使用的数据集共计37 221幅图片,包含190类图片,每类有人工标注的30维属性特征用作对比实验。采用本文所提出的基于语义映射加强的零样本识别方法,重复10次随机选出160类样本作为训练集,30类样本作为测试集,训练集和测试集样本类别不重合。
同时针对样本库中出现的数量较多的类别,如动物类(32类)、植物类(18类)、昆虫类(16类)、家具类(10类)、交通工具类(8类),这些类别图像数据超过3 000幅的大类单独拆分出来2 000幅图片作为测试集,测试模型对各个类别的零样本学习效果的效果。
在训练阶段,首先对训练集样本数据进行扩充,为了平衡样本空间内各类别图片的数目,对出现次数较少的类别样本数据进行增强,采用翻转的方法进行扩充。将训练图像数据输入到模型中,得到图像特征向量和每个类别代表的语义特征向量进行余弦相似度计算的结果S,其分别对应190个类别的匹配程度评分。
一般而言,损失函数就是预测值和真实值之间的差异,零样本学习要实现对未知样本预测,在训练时更需要建立准确的由图像特征空间到语义空间的映射。传统零样本学习的损失函数是由输入图像特征提取出的图像特征向量和其对应类别的语义特征向量之间的差值构成,本文结合对比损失[23]的思路,以其作为损失函数的基础。
设类别总数为N,训练集中图像相匹配的第k类图像样本的余弦相似度为Sk+,不匹配类别的余弦相似度为Sk-,且i≠k,i=1,2,…,N。对Si-的值进行求和,取平均值的负数,与相匹配类别的余弦相似度Sk+相加,并使用SGD作为损失函数的优化器。损失函数计算式表示为:
(5)
这样处理可以使得图像特征向量与语义空间中正确类别语义特征向量的相似度更高,与不正确类别语义特征向量的相似度更低。一方面可以将各个类别的特征向量在高维空间中分割开;另一方面便于之后出现在训练集中未出现的类别时,能更准确匹配到正确样本类别对应的特征向量。通过这种方式实现了语义空间信息到图像的映射加强,提高了成对的图像特征和语义特征的匹配程度。
使用在准备阶段被专门抽出测试集样本验证结果,保证了测试集样本类别和模型训练时训练集样本类别不重合,且模型不能经过预训练。
测试时,将测试集的图像输入到图像特征提取模型中,和样本类比库中对应每一个类别文本的语义向量进行匹配计算,得到图像特征和每个类别语义向量的余弦相似度计算的190维向量S,使用最近邻法判定。向量S中余弦相似度值最小者为图像最为可能的匹配类别,预测结果可能出现训练集中出现的样本类别,也可能预测为训练集中未见过的样本类别,这样也就实现了零样本学习方法。
为了验证本文所提出的语义空间信息映射加强的方法,本文实验和基于属性特征的零样本识别方法进行对比,分别验证在基于语义空间信息模型的基础上,词向量文本训练数据增强、词向量连接全连接层进行语义分析和合成、训练过程中针对正负余弦结合基于对比损失进行优化等各个改进的策略效果。最终训练集(经过训练的样本)正确率和测试集(未训练的样本)正确率如表1所示。
表1 模型对比正确率 %
使用训练集对图像模型进行测试,主要是为了证明在建立的模型中,图像和语义之间建立映射匹配的效果。因为训练集中样本都是经过训练的图片,所以对于语义空间映射加强的方法,训练集效果的提升对验证零样本学习的效果无意义,但是也可以说明这些方法对建立图像和语义之间的映射是存在帮助的。
零样本学习的效果主要是由验证过程中对未知样本的分类能力决定,以测试集正确率确定模型改进的效果。可以看出,如果使用基于属性的零样本模型和基本的语义模型对比,基础语义模型的测试集正确率反而更低一些,说明了语义和图像之间存在偏差。
在使用基础语义模型情况下,使用词向量的文本训练数据增强的方法,其正确率能够小幅度提升,由43.3%到45.8%,提升了2.5个百分点,说明了通过关键文本数据的增强可获得更多的类别相关信息。不经过文本数据的增强,直接将词向量经过全连接层对语义进行分析与合成之后,正确率提升到了50.2%,说明通过全连接层语义信息的分析和合成极大加强了语义空间信息映射的效果,起到了关键的作用。同时进行词向量增强和连接全连接层,能够实现获得更好的语义特征向量的效果,正确率提升到了50.7%。最后,基于对比损失的思路的改进损失函数,将正确率提升到了52.1%,更好地搭建了由语义空间到图像空间的映射。
通过验证不同类别的图像分离出来用作测试集的效果,将之前拆分出来的动物类、植物类、昆虫类、家具类和交通工具类分别作为测试集,以验证信息映射加强对各个类别图像零样本识别的效果,均进行多次重复实验取正确率均值。各个类别测试集的正确率如表2所示。
表2 不同类别测试正确率 %
可以看出,基于属性的零样本学习模型的各个类别的图片样本识别效果是存在差距的,其原因在于属性特征和图像特征的对应情况,对效果较好的动物类、家具类,其图像颜色、特征等属性可能比较突出,从而更好地和属性特征进行了结合匹配。使用语义模型能够通过语义信息改进类似昆虫类、植物类的零样本分类效果,这就是使用语义模型能够提升零样本分类效果的一部分原因,但是其整体上因为语义和图像偏差的问题,效果不好。在进行语义空间的信息映射之后,其整体效果获得了提升,对各个类别的样本测试的效果都获得了提升。
本文基于使用词向量进行零样本学习方法进行研究,提出了基于语义空间信息映射加强的零样本学习方法,主要改进为:(1)在词向量的无监督学习过程中,针对图像样本库中出现类别的文本进行重复采样,以获得更充分的语义信息。(2)针对词向量连接全连接层作为语义特征向量与图像特征向量对应,这样对语义信息进行了分解和合成,能够更好地和图像特征形成映射。(3)模型训练过程中,采用对比损失的原理,对基于余弦相似度的损失函数进行了改进,使得图像特征空间和语义特征空间的对应类别匹配程度更好。实验结果和评估验证了上述对语义空间信息映射加强的零样本学习方法的有效性。