APP下载

深度卷积自编码图像聚类算法*

2019-05-07谢娟英曹嘉文

计算机与生活 2019年4期
关键词:网络结构编码聚类

谢娟英,侯 琦,曹嘉文

陕西师范大学 计算机科学学院,西安 710119

1 引言

计算机软、硬件技术和智能手机等电子设备的飞速发展,使大数据成为当今社会的必然产物。如何从大数据中发现隐藏的知识和规律,是亟待解决的问题和任务。深度学习概念由Hinton等人[1]于2006年提出,是大数据分析的有力工具,广泛用于图像处理、语音识别、自然语言理解等领域。

聚类根据样本的相似程度,将数据集样本划分为若干类簇,使相似度高的样本位于同一类簇,相似度低的样本处在不同类簇[2]。深度聚类是深度学习在无监督学习领域的应用,在图像识别领域表现出明显优势。自编码器的发展,更是推动了深度学习在无监督学习领域的发展。

深度聚类算法分为两种:一种是先学习数据表示,然后进行聚类;另一种是特征学习和聚类同时进行。深度子空间聚类网络(deep subspace clustering networks,DSC-Nets)[3]提出了一种新颖的深度卷积自编码网络来学习样本点之间的相似矩阵,即在编码层和解码层之间加入自表达层,以得到样本之间的相似性,然后在子空间根据学习得到的相似矩阵对样本进行谱聚类分析。深度嵌入聚类算法(deep embedded clustering,DEC)[4],通过降噪自编码,逐层贪婪训练后组合成栈式自编码,然后撤去解码层,仅使用编码层,对提取出来的特征使用相对熵作为损失函数对网络进行微调,该结构可以同时对数据进行特征学习和聚类。但是DEC算法没有考虑微调会扭曲嵌入式空间,削弱嵌入式特征的代表性,从而影响聚类效果。DEC算法对复杂图像数据STL-10[5],使用传统的梯度方向直方图(histograms of oriented gradient,HOG)[6]人工特征,没有使用深度学习进行特征提取,所得特征不能很好表达图像。IDEC(improved deep embedded clustering)算法[7]是对DEC算法的改进,通过保存局部结构防止微调对嵌入式空间的扭曲,即在预训练时,使用欠完备自编码,微调时的损失函数采用相对熵和重建损失之和,以此来保障嵌入式空间特征的代表性。

卷积神经网络已被证明对图像特征提取具有极好性能,因此产生了卷积自编码[8]。鉴于此,Guo等人[9]提出了深度卷积嵌入聚类算法(deep convolutional embedded clustering,DCEC),在DEC原有网络基础上,加入了卷积自编码操作,并在特征空间保留数据局部结构,从而取得了更好聚类效果。

然而研究发现DCEC的网络结构损失了太多特征信息,从而限制了DCEC算法的聚类效果。因此,在卷积自编码基础上,提出一种新的网络结构,并优化特征提取方式,以得到更好聚类结果。三个经典图像数据集的实验结果表明,本文的改进使得聚类效果大幅提升。

2 相关研究

2.1 深度嵌入聚类DEC

DEC算法[4]先使用栈式降噪自编码[10]对数据进行预训练,然后移除解码层,对整个网络使用相对熵作为损失函数进行微调,得到调整网络参数的同时进行聚类,完成模型优化的同时实现聚类。其相对熵定义如式(1)所示,描述两个概率分布P和Q的差异,其中P表示真实(目标)分布,Q表示P的拟合分布。

式(1)中,qij表示原始空间经过非线性映射到潜在特征空间的嵌入点zi和聚类中心μj的相似性,也即拟合分布Q的表示,其计算公式如式(2)所示。式(2)中α是t分布的自由度,通常取为1。qij表达了样本xi属于类簇j的概率。

目标分布P如式(3)定义,可以看出目标分布P是由拟合分布Q来定义的,这是DEC算法的核心,可见DEC算法最小化KL散度是一种自训练[11]。

DEC算法的整个聚类过程如图1所示。先使用整个网络进行预训练,得到原始数据经过非线性映射到潜在特征空间的数据表示,即特征。然后对得到的特征用K-means算法进行网络初始化,得到初始聚类中心。再使用相对熵迭代,微调网络,直至满足收敛性判定准则停止。最终样本xi所属类簇就是使得qij最大的类簇中心点μj。

2.2 基于局部结构保留的深度嵌入聚类IDEC

基于局部结构保留的深度嵌入聚类IDEC[7]是对DEC算法的改进,通过保存局部结构方式避免微调时对嵌入空间的扭曲。IDEC的损失函数如式(4)所示。其中Lr和Lc分别为重建损失和聚类损失。γ≻0为控制嵌入空间扭曲程度系数。

假设数据集X有n个样本,每个样本是一个d维向量,定义非线性映射fw:xi→zi和gw':zi→xi',其中zi是xi在低维特征空间的嵌入点,xi'是xi的重建样本。fw、gw'分别表示编码过程中从原始数据到特征空间的特征映射和从特征空间特征到重建数据的映射。

聚类损失Lc的定义见式(1)的L定义,重建损失Lr就是均方误差(mean squared error,MSE),定义为式(5),其中zi如式(6)所示,fw、gw'分别为编码函数和解码函数。

IDEC算法的网络结构如图2所示,在预训练结束后,对重建损失和聚类损失的加权和进行微调,在最大限度保证不扭曲嵌入空间的前提下,得到最优聚类结果。

Fig.2 IDEC network structure图2 IDEC的网络结构图

2.3 深度卷积嵌入聚类算法DCEC

深度卷积嵌入聚类算法DCEC[9]是在IDEC算法基础上进行的改进,将编码层和解码层中的全连接换成卷积操作,这样可以更好地提取层级特征,其网络结构图如图3所示。图中编码层和解码层各有3层卷积,卷积层后加了一个flatten操作拉平特征向量,以获得10维特征。DCEC只是将IDEC的所有全连接操作换成卷积操作,其损失函数依旧是重建损失和聚类损失之和。但DCEC只保留10维特征,会引起特征损失。

3 本文算法

3.1 网络结构

针对DCEC算法的特征损失缺陷,对其网络结构进行改进,在得到特征前后各加了两个全连接层作为过渡,以避免DCEC算法在卷积后直接保留10维特征可能损失部分信息的问题。另外,不同于DCEC算法,本文的编码层由卷积层和下采样层组成,采用下采样的目的是减少参数,防止过拟合;在解码层通过上采样层和卷积层来实现反卷积效果,加入上采样层是为了还原下采样造成的细节损失。改进后的网络结构如图4所示。

3.2 损失函数

Fig.3 DCEC network structure图3 DCEC网络结构图

Fig.4 Network structure framework proposed in this paper图4 本文提出的网络结构框架

为了验证改进结构的优越性,分别采用DEC算法的损失函数和IDEC算法的损失函数作为代价损失函数,采用图4提出的网络结构,得到两种深度卷积图像聚类算法,分别命名为DEC_DCNN(deep embedded clustering based on deep convolutional neural network)和 IDEC_DCNN(improved deep embedded clustering based on deep convolutional neural network),即DEC_DCNN的损失函数同DEC算法,如式(1)所示,IDEC_DCNN的损失函数为式(4)所示的IDEC算法的损失函数:聚类损失和重建损失之和。实验部分将通过与现有研究结果的比较,验证提出的改进网络结构的有效性。

3.3 特征提取

实验数据集 MNIST[12]、USPS[7]和 STL-10[5]的前两个为手写字体识别数据集,是灰度图像,数据像素稀疏,最后1个数据集是RGB三通道的复杂图像,图像纹理、色彩、形状复杂。为此,采用两类不同方式提取特征,设计两种策略进行聚类。

栈式自编码可以学习到代表原始数据分布的有效特征[10]。因此,对MNIST和USPS数据集,直接使用图4提出的网络结构,采用和栈式自编码相同的逐层贪婪预训练方式,得到原始数据的潜在特征空间表示,然后使用K-means得到初始聚类中心,去掉网络解码层,只保留编码层和特征层进行网络微调。对复杂图像数据集STL-10,首先使用Inception-v3[13]模型提取特征,用最后一个池化层(pool_3)的输出作为图像特征,也就是每个图像用一个2 048维向量表示。然后用提取的特征代替原始图像数据,使用图4提出的网络进行预训练和微调。

不同数据集采用不同预训练方式是因为预训练结果很大程度决定了后期微调聚类的效果。对简单图像,使用栈式自编码预训练完全可以学到原灰度图像的很好特征表示。但对图像内容色彩丰富的复杂图像,栈式自编码提取的特征不足以表示原始图像。由于卷积神经网络具有对图像特征鲁棒性的特点,因此对复杂图像,使用卷积神经网络进行特征提取,然后对提取到的特征进行预训练和微调,以取得更好实验效果。DEC_DCNN和IDEC_DCNN算法分别依据其损失函数微调网络,完成微调的同时实现聚类。

3.4 优化方法

设数据集X={x1,x2,…,xn}∈Rn×d,定义非线性映射fw:xi→zi和gw':zi→xi',其中zi是xi在低维特征空间的嵌入点,xi'是xi的重建样本。fw、gw'分别表示编码过程中从原始数据到特征空间的特征映射和从特征空间特征到重建数据的映射。类簇数为K,第j类簇的类簇中心μj∈Rd。si∈{1,2,…,K}表示样本xi的分配标签。

采用自适应矩估计Adam(adaptive moment estimation)[14]和小批量随机梯度下降Mini-Batch SGD(mini-batch stochastic gradient descent)两种优化方法对损失函数进行迭代优化。IDEC_DCNN算法需要优化和IDEC算法同样的参数:编码器编码层和解码层的权重、类簇中心、目标分布。DEC_DCNN算法的待优化参数同DEC算法,包括类簇中心和DNN(deep neural networks)网络参数。

Mini-Batch SGD在网络传播过程中更新聚类中心{μi}和神经网络参数。损失函数Lc关于特征空间嵌入点{zi}、聚类中心{μi}的梯度分别如式(7)和式(8)所示,其中qij和pij如式(2)和式(3)所示,α取1。

假设待更新的小批量样本数为m,学习率为λ,则第j类簇中心μj的更新方式如式(9)所示。

IDEC_DCNN算法编码层权重的更新公式如式(10)所示,解码层的权重更新方式如式(11)所示。由式(10)可见编码层权重根据重建损失和聚类损失的梯度和进行更新,解码层权重只根据重建损失梯度实现更新。

目标分布P采用DEC思想更新,用拟合分布Q表示,如式(3)所示。为避免不稳定,间隔T次迭代更新P。通过式(12)实现样本xi的聚类,将样本xi分配给使概率qij最大的类簇j。

Mini-Batch SGD优化对预训练后数据进行聚类的详细步骤描述如下。

输入:数据集X,类簇数K,目标分布更新间隔T,停止阈值δ,最大迭代次数M。

输出:自编码器编码层权重W,解码层权重W',聚类中心μ,类别标签集合s。

4 实验结果与分析

4.1 数据集描述

使用 MNIST[12]、USPS[7]和 STL-10[5]三个经典图像数据集来测试本文算法的性能,前两个为手写字体数据集,最后一个为复杂图像数据集。图5(a)、图5(b)分别给出了MNIST和STL-10数据集的部分样本示例。

MNIST数据集是LeCun等人[12]提出的一个经典手写字体识别库,包含70 000张手写数字图像,每张均为28×28像素。每张图像中的数字都是居中且都已标准化。USPS数据集含有9 298张手写数字灰度图像,每张图像大小为16×16像素。STL-10是图像分类和聚类常用数据集,其中图像分别是飞机、轮船、大货车、汽车、猫、狗、鸟、马、猴子和鹿,共10类。每类图像均有1 300个样本,数据集共有13 000张带标签样本,每张图像的尺寸为96×96的RGB三通道彩色图像。该数据集还含有100 000张无标签样本,可用于自编码预训练。

4.2 评价指标

使用聚类准确率(accuracy,ACC)、调整互信息(adjusted mutual information,AMI)和调整Rand指数(adjusted rand index,ARI)三种经典的聚类有效性评价指标[15-16]评价实验结果。三种指标的取值上界均为1,取值越大聚类结果越好。

Fig.5 Samples of MNIST and STL-10 datasets图5 MNIST和STL-10数据集部分样本

4.3 实验设置

为验证本文算法的优越性,将本文算法实验结果与DEC、IDEC和DCEC算法的实验结果进行比较。另外,还与使用自编码(autoencoder,AE)进行预训练,然后再聚类的算法AE+K-means,以及K-means、谱嵌入聚类算法(spectral embedded clustering,SEC)[17]的实验结果进行比较。

K-means的实验结果为随机初始化20次的最好聚类结果。SEC算法因添加了线性正则化,其性能在大多数据集上都优于传统谱聚类算法。DEC算法使用栈式自编码进行预训练,对所有数据集,自编码网络结构均是全连接多层感知器(multilayer perceptron,MLP),每层的神经元数,即维度,均采用d-500-500-2 000-10,其中d代表原始数据集数据的特征维数。除输入层、输出层和特征映射层外,其余所有层都使用修正线性单元(rectified linear units,ReLU)[18]作为激活函数。IDEC算法沿用DEC的上述配置,详细参数配置见文献[7]。DCEC算法的参数设置同文献[9]。

本文提出的两种算法,对于MNIST和STL-10数据集使用Adam优化方法调整网络参数,端到端预训练120次;对于USPS数据集使用Mini-Batch SGD优化方法优化参数,预训练2 000次。收敛阈值δ设置为0.1%,更新间隔T设置为总样本数||X||和训练批次大小BatchSize(即||S||=256)之比。除了输入层、输出层、特征映射层,其余层使用ReLU作为激活函数,输出层使用Sigmoid激活函数。

4.4 实验结果

本文DEC_DCNN和IDEC_DCNN算法与各对比算法的聚类准确率如表1所示,加粗和下划线表示最好结果,N/A表示没有相应结果。本文DEC_DCNN和IDEC_DCNN算法对各数据集的聚类结果评价指标AMI和ARI比较如图6所示。图7、图8分别展示了本文DEC_DCNN和IDEC_DCNN算法在3个经典图像数据集的聚类结果,分别展示了各数据集的每个类中前10个聚类概率较大的图像。每行对应于一个类簇,图像依据到相应类簇中心的距离从左到右排序。

Table 1 Clustering accuracy comparison of different algorithms表1 各算法的聚类准确率比较 %

表1实验结果显示:在MNIST、USPS、STL-10数据集上,提出的DEC_DCNN和IDEC_DCNN算法均取得了远优于以往算法的聚类准确率,尤其是IDEC_DCNN算法在两个手写字体数据集取得了极好的聚类效果,聚类准确率远远高于DCEC算法,在MNIST数据集达到了98.19%的聚类准确率。对于STL-10数据集,DEC算法提取HOG特征,IDEC、DEC_DCNN和IDEC_DCNN均采用本文提出的特征提取方法,从表1展示的DEC和IDEC算法的聚类准确率来看,后者的聚类准确率提高了近40%,说明本文提出的图像特征提取方法非常好。对相同的特征提取方式,本文提出的DEC_DCNN和IDEC_DCNN算法的聚类准确率均优于IDEC算法,表明本文提出的DEC_DCNN和IDEC_DCNN算法的网络结构更合理。

Fig.6 Comparison of proposed algorithms on 3 datasets in terms of benchmark metricsAMI andARI图6 本文算法在3个数据集的基准指标AMI和ARI比较

图6实验结果显示:本文IDEC_DCNN算法在各数据集的聚类结果指标AMI和ARI的取值均优于DEC_DCNN算法的相应指标,说明IDEC_DCNN算法使用的本文提出的17层深度网络结构更优,也说明IDEC_DCNN算法的损失函数更合理。

图7的实验结果揭示:对MNIST和USPS数据集,DEC_DCNN算法的结果均正确;对MNIST数据集,以往研究经常难以区分的9和4,6和4错误在DEC_DCNN算法的top10聚类结果中均没有出现。对STL-10数据集,本文DEC_DCNN算法对猫和狗的识别上有部分错误,但对汽车、轮船、猴子和鸟等类别的识别都正确,表明提出的17层深度聚类网络结构非常好。

图8关于IDEC_DCNN算法在3个图像数据集的实验结果显示:本文IDEC_DCNN算法在MNIST和USPS数字图像数据集的结果均正确;对STL-10图像数据集,只有在狗的类别中有一个被识别为猫,其余图像的类别识别均正确。由此可见:提出的IDEC_DCNN算法的优越性非常强。这不仅说明了本文提出的17层深度网络结构更优,也印证了IDEC_DCNN采用的损失函数更好。

5 结束语

Fig.8 Some clustering results of 3 datasets by proposed IDEC_DCNN图8 本文IDEC_DCNN算法对3个数据集的部分聚类结果

针对现有深度学习聚类算法存在的问题,提出了具有17层网络结构的深度聚类网络结构框架,以及基于该框架的两种深度图像聚类算法DEC_DCNN和IDEC_DCNN。3个经典图像数据集的实验结果表明,提出的17层深度网络结构框架避免了现有深度聚类网络的问题;提出的基于该深度网络结构框架的深度聚类算法DEC_DCNN和IDEC_DCNN的聚类性能优于现有深度聚类算法DEC、IDEC和DCEC,也优于K-means等其他经典聚类算法。

然而,实验过程中发现,本文算法的实验结果存在不稳定情况,分析原因可能是网络参数的优化方法选择不合适或者深度学习网络本身参数众多导致聚类结果波动。如何提高深度图像聚类算法的聚类结果稳定性是需要进一步研究的问题。

猜你喜欢

网络结构编码聚类
一种傅里叶域海量数据高速谱聚类方法
生活中的编码
快递网络结构研究进展
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
基于AutoML的保护区物种识别①
Genome and healthcare
面向WSN的聚类头选举与维护协议的研究综述
改进K均值聚类算法
基于Spark平台的K-means聚类算法改进及并行化实现