1. 引言
聚类旨在将具有相似特征的样本划分到相同类别以达到区分异类样本的目的,是机器学习和数据处理中的一项重要任务。现今,随着数据类型的多样化和复杂化,传统的聚类算法无法直接处理图像、文本、语音等高维复杂数据,往往需要先对数据进行降维等预处理操作,才能使用聚类算法对数据进行划分,但浅层降维模型所提取的特征往往无法达到预期效果,以至于获得的聚类效果不能满足实际要求。近年,深度学习由于其具有强大的特征提取能力被应用到了各种各样的任务中,部分研究者尝试利用深度神经网络映射数据特征并联合聚类算法对所提取的特征进行分区,实现高维数据聚类,而深度学习框架下的聚类算法又可称为深度聚类。
从模型结构的角度来看,深度聚类由进行表示学习的深度神经网络和划分特征的聚类算法组成,目前可用于深度聚类的网络架构主要有仅依据聚类损失更新优化的前馈神经网络、利用重构损失保护嵌入特征的自编码器和用于生成任务的变分自编码器和生成对抗网络,还有主要用于处理图结构数据的图神经网络[1]。而从表示学习模块和聚类模块间的关系来看,深度聚类又可分为4种类型[2]:1) 多阶段深度聚类:即两个模块分别进行优化,聚类模块连接在表示学习模块之后,先通过表示学习提取特征,然后通过传统的聚类模型获得聚类结果。该方法虽然具有部署快速、编程友好及理解直观等优点,但亦存在不足之处,因为多数表示学习方法本身并不是为聚类而设计的,所提取的特征表示可能并不适用于所选取的聚类方法。且分阶段的深度聚类使得聚类结果无法直接优化表示学习以获得聚类友好的特征表示。2) 迭代深度聚类:利用所提取的特征进行聚类,然后通过聚类结果优化特征,交替进行上述步骤,直至模型效果达到预期。因为该方法使得表示学习模块和聚类模块相互促进优化,所以训练初期不太优异的聚类效果会直接影响提取的特征,故该方法效果主要取决于神经网络预训练过程所提取的特征表示是否对聚类友好。3) 生成式深度聚类:即基于变分自编码器和生成对抗网络的深度聚类方法,通常会对聚类结构进行假设,然后通过估计数据密度进行聚类分配。生成式深度聚类模型具有较高的精度,但同时也存在训练不稳定以及计算复杂度高等缺陷。4) 同时深度聚类:即同时优化表示学习和聚类模块,可通过自训练、最大化互信息和对比学习等方法达到该目的,原则上讲,获得的特征表示是对聚类友好的,但该方法易出现退化解的情况,导致数据点被分配到同一类别。
目前,深度聚类的研究多数聚焦在提升聚类精度上,Tan等[3]将模糊聚类联合到深度重建模型中,提出深度自适应模糊聚类,利用模糊隶属度表示深度聚类分配的清晰结构,通过检查从估计的瓶颈空间重采样的数据是否与先前具有一致的聚类特性来评估当前的聚类性能。钱宇华等[4]则是关注同类样本分配概率和样本表示空间的一致性,利用样本的近邻一致性约束聚类,通过充分挖掘同类演变间的相似关系以获得紧密的样本分布,以提升聚类性能。Bouali等[5]针对算法难以学习鲁棒的抗噪潜在特征的问题,利用Krawtchouk和Hahn矩的局部特征提取、离散正交性和噪声容忍性等优点获得有意义和鲁棒的图像表示,并利用层正则化进一步改善潜在空间质量并促进聚类过程,在四个常用数据集上产生优异的性能。陈俊芬等[6]认为自编码器无法提取局部低质图像的局部特征,利用非对称结构的卷积自编码器进行特征学习后利用K-means算法划分特征,还采用变步长的卷积层和全连接的重构误差正则约束网络的重构误差,提升了特征表示能力,产生更好的聚类结果。而为了解决数据来源不同的聚类问题,多视图聚类也逐渐成为研究的热点,Li等[7]利用深度模糊K-means解决多视角聚类问题,通过使用可学习的视图权重以灵活地集成跨视图信息,并为每个视图使用一个公共的隶属度矩阵和质心矩阵分别捕获一致和互补信息,同时将熵正则化应用于隶属度矩阵以增强模型的鲁棒性并避免平凡解,实验结果表明该方法优于现有的聚类方法。谢胜利等[8]为了解决多个视图重要性差异问题,利用多个变分自编码器提取不同视图的特征,并引入视图权重参数以获取共享的潜在特征,后建立面向聚类的损失目标使得特征更适合聚类任务。而除了联合传统的聚类算法和深度神经网络构建深度聚类模型外,近年也有一些较为新颖的方法出现,Li等[9]提出深度强化聚类以自适应的方式充分挖掘数据的结构知识,设计伯努利动作原型来捕获状态转移中的决策分布且设计了奖励最大化策略指导对数据结构的持续探索,确保数据的簇内紧凑性和簇间分离性。Li等[10]认为丰富的外部知识可以指导聚类,设计了一种文本辅助聚类方法以利用词网的文本语义来指导图像聚类,最终在该问题上取得先进的性能。而聚类数目的确定是传统聚类方法和深度聚类都需要关注的重点问题,Ronen等[11]提出可以在训练过程中推导聚类数目的深度聚类方法,设计了一种分裂/融合网络来适应聚类数目的变化,该方法优于多数无参数聚类方法。
从上述研究可以看出,当前深度聚类已经受到较多研究者的关注,各种类型的深度聚类模型都有着不同程度的研究进展,聚类的精度也在某些数据集上也达到可观的效果。从中可以发现,多数研究者的研究重点都落在提升聚类精度上,对深度聚类的训练效率问题关注相对较少,这使得模型难以具备较强的通用性,且有研究者[12] [13]提出模型效率是深度聚类未来研究重点之一。故本文将研究视角着眼于深度聚类模型效率问题,企图在尽可能保证聚类精度不出现明显下滑的情况下,提高深度聚类模型的训练速度,这不仅可以有效减少所需要的计算资源,还能为模型微调提供便利。针对模型效率问题,可以从两个思路出发进行解决,一是减少单次迭代所需要的时间,以至于在相同迭代次数的情况下,总训练时间有所减少。二是加速模型收敛速度,使得模型花费尽可能少的更新次数的条件下,令其聚类精度达到预期,这也是一种提高训练效率的方式。综上,本研究的主要贡献即为从上述两个角度出发优化深度聚类模型以提高模型的训练效率,最终在聚类效率和精度间权衡考虑:1) 利用随机采样策略改进深度聚类模型,在每次纪元中随机选取固定比率的样本批次,通过减少单个纪元处理的数据量以降低所消耗的训练时间,致使在训练相同纪元次数的条件下,训练时间较于先前有所降低,且模型精度不出现明显下滑。2) 为了使得深度神经网络提取的特征表示更适用于聚类任务,将神经网络所提取的特征进行变换,在新的特征空间下根据数据点和聚类中心间的距离函数优化聚类中心,促使模型参数可以花费较少的更新次数便达到可以接受的精度,模型训练效率显著提升。
2. 相关工作
本文选取深度自编码器和K-means聚类方法构建深度聚类模型,这两种方法因逻辑容易理解、计算复杂度低等优点受到了多数研究者的青睐,由于本文重点关注深度聚类的训练效率问题,故选择的深度K-means模型较于其他类型模型来说在该方面也更占优势。
2.1. 深度自编码器
原始的自编码器模型由对称的编码器和解码器单元所组成,编码器将数据样本映射到指定维度中,也称嵌入层,解码器负责将嵌入层数据重建为模型输出,通过令模型输出近似等价于模型输入来优化整体网络参数。由于嵌入层的维度通常小于输入样本的维度,可将其认为是数据样本中较为重要的特征。自编码器模型的数学表示如下所示[14]:
假设
表示具有n个样本的数据集,其初始维度设定为D。
表示编码器函数,将样本
转换为用于聚类的特征表示
,d为嵌入层维度。
为解码器函数,用于将嵌入层
解码获得模型输出
,即,
(1)
和
分别指代编码器和解码器的网络参数,其目标即为尽可能重构出与输入样本近似的模型输出,在每次迭代中依据重构损失优化自编码器网络参数,重构损失用式(2)表达,通常采用均方误差作为度量输入与输出间差异的标准。
(2)
而对图像数据来说,往往采用卷积层替代全连接层,通过构建卷积自编码器来映射原始数据,Goel等[15]提出基于深度卷积变换学习的聚类框架,创新之处在于无需学习自编码器的解码部分,可以防止过拟合情况的出现,其相较于其他深度聚类方法具有更快的运行速度。Wang等[16]认为自编码器中层数过多的解码器具备强大的解码能力,这使得编码器映射的特征可靠性降低,故提出非对称深度残差嵌入聚类,在编码器部分引入残差连接可以有效解决深度网络可能会出现的退化问题,并在解码器部分使用浅层网络,这使得编码器特征学习能力强于解码器的重构能力,提高了编码器所映射特征的可靠性。陈俊芬等[17]和韩洁等[18]都在网络架构中引入自注意力机制来提升所提取特征的可靠性,实现更精确的聚类划分。Feng等[19]对深度聚类使用的神经网络施加了三个约束以确保其表示学习能力,一是确保提取的表示能够利用解码器恢复,二是最大化类间可分离性和最小化类内紧凑性,三是根据判别信息调整新表示之间的亲和性。综上,在搭建深度自编码器时,可以利用卷积层、残差连接、降噪以及注意力机制等多种方法对网络进行优化以提升自编码器的表示学习能力。
2.2. K-Means聚类
传统的聚类方法有几种不同的类型,如基于质心的聚类方法(K-means、FCM),基于密度的聚类方法(密度峰值聚类)、基于层次的聚类方法(凝聚式和分裂式)、基于模型的聚类方法(高斯混合聚类),各种类型的方法存在着不同的优缺点,在实际应用中可以根据实际需求选择合适的方法。其中K-means是较早提出的也是最为经典的聚类方法,其各种变体和改进也层出不穷,直至目前仍是一种主流的聚类方法。这种基于分区的聚类方法往往需要通过定义在整体数据对象上的准则函数来优化聚类中心的选择,而针对K-means聚类而言,则需要找到数据集中各个数据点与聚类中心间的最小平方误差,使得每个数据点尽可能分配到距离最近的聚类中心。
其数学表达如下,令
表示数据集大小为n、数据维度为d,将其划分到k个类别中,
表示聚类中心,数据项与类中心间的最小平方误差则如式(3)所示,
(3)
标准的K-means算法的基本步骤如下:
(1) 随机初始化k个聚类中心;
(2) 根据数据项与各聚类中心的距离,将其分配到最近的聚类中心,形成k个簇;
(3) 由分配到各个簇的数据项求均值来计算新的聚类中心;
(4) 重复步骤(2),(3),直至达到设定的迭代次数或者聚类损失低于规定值;
从上述步骤可以看出,该算法有三个关键要素——类别数、初始聚类中心和距离函数[20],不同的类别数会导致不同的聚类结果,同时还会影响聚类中心的初始化,在实际应用中往往需要通过设定不同的类别数来选择最合适的参数值。聚类中心的初始化也十分重要,其直接影响最后的聚类结果,某些初始化聚类中心容易导致算法收敛到局部最小值,出现不理想的聚类结果,所以初始化聚类中心重中之重。而距离函数用于计算数据项与选择的聚类中心间的差值,通过最小化整体数据集与类中心间的距离来更新聚类中心和确定聚类分配,标准的K-means算法通常采用欧式距离来度量,许多研究者们也把研究重心放在不断优化距离函数,希望能够找到最为合适的距离函数,精准地度量数据项间的差异,这有利于加速算法收敛以及聚类精度的提升。
但标准的K-means方法难以处理高维数据,当数据维度较大时,距离函数无法准确度量输入项间的差异,因此往往需要通过对高维数据降维来减少计算复杂性并且保证算法能够正常执行。由于深度学习具有强大的特征提取能力,因此研究者们开始利用深度神经网络提取高维数据的关键特征后通过K-means聚类方法进行数据划分,这使得K-means具备处理复杂数据的能力。Zhang等[21]提出的深度模糊K-means聚类(DFKM)使用了K-means的模糊版本,即为数据项与每个类别之间设定隶属度来进行软聚类,并通过熵正则化来为隶属度提供置信度构建了自适应损失,然后DFKM通过联合编码器的重构损失、聚类的自适应损失和防止过拟合的正则项构建了新的损失函数以提高模型的鲁棒性。Guo等[22]认为自编码器产生的嵌入空间还不能很好地适用于聚类任务,因此将原始的嵌入空间通过正交变换矩阵转换到新的空间中,该正交变换矩阵由K-means的类内散射矩阵的特征向量所构成,最终获得更适用于聚类任务的特征表示。Hu等[23]提出基于多级自编码器的深度K-means,与传统的K-means聚类不同,聚类质心不再是具体常量而是用一个编码器来表示,结果证明该方法优于分阶段的深度K-means。Wu等[24]为了进一步增强所提取特征的判别性,提出了鲁棒深度模糊K-means聚类,引入了拉普拉斯正则化技术以保留数据的局部属性,并通过使用自适应损失函数令模型对不同类型的异常值变得鲁棒,该算法在多个数据集上的结果均优于所选择的基线。从上述研究中可以发现,在聚类模块上可通过改进损失函数,如引入隶属度、构建新范数或添加正则项等方法来优化模型,有利于提高模型的聚类精度。
如今将标准K-means和深度自编码器相结合的方法已经较为成熟,其聚类精度在部分数据集上也已经达到相对可观的标准,但除了聚类精度和效率之外,聚类的解释性也开始受到研究者的关注,Peng等[25]提出针对聚类解释问题的神经聚类方法,即将标准的K-means算法利用神经网络的方式实现,网络参数即为聚类质心,这可视作对K-means聚类进行解释的探索,构建了透明的聚类结构,而另一方面也使得用于聚类的神经网络参数具备实际含义,也为神经网络的解释性研究提供新的思路。故本文选择采用神经网络的方式进行K-means聚类,和传统K-means聚类不同,其可直接利用反向传播的方式更新聚类质心,简化了聚类步骤,一定程度上也提升了聚类效率。
K-means聚类算法重述为神经网络的过程如式(4)所示,其中
代表样本点,
代表聚类中心,对式(3)进行数学变换,将嵌入特征和聚类中心差值的
-norm的平方展开,并将两者长度归一化,最终将原式近似变换为主要项是输入项与聚类中心乘积的表达式。这即可视作一层前馈神经网络,数据的嵌入特征
为输入,网络参数即为聚类中心
,网络输出即为聚类损失,通过梯度下降法最小化聚类损失,优化更新代表聚类中心的网络参数,简化了原本算法聚类中心的更新步骤。
(4)
然后通过联合聚类损失(4)和重构损失(2)以优化更新模型参数,联合损失如式(5)所示:
(5)
其中
用于平衡两部分损失,最后将该神经聚类模块与深度卷积自编码器相联合,构建主要用于处理图像数据的深度K-means模型。模型结构如下图1所示。卷积自编码器的编码层将图像数据特征映射
Figure 1. Neural K-means clustering model based on convolutional autoencoder
图1. 基于卷积自编码器的神经K-means聚类模型
到潜在空间中,后利用神经网络的方式实现K-means聚类方法,并获得聚类损失,同时潜在空间通过解码器重构为输出以计算重构损失,联合重构损失和聚类损失,交替优化编码器和用于聚类的前馈神经网络的参数,直至模型达到收敛。
3. 方法
将深度卷积自编码器和具有K-means聚类功能的前馈神经网络模块相结合,联合聚类损失和重构损失通过批量梯度下降法来更新模型参数,在历经多个纪元下模型逐步收敛,在特定数据集上可以达到相对理想的精度,但需要花费的训练时间仍然过长,占用的计算资源过于昂贵,这既不利于模型超参数的调整,也使得模型的实用价值大打折扣。因此,提高深度聚类模型的训练效率具备一定的研究意义。而针对效率问题大致有两种思路去解决,一种思路是减少单次迭代所消耗的时间,从而在迭代次数相同的条件下,总的训练时长较于优化前有所缩减。另一种思路是加快模型的收敛速度,即尽可能在花费较少迭代次数的条件下,令模型的精度达到预期,达到缩短模型训练时间的目的。因此本文将从上述两个思路出发去优化深度K-means模型的训练效率,具体而言,一方面从减少单次纪元所处理的数据量入手,提出基于随机采样策略的深度K-means模型,在每次纪元中随机选取固定比率的样本批次,通过减少单个纪元处理的数据量以减少所消耗的训练时间,使得在训练纪元数相同的条件下,训练总时长较于先前有所缩减,且保证精度不出现明显下滑。而从另外一个角度出发去探讨如何提升训练效率,则是希望在花费较少纪元数的情况下取得理想的聚类精度,故需要映射更适用于聚类的特征表示,因此提出将深度神经网络提取的特征变换到新的特征空间中,在新的特征空间下利用特征与聚类中心间构建的损失函数来优化更新模型参数,使其尽快达到理想的聚类精度,从而实现加速模型训练的目标。
3.1. 基于随机采样策略的深度K-Means
对于深度学习模型,将所有训练数据进行一次前向过程和反向传播即称为一个纪元,而受到计算资源的限制,往往无法一次性处理整个数据集,需要对数据集进行分批处理,每次纪元将各批数据依次送入模型以计算损失和更新网络参数。而足够多的训练纪元对于深度学习模型来说是不可或缺的条件,某些规模较大的模型训练甚至需要花上数天时间,占用了非常昂贵的计算资源,同样的问题也存在于深度聚类模型中,虽然深度学习强大的特征表示能力解决了高维数据聚类问题,但其训练时间长的问题也存在于深度聚类中。因此下面利用随机采样策略优化深度K-means模型,每次纪元训练前,对整个数据集进行混洗,后随机选取一定比率的批次依次送入模型中,通过减少数据量来缩减单次纪元消耗的训练时间,从而使得在同样训练纪元数下,基于随机采样策略的深度K-means模型具有更高的训练效率,图2
Figure 2. Training process based on random sampling strategy
图2. 基于随机采样策略的训练流程
为该方法的简要流程图。
RSDK算法的简要步骤如下所示:
输入:数据集
,聚类数目k,平衡系数
,批大小,最大迭代纪元,采样率。
输出:最终的聚类指派
。
(1) 初始化自编码器参数
和
,初始化用作K-mean聚类功能的前馈神经网络的参数,其参数也对应为初始的聚类中心
。
(2) 将数据集
根据设定的批大小分为若干批次。
(3) 根据采样率对批次进行随机采样。
(4) 依次将各批数据送入模型,根据式(5)计算联合损失,并利用Adadelta优化器通过批量梯度下降法在不同的纪元下交替更新自编码器和神经K-means模块的参数。
(5) 重复(2)~(4)过程,直到达到设定的最大纪元数,完成模型训练过程。
在上述方法中,采样率的选取是该方法的一大重点,理论上讲,越小的采样率会使得模型的运行速度越快,但对模型性能造成的影响也会逐渐增大,如何选取合适的采样率来保证模型的精度不出现明显下降,往往需要通过多次实验去验证选取。Jiang等[26]对于采样率的选取提出建议,认为0.8和0.618是采样值的较优选择,其理论依据来源于通用性质规则(80-20规则)和黄金分割比率。这可以作为实际实验的初始值,但实际选取时可能还需要考虑数据集规模、模型大小,甚至是硬件条件等多方面的影响,选择最恰当的采样值以在模型效率与精度两方面同时获得最好的结果是该方法的关键问题。
随机采样策略在减少模型时间复杂度的同时,通过在不同纪元下送入不同的输入数据,在一定程度上可以避免模型出现过拟合问题,然而势必会对模型精度造成影响,如何进一步优化该方法来避免造成精度的下滑,这是需要进一步思考的重点。
3.2. 基于正交变换特征的二阶段深度K-Means
除了通过缩减单次纪元时间来提高训练效率,加速收敛速度也是提升效率的另一种方法,更准确地说,就是在尽量少的训练纪元数下,使得模型达到可以接受的精度。对于深度聚类模型来说,获得更适用于聚类算法的特征是加速收敛的关键。Guo等[22]利用标准的K-means方法获得类内散射矩阵后,通过对矩阵进行特征分解获得由特征向量组成的正交变换矩阵,该矩阵即可将特征表示和聚类中心变换到新的特征空间中,该算法收敛较快。变换过程在数学推导上即为矩阵乘法,过程如下所示:
(6)
从上述数学推导可以看出,当矩阵
为正交矩阵时,等式成立。下一步则是要求解出正交变换矩阵
,继续对式(5)进行推导:
(7)
由表达式可知,
为实对称矩阵,通过特征值分解并按照特征值从小到大重新排列特征向量即可获得正交矩阵
。然后在新的特征空间下计算损失,不同之处在于,只需要通过最小化特征表示和聚类中心在部分维度上的距离来优化表示学习模块的参数。
(8)
本文通过前馈神经网络实现K-means聚类,为了提升其训练效率,可采用上述优化方法,先通过特征表示和聚类中心求解出正交变换矩阵后,在新的特征空间下计算聚类损失,然后优化更新模型参数,这对模型训练效率的提升具有促进作用。不仅如此,Guo等[22]还认为优化自编码器的解码器部分对特征表示的优化并无太大的意义,因为解码器参数并不直接影响获得的特征表示,所以在预训练自编码器后就丢弃解码器部分,在后续聚类过程中仅优化编码器参数。该训练策略不仅简化了网络结构,并且采用了小批量梯度下降法来更新权重,这对提升模型效率也可以起到不俗的效果。故依据该思路设计了二阶段的训练策略,即先预训练自编码器获得特征表示,后丢弃解码器部分,再联合聚类模块,后仅依赖在新的特征空间下的聚类损失来更新聚类中心和编码器部分,如图3所示。
Figure 3. Two-stage in-depth K-means training
图3. 二阶段的深度K-means训练
OTDK算法的具体步骤如下所示:
输入:数据集
,聚类数目k。
输出:最终的聚类指派
。
(1) 根据公式(1)预训练自编码器参数
和
,达到设定迭代数后移除解码器部分,保留嵌入层和编码器部分。
(2) 为了更好地初始化,利用标准K-means计算的聚类中心作为替代K-means功能的前馈神经网络的初始参数值。
(3) 根据编码器提取的特征表示
和聚类中心先计算出类内散射矩阵
,计算出正交变化矩阵
。再通过公式(8)计算在新特征空间下的损失,采用小批量梯度下降法优化更新编码器参数。
因此OTRK相较于RSDK的优势可以总结为下面几点:1) 在更新聚类模块参数时不再考虑重构损失,一定程度上减轻了计算量。2) 采用小批量梯度下降法更新编码器参数,加速模型参数更新。3) 将表示学习提取的特征利用正交变换矩阵变换到新的特征空间中,获得对聚类更友好的特征。
综上,从减少单次训练纪元消耗时间和加快收敛速度两个角度出发分别对深度K-means模型进行优化,企图减少其训练消耗的总时长,有效地节省计算资源,使得模型在算力受限的条件下也可以进行训练,让算法具备更强的通用性。
4. 实验
4.1. 评价指标
为了评价聚类的准确性,我们选用ACC、ARI和NMI三个指标用于度量聚类的精度。ARI (adjusted rand index)通过计算样本点对位于同一类簇和不同类簇的数目来度量两个聚类结果之间的相似度,其计算式如下所示:
(9)
其中a表示无论是实际类别还是聚类结果,均隶属同一个簇的样本对数目;b表示实际类别是属于同一簇而聚类结果不属于同一簇的样本对数目;c表示实际类别不属于同一簇而聚类结果属于同一簇的样本对数目;d表示实际类别和聚类结果都不属于同一簇的样本对数目。
ACC指标则是指聚类正确样本数占总样本数的比值,其计算式如下:
(10)
其中
表示第j类中聚类正确的样本数,N表示总样本数。
NMI (Normalized mutual information)通过互信息的方式来衡量聚类的性能,其计算式如下所示:
(11)
其中X和Y分别指实际类别和聚类结果,
为两者的互信息,而
和
分别表示两者的信息熵。
ARI的取值范围是[−1, 1],NMI和ACC的取值范围是[0, 1],三个指标均是越靠近1表示聚类结果越好。
4.2. 数据集
下面将选取三个常见的图像数据集来评估算法的效果,分别是MNIST、Fashion-MNIST、CIFAR-10。
MNIST:是最为常用的手写数字数据集,有0到9共十个手写数字,是通道数为1的灰度图像,其分辨率为28 * 28,其训练集有60,000张,测试集有10,000张,针对聚类问题通常可以不区分训练集和测试集,故总数据项共70,000张。
Fashion-MNIST:与MNIST数据集大小、分辨率相同,但其数据类型为服饰,包含裤子、衬衫等十种不同的服装,即分别对应十种类别,数据项相较于手写数字而言其复杂性更高,而这两个数据集也是评估深度聚类算法较为常用的数据集。
CIFAR-10:与上述数据集不同,其为彩色图像,通道数有R、G、B三个通道,样本像素为32 * 32,其涵盖的物体种类丰富,有飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车共十类物体。训练集和测试集共60,000张。
4.3. 实验设置
所有实验均在cudnn v10和GTX 1050Ti (NVIDIA)下的Pytorch框架下进行,用于测试及评价所提出深度聚类算法的精度和效率,选取数据集的批大小均设定为256和四层以保证在同等条件下比较算法性能的优劣。而搭建的卷积自编码器的主要结构有四层卷积层、四层反卷积层和四层全连接层,所有卷积层后面均连接着批量归一化层和激活函数,表1仅列举网络结构卷积层的具体参数,初始输入通道数和最终输出通道数由数据集通道数确定。
Table 1. The specific parameter values of the convolutional layer in the built autoencoder
表1. 搭建的自编码器中卷积层的具体参数值
|
(输入通道数、输出通道数、卷积核尺寸,步长、填充数,输出填充数) |
卷积层1 |
(-, 16, 3, 1, 1, 0) |
卷积层2 |
(16, 32, 3, 2, 1, 0) |
卷积层3 |
(32, 32, 3, 1, 1, 0) |
卷积层4 |
(32, 16, 3, 2, 1, 0) |
反卷积层1 |
(16, 32, 3, 2, 1, 1) |
反卷积层2 |
(32, 32, 3, 1, 1, 0) |
反卷积层3 |
(32, 16, 3, 2, 1, 1) |
反卷积层4 |
(16, -, 3, 1, 1, 0) |
4.4. 实验结果
在选取的数据集上验证所提出改进算法的效率和精度,实际未采用随机采样策略的模型也可视为采样率设置为1的RSDK,表2即为RSDK实验结果。
Table 2. Clustering accuracy and training time of RSDK at four sampling rates
表2. RSDK在四种采样率下的聚类精度和训练时间
数据集 |
采样率 |
NMI |
ARI |
ACC |
epoch |
Time (s) |
s/epoch |
MNIST |
1 |
0.8586 |
0.8585 |
0.9325 |
3000 |
89,673 |
29.89 |
0.8 |
0.8471 |
0.8403 |
0.9227 |
66,542 |
22.18 |
0.7 |
0.8489 |
0.8435 |
0.9244 |
60,414 |
20.13 |
0.6 |
0.8100 |
0.7452 |
0.8028 |
55,356 |
18.45 |
F-MNIST |
1 |
0.6347 |
0.4438 |
0.5572 |
3000 |
79,033 |
26.34 |
0.8 |
0.6302 |
0.4358 |
0.5471 |
66,219 |
22.07 |
0.7 |
0.6479 |
0.4776 |
0.6029 |
59,425 |
19.80 |
0.6 |
0.6348 |
0.4343 |
0.5531 |
52,036 |
17.36 |
CIFAR-10 |
1 |
0.1055 |
0.0553 |
0.2153 |
3000 |
82,466 |
27.48 |
0.8 |
0.1015 |
0.0545 |
0.2139 |
68,322 |
22.77 |
0.7 |
0.1045 |
0.0554 |
0.2217 |
61,856 |
20.61 |
0.6 |
0.0990 |
0.0516 |
0.2096 |
55,476 |
18.49 |
从RSDK在MNIST数据集上的训练结果可以看出,当采样率设置为0.7和0.8时,所训练模型的聚类精度相较于未采用随机采样策略前相比有轻微下滑,而当采样率设为0.6时,模型的聚类精度相比先前则是出现明显下降,从不同采样率下所花费的训练时间可以看出,随着采样率的减少,消耗的总训练时长也随之缩短。图4展示了四种采样率下所训练模型在MNIST数据集的聚类效果随着训练纪元的递增而逐步上升,从图中也可以看出,对于该数据集来说如果从缩短训练时间的角度来分析的话,适当减少设定的训练纪元数,也可获得较为满意的模型精度,继续增加训练纪元数消耗的计算资源与模型效果的提升不呈正比。
图5展示了四个采样率的RSDK在F-MNIST数据集下的训练过程,随着训练纪元递增,选取的三个聚类指标稳定收敛,由于该数据集相较于MNIST来说更复杂,其聚类精度相对而言也没有达到非常高的水准,从中也可以发现采样率选择对其精度的影响并不明显,但该策略对训练效率的优化效果是可以保证的。
图6为CIFAR-10数据集上的实验结果,由于该数据集复杂性高于MNIST数据集,用于评价训练模型的聚类指标不能达到预期,训练纪元数的递增也无法有效提升聚类精度,虽然随机采样策略仍能够确保减少需要的训练时间,但目前亟待解决的问题是如何提升复杂数据集的聚类准确度。
而OTDK较于先前模型作出较大的调整,其一是采用了分阶段的训练策略,先预训练自编码器,在移除解码器部分后,再与聚类模块结合,交替优化两个模块。其二是将特征表示和聚类中心变换到新的
Figure 4. Training process of RSDK on MNIST dataset (sampling rate set to 1, 0.8, 0.7, 0.6)
图4. RSDK在MNIST数据集上的训练过程(采样率设为1、0.8、0.7、0.6)
Figure 5. Training process of RSDK on F-MNIST dataset (sampling rate set to 1, 0.8, 0.7, 0.6)
图5. RSDK在F-MNIST数据集上的训练过程(采样率设为1、0.8、0.7、0.6)
Figure 6. Training process of RSDK on CIFAR-10 dataset (sampling rate set to 1, 0.8, 0.7, 0.6)
图6. RSDK在CIFAR-10数据集上的训练过程(采样率设为1、0.8、0.7、0.6)
Table 3. The optimal clustering evaluation index of OTDK in dataset training and the time consumed in the pre-training phase
表3. OTDK在数据集训练的最优聚类评价指标以及预训练阶段消耗的时间
数据集 |
NMI |
ARI |
ACC |
Pretrain epoch |
Pretrain time (s) |
s/epoch |
MNIST |
0.8908 |
0.8968 |
0.9516 |
200 |
3548 |
17.48 |
F-MNIST |
0.6068 |
0.4522 |
0.5910 |
3722 |
18.61 |
CIFAR-10 |
0.0614 |
0.0473 |
0.1707 |
4435 |
22.17 |
空间中,重新计算聚类损失来优化更新模型参数。表3为OTDK在三个数据集的聚类精度以及在预训练阶段所消耗的时间。
之所以不将第二阶段交替更新表示学习和聚类模块消耗的时间考虑进去,是因为该算法在第二阶段模型优化更新的初期,其聚类精度就接近收敛,与后续更新获得的聚类精度相比无明显差异,且已经接近该模型能够达到的聚类精度的峰值,图7为其随着聚类中心更新,其评价指标的变化情况。与RSDK差异之处在于其采用小批量梯度下降法来更新聚类中心,这也是算法收敛较快的因素之一。可以看出,OTDK所消耗的训练时间远低于RSDK,甚至在MNIST数据集上的聚类精度也要高于RSDK所获得的聚类精度,虽然OTDK在F-MNIST和CIFAR-10数据集上的聚类精度要略低于RSDK,但不可否认的是OTDK是效率较高的深度聚类方法。但该方法同样存在一定的缺陷,随着聚类中心不断更新,OTDK会出现退化的情况,这可能也是移除解码器部分后,特征表示仅依赖于聚类损失去优化,随着更新次数的增多特征表示被破坏,进而导致聚类精度下滑。
Figure 7. The clustering metrics of OTDK on the three datasets change with the update of the clustering center
图7. OTDK在三个数据集上的聚类指标随着聚类中心更新的变化情况
5. 结论
本文从两个角度出发探索提高深度聚类模型训练效率的方法,一是减少单次迭代需要消耗的时间,通过随机采样策略优化深度聚类模型,提出了RSDK,使得单次纪元所需的训练时间减少,从而缩短总的训练时长。二是尽可能让模型参数通过较少更新次数,就达到可以接受的精度,在训练策略、损失函数和网络结构三个方面来对模型进行改进,提出了OTDK,在保证聚类精度不出现明显下降的情况下,极大地提高了训练效率。