基于孪生变分自编码器的小样本图像分类方法

2021-07-05 10:56王德文魏波涛
智能系统学报 2021年2期
关键词:编码器正确率分类

王德文,魏波涛

(华北电力大学 控制与计算机工程学院,河北 保定 071000)

大量的图像样本数据和强大的计算资源,使得深度学习在图像处理领域有着广阔的应用前景。深度学习从大量的样本中学习样本的特征分布,然后经过多次迭代优化各层权重,最后通过分类器实现图像分类[1-3]。但是在一些特殊或者难以复现的场景中,难以获得足够的样本[4]。由于样本数量很少,使用深层神经网络往往会导致过拟合的现象出现,减少网络层数则会影响特征提取,导致分类正确率下降[5]。小样本图像分类现在仍是深度学习中一个重要的研究问题[6]。

小样本学习问题由李飞飞等[7]于2006年提出,使用贝叶斯的方法在一个或少数几个图像学习问题中成功提取出了信息模型。文献[8]于2015年提出分层贝叶斯模型,该模型能从少量样本中完成计算任务,并且达到了相当于人类水平的识别率。随后迁移学习的提出给小样本学习带来了新的处理方法[9]。文献[10]提出一种基于堆栈降噪自编码与支持向量回归机的混合模型,在相似源域大数据上预训练混合模型借助对该知识的迁移,在目标域微调该混合模型,从而提升支持向量回归机在小样本噪声数据上的学习预测精度。

目前对于小样本图像分类问题,主要有增加样本数量和根据问题选择特定算法两种方式[11-12]。最初的样本数量增强技术,例如原始样本的旋转、翻转和增加对比度等方法,在一定程度上解决了样本的数量问题,但是往往因为相似度过大,产生过拟合现象。如今,统计学上的各种采样方法、生成对抗网络的提出,为样本的数量增强提供了新的解决思路[13]。文献[14]采用Bootstrap法来解决电力负荷数据少的问题,利用放回重复抽样的方法得到新的样本,利用一种类比关系来进行统计推断,将小样本转换为大样本问题,但是该方法会造成被估参数的均值过分依赖样本子集的情况,不利于参数估计的稳健性。根据研究问题的不同,选择特定的算法也可以显著地提高实验效果[15-16]。文献[17]提出了利用蒙特卡洛随机试验可以对特征参量进行统计估计的特性,计算高光谱图像的最优降维特征数,对小样本的高光谱图像进行降维,实验证明使用该方法后图像的分类精度有了较大提高。但是,蒙特卡罗的结果和准确性很大程度依赖于母体所建立的数学模型。

2005年Chopra等[18]第一次提出了孪生网络的结构,该方法在人脸识别数据集上进行训练和测试,取得了很好的识别效果。孪生网络创新地采用了两个样本组成一对作为神经网络的输入的结构。在不改变样本数量的条件下,增加了整体样本循环一个批次的训练次数,更有效地完成特征的提取,减少因样本少带来的过拟合问题。在处理类别较多、每个类别样本少的分类任务有着极强的优势。

为了解决小样本图像分类问题,采用以变分自编码器为核心的孪生网络结构来实现对小样本图像数据的分类。特征提取通过变分自编码器来实现,无需人工提取,而孪生网络的相似度匹配结构,可以有效地提高分类的正确率。

1 相关理论

1.1 孪生网络

孪生网络是一种特殊类型的神经网络结构,与传统一个学习过程对应一个输入然后进行分类的模型不同,该神经网络每个学习过程具有两个输入,使用相同权重的神经网络对两个输入数据进行处理,计算提取到的特征的相似度来分辨两个数据的是否为同一类别。孪生网络结构如图1所示。

图 1 孪生网络结构Fig. 1 Siamese network

最初的孪生网络基于全连接网络。网络有L个全连接层,每层有Nl个神经元,h1,l表示在第一个孪生网络分支l层的隐向量,h2,l表示在第二个孪生网络分支l层的隐向量,网络在前L-1 层中使用ReLU作为激活函数,对于l∈{1,2,···,L-1}层网络中隐向量h1,m、h2,m按式(1)和式(2)计算:

式中:Wl-1为Nl-1×Nl共享的权值矩阵;bl为l层向量的偏置;max为求最大值。

经过输入层和隐藏层的前馈操作后,在距离层按式(3)比较孪生网络生成的特征的距离E(W),用来评估特征的相似程度。

孪生网络结构具有两个权重相同、结构相同的姐妹网络。输入图像两两组成一对,图像对中的两个图像将分别送到两个姐妹网络中,然后使用对比损失函数来优化网络。原始的姐妹网络使用的是全连接结构,全连接网络参数众多,训练效率低。文献[19]对网络的特征提取过程进行改进,使用卷积神经网络作为姐妹网络来提取图像特征,取得了很好的效果。但是,卷积神经网络在样本数据量小时,易于产生过拟合现象。

使用孪生网络训练时,由于其逐对训练的原理,将有平方级别对的数据可以来训练模型,这让模型很难过拟合。假设数据集样本有E类,每类有C个样本,则一共有C×E张图片,总共可组成的样本对数计算公式为

以Omniglot数据集为例,对于数据集中的964类(每类20个样本),剔除其中相同类别的配对,仍有183 160对组合。孪生网络在不增加样本的前提下,通过输入对匹配的方式,增加了样本的训练次数,从而提高了网络的学习能力,避免出 现过拟合问题。

1.2 变分自编码器

变分自编码器是2014年提出的一种基于变分贝叶斯推断的生成式结构模型[20]。变分自编码器总体上分为两个神经网络:Encoder和Decoder。Encoder通过变分参数的不断迭代、更新来最大化观测数据的边缘似然函数的下界,近似不可观测变量的后验概率,输出隐变量的概率分布。Decoder则是根据Encoder输出的隐变量概率分布还原生产原始数据的近似概率分布。

变分自编码器具有和Dropout类似正则化作用的隐层采样过程,这使得模型的整个训练过程不容易发生过拟合问题[21],与传统特征提取模型相比,更加适合解决样本数量较少的问题。变分自编码器现在已经广泛应用于高维数据降维、特征 提取等方面[17-24]。

2 基于孪生变分自编码器的小样本图像分类

2.1 孪生变分自编码结构

综合变分自编码器减少过拟合问题和孪生网络扩大样本训练次数的优点,对孪生网络进行改进,使用变分自编码器的Encoder结构代替全连接网络提取样本特征,减少了网络参数,提高训练效率。孪生变分自编码器首先建立变分自编码器网络进行特征提取的无监督学习,然后使用两个权重完全相同的变分自编码器Encoder结构搭建孪生网络用于提取样本特征,在距离层计算特征向量的相似度,得到输入样本的分类结果。最后,对神经网络权重进行训练、调整。孪生变分自编码器结构如图2所示。

图 2 孪生变分自编码器结构Fig. 2 Siamese variational auto-encoder

Input_1、Input_2是样本数据的一组组合输入,特征提取功能由变分自编码器的Encoder实现,(x1,l)、 (x2,l) 为Input_1、Input_2展开得到的输入向量。(h1,l) 为Input_1输入第一个Encoder结构得到的隐向量,(h2,l) 为Input_2输入第二个Encoder结构后得到的隐向量。β1T及 β2T为Encoder的权重,并且两个Encoder结构的权重完全相同。μ、σ为输入数据经由Encoder结构提取到的期望与方差,该部分的计算原理同变分自编码器相同,z1、z2分别为Input_1、Input_2提取到的特征向量。d为距离层,针对获得的特征选择欧式距离计算相似度,最后将输出归一化到[0,1]之间,使用sigmoid函数使之成为一个概率。

根据图2的孪生变分自编码器结构,给出相应 孪生变分自编码器的计算流程,如图3所示。

图 3 孪生变分自编码器的计算流程Fig. 3 Computation process of S-VAE

图3中X1、X2为输入样本对展开后得到的一维向量;h1、h2为网络第1层的输出;μenc、σenc为网络第2层的输出。z1、z2为输入对经由变分自编码器提取到的特征向量;E(W) 在距离层计算两个特征向量的欧式距离;p为归一化后得到的分类准确率。输入样本对经过两个权重相同的Encoder结构提取到特征,组建成孪生网络,通过相似度匹配算法,得到最终分类的类别以及正确率。

利用上述孪生变分自编码器的结构和计算流程对小样本图片进行分类的具体过程如下:

1)将数据集以适当的比例分为训练数据集和测试数据集,对训练数据集使用变分自编码器进行无监督的学习,训练特征提取模型。

2)初始化孪生变分自编码器结构,载入训练好的特征提取模型,将训练数据集作为输入对网络进行训练,调整网络各层权值。

3)将测试数据集作为输入,利用训练好的网络 来进行分类任务。

2.2 孪生变分自编码器特征提取

孪生变分自编码器特征提取采用的是变分自编码器的Encoder结构。变分自编码器是一个无监督学习的神经网络,本质上是构建了一个从隐变量z(隐含特征)生成目标数据Y的模型,通过缩小原始输入X与输出Y之间的重构误差进行学习。变分自编码器的“瓶颈”的结构可以有效地降低原始数据的维数,提取样本特征,实现对原始样本的表示学习。变分自编码器结构如图4所示。

图 4 变分自编码器Fig. 4 Variational auto-encoder

对于原始样本集X,定义其特征值为隐变量z,根据贝叶斯准则,z的后验概率密度函数为

但是,边缘似然概率密度函数p(x) 计算复杂,因此变分贝叶斯推理中,通过引入近似分布函数q(z|x) 来拟合真实后验分布p(z|x),并利用Kullback-Leibler (KL)散度来比较两个分布的相似程度。

根据变分贝叶斯方法,样本数据x的边缘似然函数可以简化为

式中:φ 为真实后验分布参数;θ 为隐层的近似分布参数;式(7)中第一项为隐层的近似分布与真实后验分布之间的KL散度,由于KL散度为非负值,仅当两个分布完全一致时,KL散度为0,因此,可以展开为

通过最大化变分下界,即可以得到样本集的最优估计。同时,可以(将式()8)重写为

式中:μenc、σenc为编码器的输出;μdec、σdec为解码器的输出;j为隐变量z的维度;L为隐变量z在后验分布上的采样次数。然后,选择随机梯度下降法(stochastic gradient descent,SGD)来优化神经网络的参数,当式(9)收敛,编码器部分的输出即为提取的特征值,解码器的输出为重构的原始样本。

针对图3孪生变分自编码器的计算流程,孪生变分自编码器特征提取过程可以表示为

式中:W、b为各层的权重和偏置项;x为输入数据,实际使用的是变换为一维数据的Omniglot图像;h1为网络第1层的输出;μenc、σenc为网络第二层的输出;f是激活函数,基于高斯分布参数μ、σ,利用qφ(z|x(i)) 采样得到隐层输出z, 其中,N(0,1)为 标准正态分布。

2.3 孪生变分自编码器图像分类

两个原始数据成对输入Encoder,通过训练好的编码器网络进行分布参数提取,可以得到两个输入数据的特征向量z1、z2,在距离层计算两个特征向量的欧式距离,EW为两个样本对输出特征的欧式距离。

使用sigmoid函数将匹配度映射到[0,1]之间成为一个分类结果的概率,同时方便使用交叉熵作为训练网络的代价函数。相似度为

孪生网络的对比损失函数为

式(13)可以展开为

式中:p 表示输入的总样本数;i 为当前样本的下标。其中 Y 表示样本对的标签,Y ∈{1,0}。 当Y=0时,表明本次输入样本对是同一类图片。此时的样本对的损失函数 L(W) 越小说明模型的参数越合理。若 L (W) 很大,则需要网络使用反向传播机制,对模型参数进行优化。当 Y =1 时,表明本次输入样本对 X1、X2不是同一类。此时,优化损失函数 L(W) 会使使得来自不类别图像的损失尽可能变大。(结合式(12)),本文模型的(代价函)数为

式中:Y为输入对是否是同类的标签;p(z1,z2)i为第i个样本对输入网络后得到的归一化后的特征距离。代价函数可以使用标准反向传播算法进行模 型训练。

3 实验结果与分析

3.1 Omniglot数据集构建

实验使用Tensorflow框架设计神经网络并进行训练和测试,实验的硬件环境为i5-8300H处理器,8 GB内存,软件环境为Windows 10操作系统。

Omniglot数据集拥有50种文字,1 623类手写字符。对于每类字符仅有20个样本,每个样本分别由不同的人绘制而成,分辨率为 10 5×105。图5为数据集的4个示例。

图 5 Omniglot数据集Fig. 5 Omniglot dataset

针对Omniglot数据集的测试实验主要围绕N-way K-shot展开:每种方法利用未经训练的N类中的K个已标记的样本进行训练,然后对一组属于N类中不相交的未标记样本进行分类。本文进行的实验是5-way 1-shot、5-way 5-shot、20-w ay 1-shot和20-way 5-shot。

3.2 Omniglot分类实验分析

整个模型分为5层,特征提取部分网络层数为3层。第1层输入层为22 050个节点,第2层为2 048个节点,第3层为4个节点,第4层为4个节点,第5层输出层为1个节点。训练该模型提取样本图像的高层语义特征,然后再针对样本图像提取的高层语义特征利用孪生变分自编码器模型进一步进行训练,最后使用分类器进行分类。

通过Omniglot数据集对孪生变分自编码器进行测试,与原始孪生网络以及其他针对小样本图像分类方法实验结果进行对比。实验中用于对比的小样本分类方法主要有文献[25]中引用的原始孪生网络实验结果、文献[19]中提出的卷积孪生网络、文献[26]提出的分层贝叶斯学习方法(HBPL)以及文献[27]提出的预采样匹配网络(SSMN)。实验结果如表1所示。

表 1 Omniglot 数据集N-way K-shot 平均正确率 Table 1 Average accuracy of N-way K-shot of Omniglot dataset

从表1中可以看出,S-VAE实验结果中,4种条件下孪生变分自编码器分类结果均高于卷积孪生神经网络。20-way 1-shot情况下略微低于HBPL模型,较其他方法,孪生变分自编码器具有更高的分类正确率。20-way 5-shot 情况下本文提出的模型正确率最高,为98.9%。从表中可以看出,S-VAE相较于原始的孪生网络分类正确率在4个对比实验下均有所提高,平均提高3.1%。

由于HBPL模型是一种针对Omniglot进行特定处理的方法,在Omniglot笔画层次上进行图像的分割,继而进行学习,缺乏在其他问题上的拓展能力。因此,对余下3种算法和本文提出的模型,进行训练时间的比较,结果如表2所示。

从表2的训练时间来看,孪生变分自编码器在训练接近2个小时后,可以完成训练,并且训练用时最短,这说明孪生变分自编码器可以实现对小样本数据的快速分类,相较于另外3种算法,效率更高。

表 2 Omniglot 数据集N-way K-shot 训练时间 Table 2 Training time of N-way K-shot of Omniglot dataset

图6~9为本文提出模型的实验结果,主要包括5-way 1-shot、5-way 5-shot、20-way 1-shot和20-way 5-shot的测试错误率以及损失函数值的结果。结合表1中的平均正确率,从图6中5-way 1-shot的测试实验结果可以看出,整体样本正确率达到98.0%,一部分样本可以100%地识别出来,与原始孪生网络相比,分类正确率提高了4.3%。结合图8可以看出,当样本类别数量增加到20类时,20-way 1-shot场景下整体测试样本正确率达到了94.1%,与原始孪生网络相比,分类正确率提高了 5.9%。

图 6 5-way 1-shot测试正确率和损失函数值Fig. 6 Test accuracy and loss of 5-way 1-shot

图 7 5-way 5-shot测试正确率和损失函数值Fig. 7 Test accuracy and loss of 5-way 5-shot

图 8 20-way 1-shot测试正确率和损失函数值Fig. 8 Test accuracy and loss of 20-way 1-shot

图 9 20-way 5-shot测试正确率和损失函数值Fig. 9 Test accuracy and loss of 20-way 5-shot

图10~12是以20-way 1-shot和5-way 1-shot为例,反映了不同类别,相同的训练样本数据集经过测试后的结果有着明显差距。当训练数据集样本数相同时,随着训练样本类别的增加,最终识别难度变大,分类正确率下降。当样本类别达到20,训练样本只有一个时,训练难度最大,图10体现出20-way 1-shot收敛速度明显慢于5-way 1-shot 条件下的收敛速度,正确率也略微下降。结合图7以及表1中的平均正确率可以看出在难度最大的20-way 1-shot条件下,样本在迭代700次之后收敛,测试正确率达到94.1%。

图 10 different-way 1-shot训练损失函数值Fig. 10 Training loss of different-way 1-shot

图 11 different-way 1-shot训练正确率Fig. 11 Training accuracy of different-way 1-shot

图 12 different-way 1-shot测试正确率Fig. 12 Test accuracy of different-way 1-shot

图13~15是以20-way 5-shot和20-way 1-shot为例,反映了相同类别,不同的训练样本数据集经过测试后的结果。当训练数据集样本数相同时,随着训练样本类别的增加,最终识别难度变大,分类正确率下降。结合表1中平均正确率的实验结果对比,与原始的Siamese Net[25]相比,在难度最高的20-way 1-shot情况下,孪生变分自编码器分类正确率提高了5.9%,其他情况下最低提高了0.3%,可以在说明本文所提出的混合模型的先进性。与Lake等[26]提出的分层贝叶斯学习结构相比,孪生变分自编码器正确率低0.9%,但是Lake的方法使用的不是原始图像的像素,而是Omniglot的笔画数据,虽然在Omniglot数据集上具有极高的分类正确率却失去了向其他数据集拓展的能力,本文所提出的模型与之相比具有更好的泛化能力。从4种条件下的损失函数结合表2中几个方法的训练时间对比,孪生变分自编码器可以很快速的收敛,在训练1 000次后就已经达到了比较不错的分类效果。

图 13 20-way different-shot训练损失函数值Fig. 13 Training loss of 20-way different-shot

图 14 20-way different-shot训练正确率Fig. 14 Training accuracy of 20-way different-shot

图 15 20-way different-shot测试正确率Fig. 15 Test accuracy of 20-way different-shot

4 结束语

针对小样本图像分类问题,本文提出了孪生变分自编码器网络模型。首先对训练样本数据使用变分自编码器进行降维处理,提取样本的隐含特征,然后通过孪生网络,对成对输入的两个样本进行相似度匹配,返回与待测样本标签为同类的样本类别以及正确率,完成物体的分类。通过Omniglot数据集对模型效果进行4组实验验证,本文提出的改进模型与原始孪生神经网络相比最高提高了5.9%,平均提高3.1%。

下一步工作将本文方法拓展应用到实际问题中。在电力设备故障诊断中,只有很少的实际采集样本,因此,通常会额外生成模拟数据进行实验,本文下一步工作即通过孪生变分自编码器在仅使用实际采集样本的情况下对故障类型进行分类。

猜你喜欢
编码器正确率分类
分类算一算
门诊分诊服务态度与正确率对护患关系的影响
分类讨论求坐标
基于FPGA的同步机轴角编码器
数据分析中的分类讨论
基于双增量码道的绝对式编码器设计
教你一招:数的分类
生意
品管圈活动在提高介入手术安全核查正确率中的应用
生意