APP下载

卷积优化的变分自编码聚类方法①

2020-11-13严晓明

计算机系统应用 2020年10期
关键词:编码器类别聚类

严晓明

1(福建师范大学 数学与信息学院,福州 350117)

2(数字福建环境监测物联网实验室,福州 350117)

变分自编码器Variational AutoEncoder (VAE)[1]通过编码器部分学习样本集分布的期望和方差,提取样本的统计学特征;通过生成器部分还原样本,并且能生成与原样本类似的新样本.和自编码器AutoEncoder对比,VAE 提取出的特征反映了原始数据集每个样本的高斯分布特性,隐变量从单一的向量形式变成了高斯分布的期望和方差,从不易解读的数值变成用高斯分布的形式描述.

在无监督学习的领域,近年来国内外学者对变分自编码器改进和应用进行了大量研究:Fabiu 将VAE和RNN 模型结合,提出了变分循环自动编码器VRAE,用于提取时间序列的概率特征,提高RNN 的训练效率[2];郑欣悦等人用VAE 提取出的特征再结合注意力机制模型,用于小样本图像的分类,得到了更好的准确率[3];曾旭禹等人用VAE 提取数据集的分布特征,再结合概率矩阵分解方法增加推荐系统中不同物品的评分数据,增加了推荐精度[4];Xie 等人提出的Deep Embedded Clustering (DEC)[5]通过收敛样本集基于质心的soft assignment 和辅助目标分布的KL 距离来实现聚类,在MNIST 数据集上的聚类准确率达到了84.3%.DEC 的聚类准确率较高,但由于用到了堆叠自编码器来进行特征表示,缺少生成能力,不能生成新样本.

这些对变分自编码器的改进和应用都直接利用隐变量进行后续的学习,这对隐变量是否能最大程度地提取到数据集的特征就显得十分重要.传统变分自编码器将样本数据直接作为输入,对于非图像的样本,这样做直截了当,而对于图像数据来说,样本所表达信息的结构比较复杂,如果直接将图像样本展平后作为输入数据,VAE 中全连接结构不能完全解读图像所表达的信息,得到的隐变量就需要更多的全连接层去学习图像样本,在数值上也会出现一定程度的偏差.本文提出了一种用卷积结构处理样本集,再由变分自编码器实现聚类的方法.由于卷积层中的卷积核对图像数据中的线条,边缘,形状等特征进行提取,降低了VAE 编码器理解图像的难度.实验结果表明,用VAE 聚类时采用本文卷积优化后的图像样本,和原始样本直接输入比较,聚类准确率提高20%左右,VAE 中解码器生成的样本更加稳定,生成样本的质量也得到较大的提升.

1 损失函数

变分自编码器的损失函数由用来还原样本的重构损失以及保持样本多样性的KL 散度损失两部分组成.对于原始样本集X=VAE通过最小化重构损失使得生成的样本集接近原始样本集,这和自编码器还原样本的方法是类似的.Kingma在文献[1]中给出了公式:

当从隐层所表示的正态分布中采样时,由于方差的存在,使得每次采样的结果并不总是一个确定的值,这使得VAE 有了生成能力.隐层特征中的方差不为0,那么每次从隐特征所表示的分布中采样到的结果不都是期望,间接确保了生成器的生成能力.Kingma 在文献[1]中指出,最小化KL 散度损失kl_loss使得编码器得到的正态分布接近先验的标准正态分布,即:

变分自编码器实现聚类操作时在损失函数中加入类别损失category_loss并进行最小化.首先要根据数据集的类别总数设置类别集合Y={y1,y2,···,yk}.这里把类别值看成是分布p(yi),在VAE 模型结构中,增加一个类别编码器q(yi|xi),类别编码器是一个从原始样本集的每个样本中得到该样本类别的神经网络,把类别编码器拟合出的条件概率分布q(yj|xj)和 分布p(yi)之间求出它们的KL散度:

由蒙特卡洛模拟法,可得:

其中,yj∼q(yj|xj).

最后可以得出类别损失函数为:

在式(6)中,p(yj)是原始样本集中类别的先验分布,由于类别总数是一个确定值,可以将其看成是均匀分布,则式(6)的后半部分的值为一个常数.最后的类别损失函数可以简化成:

2 卷积优化的变分自编码器

样本集为图像时,传统的VAE 将样本展平成一维数组,作为输入数据.展平操作后,样本中邻近像素点点之间的顺序被重新排列,导致这些点之间原本存在的信息被打乱,对后续的学习不利.本文在VAE 的编码器前加入多个卷积网络,对图像样本先进行卷积操作,将卷积的结果作为编码器的输入,同时在解码器后加入相应的反卷积操作,还原成图像.

在图像处理领域,卷积操作应用广泛,在很多深度学习模型[6–8]中用到了卷积操作,通过不同的卷积核对图像中的边缘,形状等信息进行处理,取得了不错的效果.在传统的VAE 前加入多个卷积网络,用不同的卷积核对图像中的特征进行预处理后,再作为VAE 的输入,与采用直接将图像作为输入数据比较,卷积后的图像数据中包含了更多隐藏在图像中的不易识别到的信息,有利于编码器对图像分布特征的提取.本文卷积优化的VAE 聚类模型如图1所示.

图1 带卷积优化的VAE 聚类模型

图1中实线矩形表示数据,矩形的高度表示了数据维度的大小,虚线矩形为网络模型.Con_Layer1 是一个卷积层,包括一个卷积层,一个激活层和一个池化层,输入数据为原始的样本;卷积层Con_Layer2 的输入数据为Con_Layer1 的输出结果,和Con_Layer1 不同的是,这一层的卷积核的大小和数量发生了改变.最后将两个卷积层的结果进行拼接,作为VAE 编码器的输入数据,用不同的卷积核来分析样本图像,能最大限度地将图像数据中的特征加以描述,卷积核参数共享也能大大降低卷积网络需要优化的参数数量.当数据集中样本图像长宽较大或通道数较多时,还可以把这两个卷积层变成多层的卷积网络,卷积核参数,激活函数和池化参数也可以适当调整.

图1中的中间数据表示解码器得到的数据,其维度和拼接后数据相同,按Con_Layer1 卷积网络所得到的维度截取后,作为与Con_Layer1 对应的反卷积层TranCon_Layer1 的输入数据,还原生成样本.

图1中类别编码器是一个多层神经网络,最后一层用Softmax 多分类器求得每个样本的类别,类别总数为原始样本集中的样本总类别数.求得的类别根据公式7 计算类别损失,加入到损失函数中,参与总损失的梯度优化,不参与隐层的采样.

本文提出的卷积优化的变分自编码器聚类算法步骤如算法1.

算法1.卷积优化的变分自编码器聚类算法1)计算数据集的多卷积层拼接数据.2)构造全连接网络,根据公式7 求得样本的类别损失.x(i)µ(i)logσ2(i)category_loss 3)构造两个全连接网络,拟合样本 所属高斯分布的均值 和方差.kl_loss 4)根据式(3)求.5)从3)得到的高斯分布中采样,构造全连接网络根据式(2)计算.lossloss reconstruction_loss 6)令总损失 为2),4),5)步中3 个损失之和,应用梯度下降最小化.7)返回2),直到达到指定的迭代次数.8)通过反卷积操作得到指定的生成样本,并计算聚类准确率.

3 实验与结果分析

本文选取手写数字数据集MNIST[9]和服饰图像数据集Fashion_MNIST[10]展开实验.MNIST 数据集包含10 个类别的手写数字图像;Fashion_MNIST 数据集中样本总类别数也为10,包含了外套,包,短靴,牛仔裤等不同服饰,与MNIST 数据集中的手写数字比较,Fashion_MNIST 数据集中的服饰有着更复杂的描述对象,也包含了更多形状,边缘等信息.两个数据集的图像的大小和样本数都相同,分别为28×28 和70 000 个,适合作为验证本文算法使用.实验环境的计算机配置为:Intel i7 CPU,8 GB 内存,Windows 10 操作系统,语言环境为Python.

本文实验中,将隐层的期望和方差的维数设为可调的参数s,这两个向量的维度相同,测试期望和方差的维数大小对聚类正确率以及生成样本质量的影响.将Con_Layer1 和Con_Layer2 都设置为可调卷积层数的卷积网络,层数由参数n指定,卷积网络Con_Layer1中所有卷积层的其他参数均相同:卷积核16 个,大小为3×3,步长为1,采用零填充的方法,激活函数为ReLU,采用2×2 的最大池化;卷积网络Con_Layer2 的卷积核调整为32 个,大小为5×5,其它的参数都和卷积网络Con_Layer1 相同.出于代码实现上的考虑,通过对层数n值的改变,能方便地实现卷积网络中卷积层数的变化而其它的参数不作修改,这样的实现方法在VGG16 模型中取得了不错的表现.由于公式3 在计算kl_loss时包含有方差的对数形式,实验中隐层拟合的正态分布的方差更换为方差的对数形式,由于对数函数值存在负数,编码器的全连接网络没有加上激活函数,层数设为1.本实验中为了验证编码器全连接层神经元总数对实验效果的影响,将其设为可调的参数m.两个数据集中的70 000 个样本,训练集均设为60 000 个样本,其余的样本作为测试集.实验中迭代次数均设为50.实验结果如表1所示.

表1 实验结果

表1中编码器全连接层中神经元总数m和卷积网络中卷积层的层数n仅列出最好情况下的取值.从表1中可以看出,对于MNIST 数据集,随着隐层变量维数的增加,达到最佳效果的卷积网络中的卷积层数也随之变少,这是由于随着正态分布维数的增加,编码器能更好地拟合样本的分布特征,此时卷积网络可以用较少的层数对图像进行卷积操作;与此同时,由于拼接后的输入数据将原始样本中的信息充分地展现,编码器中的全连接层要用更多的神经元个数进行拟合,最后得到的聚类准确率也会上升.当隐层变量维数为50,卷积网络中卷积层的层数为1,编码器神经元个数在512 时,VAE 的聚类正确率就达到峰值94%左右,较文献[6]中DEC 算法的84.3%的聚类正确率有较大的提升;隐层维数大于60 后,则出现了过拟合,聚类正确率开始下降.

传统的变分自编码器对MNIST 数据集的聚类实验中,在隐层维数为10,编码器神经元总数为100 时就达到了聚类准确率为75%的峰值.对比这个结果,本文提出的经过卷积优化的变分自编码器方法用多个卷积网络对图像样本的卷积操作后再进行拼接,能在最大程度上将图像中的边缘及形状等信息通过不同卷积核进行提取,增大了输入数据的维度,比原始样本展平的方式更适合于自编码器的学习,聚类准确率得到了较大程度的提高,效果明显.同时随着拼接后输入数据维度的增大,式(2)计算所有样本各个维度值的均方误差之和也增大,在表1中损失函数的结果值随之增加.

Fashion_MNIST 和MNIST 的图像有着同样的长宽值,但是图像中的服饰比手写数字的面积大,即样本中的非零元的个数多于MNIST,导致了当实验中设置了相同参数的情况下,其总损失值更大,这也是该数据集的聚类准确率小于MNIST 数据集的主要原因.卷积网络对该数据集中图像样本的处理需要更多的卷积层数,在实验中,隐层变量维度为60,两个卷积网络的卷积层数为5,编码器的神经元总数为512 时,获得了最好的聚类正确率68%,随后也出现了过拟合的情况.传统的变分自编码器对Fashion_MNIST 数据集的聚类实验中,在隐层维数为25,编码器神经元总数为200 时就达到了聚类准确率为55% 的峰值,在服饰数据集上,本文方法也得到了更好的聚类准确率.

对比两个数据集的实验,取得最好结果时VAE 隐层维度都在50 至60 之间,从表1中也可以看到对Fashion_MNIST 数据集达到最佳效果的隐层维度比MNIST 数据集多了10 维.多元高斯分布能描述更复杂样本分布,但是隐层维度不能通过无限增大的方式来取得更好的分布结果,这是由于高斯分布的维度每增加一维,分布的高度就为原分布高度的当隐层维度增大到一定数值时,高斯分布的效果和均匀分布接近,已经失去了隐层变量的意义.也就是说当隐层维度越来越大时,隐层所表示的分布的高度更趋于0,由于方差越来越小,VAE 失去了生成能力.

不同卷积核的两个卷积网络对输入数据的处理不仅使得聚类准确率得到明显的提升,同时也提高了变分自编码器生成样本的多样性.图2是Fashion_MNIST数据集在隐层维数为60,卷积网络的层数为5 时,本文方法与传统的变分自编码器对于包(Bag)这个类别在样本多样性上的对比,图3和图4是相同参数下的短袖(T-shirt)长靴(Ankle boot)的对比,这3 个图中左边均为传统的变分编码器的结果,右边为本文改进VAE在指定参数下的结果.

图2中传统的VAE 生成样本中的包基本维持了四边形的线条,在包的大小,四边形的两侧稍有变化;而本文改进的VAE 方法中的包变化样式更丰富并且不改变包类别的特征,对包的提手部分的变化情况也多于传统的VAE.图3中右侧样本在短袖袖口处的变化多于左侧,并且在短袖下摆的宽度以及整件短袖大小的变化优于传统VAE 的生成样本.从图4中可以看出,传统VAE 在长靴样本的多样性上体现在长靴的鞋跟的长短,鞋帮的粗细和鞋面的弧度上,这几个特征在本文VAE 方法所生成的样本中更加明显,并且右侧样本在保持长靴类别的前提下,在鞋子的形状和边缘上有更多的变化.对服饰数据集的实验中,其他类别的样本也同样体现了本文方法在生成样本多样性上的提升.

图2 传统VAE 与改进VAE 在包类别上多样性对比

图3 传统VAE 与改进VAE 在短袖类别上多样性对比

图4 传统VAE 与改进VAE 在长靴类别上多样性对比

4 结语

本文提出了用多个卷积网络优化变分自编码器实现聚类的方法,通过隐层变量的维数和卷积网络层数的调整,在对MNIST 和Fashion_MNIST 数据集的实验结果表明,该方法与传统变分自编码比较,聚类准确率得到了明显提高,增加了变分自编码器生成样本的多样性,生成的图像质量更好.

猜你喜欢

编码器类别聚类
一种傅里叶域海量数据高速谱聚类方法
WV3650M/WH3650M 绝对值旋转编码器
WDGP36J / WDGA36J编码器Wachendorff自动化有限公司
一种改进K-means聚类的近邻传播最大最小距离算法
基于Beaglebone Black 的绝对式编码器接口电路设计*
AR-Grams:一种应用于网络舆情热点发现的文本聚类方法
一起去图书馆吧
舞台机械技术与设备系列谈(二)
——编码器
基于模糊聚类和支持向量回归的成绩预测
简析基于概率预测的网络数学模型建构