2. 数字福建环境监测物联网实验室, 福州 350117
2. Digital Fujian Internet-of-Things Laboratory of Environmental Monitoring, Fujian Normal University, Fuzhou 350117, China
变分自编码器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散度损失两部分组成. 对于原始样本集
$ \log q\left( {{\textit{z}}|{x^{(i)}}} \right) = \log N\left( {{\textit{z}};{\mu ^{(i)}},{\sigma ^{2(i)}}I} \right) $ | (1) |
式(1)表示编码器
$ reconstruction\_loss = \dfrac{1}{n}\sum\limits_{i = 1}^n {{{({x^{(i)}} - {{\hat x}^{(i)}})}^2}} $ | (2) |
当从隐层所表示的正态分布中采样时, 由于方差的存在, 使得每次采样的结果并不总是一个确定的值, 这使得VAE有了生成能力. 隐层特征中的方差不为0, 那么每次从隐特征所表示的分布中采样到的结果不都是期望, 间接确保了生成器的生成能力. Kingma 在文献[1]中指出, 最小化KL散度损失
$ \begin{split} kl\_loss =& KL\left( {N\left( {\mu ,{\sigma ^2}} \right)\left\| {N(0,1)} \right.} \right)\\ =& \frac{1}{2}\left( { - \log {\sigma ^2} + {\mu ^2} + {\sigma ^2} - 1} \right) \end{split} $ | (3) |
由于标准正态分布的方差为1, 通过最小化编码器
变分自编码器实现聚类操作时在损失函数中加入类别损失
$ KL(q(y|x)\left\| {p(y)) = \int {q(y|x)\ln \frac{{q(y|x)}}{{p(y)}}dy} } \right. $ | (4) |
由蒙特卡洛模拟法, 可得:
$ \int {q(y|x)\ln \dfrac{{q(y|x)}}{{p(y)}}dy} \approx \dfrac{1}{k}\sum\limits_{j = 1}^k {\ln \dfrac{{q({y^j}|{x^j})}}{{p({y^j})}}} $ | (5) |
其中,
最后可以得出类别损失函数为:
$ category\_loss = \frac{1}{k}\left(\sum\limits_{j = 1}^k {\ln (q({y^j}|{x^j}))} - \sum\limits_{j = 1}^k {\ln (p({y^j}))}\right) $ | (6) |
在式(6)中,
$ category\_loss = \frac{1}{k}\sum\limits_{j = 1}^k {\ln (q({y^j}|{x^j}))} $ | (7) |
样本集为图像时, 传统的VAE将样本展平成一维数组, 作为输入数据. 展平操作后, 样本中邻近像素点点之间的顺序被重新排列, 导致这些点之间原本存在的信息被打乱, 对后续的学习不利. 本文在VAE的编码器前加入多个卷积网络, 对图像样本先进行卷积操作, 将卷积的结果作为编码器的输入, 同时在解码器后加入相应的反卷积操作, 还原成图像.
在图像处理领域, 卷积操作应用广泛, 在很多深度学习模型[6-8]中用到了卷积操作, 通过不同的卷积核对图像中的边缘, 形状等信息进行处理, 取得了不错的效果. 在传统的VAE前加入多个卷积网络, 用不同的卷积核对图像中的特征进行预处理后, 再作为VAE的输入, 与采用直接将图像作为输入数据比较, 卷积后的图像数据中包含了更多隐藏在图像中的不易识别到的信息, 有利于编码器对图像分布特征的提取. 本文卷积优化的VAE聚类模型如图1所示.
图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求得样本的类别损失
3) 构造两个全连接网络, 拟合样本
4) 根据式(3)求
5) 从3)得到的高斯分布中采样, 构造全连接网络根据式(2)计算
6) 令总损失
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.
本文实验中, 将隐层的期望和方差的维数设为可调的参数
表1中编码器全连接层中神经元总数
传统的变分自编码器对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维. 多元高斯分布能描述更复杂样本分布, 但是隐层维度不能通过无限增大的方式来取得更好的分布结果, 这是由于高斯分布的维度每增加一维, 分布的高度就为原分布高度的
不同卷积核的两个卷积网络对输入数据的处理不仅使得聚类准确率得到明显的提升, 同时也提高了变分自编码器生成样本的多样性. 图2是Fashion_MNIST数据集在隐层维数为60, 卷积网络的层数为5时, 本文方法与传统的变分自编码器对于包(Bag)这个类别在样本多样性上的对比, 图3和图4是相同参数下的短袖(T-shirt)长靴(Ankle boot)的对比, 这3个图中左边均为传统的变分编码器的结果, 右边为本文改进VAE在指定参数下的结果.
图2中传统的VAE生成样本中的包基本维持了四边形的线条, 在包的大小, 四边形的两侧稍有变化; 而本文改进的VAE方法中的包变化样式更丰富并且不改变包类别的特征, 对包的提手部分的变化情况也多于传统的VAE. 图3中右侧样本在短袖袖口处的变化多于左侧, 并且在短袖下摆的宽度以及整件短袖大小的变化优于传统VAE的生成样本. 从图4中可以看出, 传统VAE在长靴样本的多样性上体现在长靴的鞋跟的长短, 鞋帮的粗细和鞋面的弧度上, 这几个特征在本文VAE方法所生成的样本中更加明显, 并且右侧样本在保持长靴类别的前提下, 在鞋子的形状和边缘上有更多的变化. 对服饰数据集的实验中, 其他类别的样本也同样体现了本文方法在生成样本多样性上的提升.
4 结语
本文提出了用多个卷积网络优化变分自编码器实现聚类的方法, 通过隐层变量的维数和卷积网络层数的调整, 在对MNIST和Fashion_MNIST数据集的实验结果表明, 该方法与传统变分自编码比较, 聚类准确率得到了明显提高, 增加了变分自编码器生成样本的多样性, 生成的图像质量更好.
[1] |
Kingma DP, Welling Max. Auto-encoding variational bayes. https://arxiv.org/pdf/1312.6114.pdf, 2019.
|
[2] |
Fabius O, van Amersfoort JR. Variational recurrent auto-encoders. arXiv: 1412.6581, 2014.
|
[3] |
郑欣悦, 黄永辉. 基于VAE和注意力机制的小样本图像分类方法. 计算机应用与软件, 2019, 36(10): 168-174. DOI:10.3969/j.issn.1000-386x.2019.10.030 |
[4] |
曾旭禹, 杨燕, 王淑营, 等. 一种基于深度学习的混合推荐算法. 计算机科学, 2019, 46(1): 126-130. DOI:10.11896/j.issn.1002-137X.2019.01.019 |
[5] |
Xie JY, Girshick R, Farhadi A. Unsupervised deep embedding for clustering analysis. Proceedings of the 33rd International Conference on Machine Learning. New York, NY, USA. 2016. 478–487.
|
[6] |
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. https://arxiv.org/abs/1409.1556, 2019.
|
[7] |
Szegedy C, Liu W, Jia YQ, et al. Going deeper with convolutions. Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Boston, MA, USA. 2015. 1–9.
|
[8] |
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, NV, USA. 2016. 770–778.
|
[9] |
LeCun Y, Cortes C, Burges CJC. The MNIST database of handwritten digits. http://yann.lecun.com/exdb/mnist/. 2019.
|
[10] |
Xiao H, Rasul K, Vollgraf R. Fashion-MNIST: A novel image dataset for benchmarking machine learning algorithms. arXiv: 1708.07747, 2017.
|