自编码器如何用于聚类?

数据挖掘 神经网络 聚类 时间序列 无监督学习 自动编码器
2021-10-14 04:12:39

假设我有一组绝对没有标签的时域信号。我想将它们聚集在 2 或 3 个类中。自编码器是学习压缩输入的无监督网络。所以给定一个输入x(i), 权重 W1W2, 偏见 b1b2, 和输出 x^(i),我们可以找到以下关系:

z(i)=W1x(i)+b1
x^(i)=W2z(i)+b2

所以 z(i) 将是一种压缩形式 x(i), 和 x^(i)后者的重建。到现在为止还挺好。

我不明白的是如何将其用于集群(如果有任何方法可以做到的话)。例如,在本文的第一个图中,有一个我不确定我是否理解的框图。它使用z(i)作为前馈网络的输入,但没有提及该网络是如何训练的。我不知道是否有我忽略的东西或者论文是否不完整。此外,本教程最后展示了自动编码器学习的权重,它们似乎是 CNN 将学习分类图像的内核。所以......我想自动编码器的权重可以在前馈网络中以某种方式用于分类,但我不确定如何。

我的疑问是:

  1. 如果x(i)是长度的时域信号N(IEx(i)R1×N), 能够z(i)也只能是一个向量?换句话说,这是否有意义z(i)是一个矩阵,其维度之一大于1? 我相信它不会,但我只是想检查一下。
  2. 这些量中的哪一个是分类器的输入?例如,如果我想使用一个经典的 MLP,它的输出单元与我想将信号分类的类一样多,我应该在这个全连接网络的输入端放置什么(z(i),x^(i),还有什么其他的)?
  3. 如何在这个 MLP 中使用学习到的权重和偏差?请记住,我们假设绝对没有可用的标签,因此不可能训练网络。我认为学过的Wibi在完全连接的网络中应该以某种方式有用,但我不知道如何使用它们。

观察:请注意,我使用 MLP 作为示例,因为它是最基本的架构,但这个问题适用于任何其他可用于对时域信号进行分类的神经网络。

3个回答

由于大多数点对之间的距离相似,因此很难在高维度上进行聚类。使用自动编码器可以让您在低维空间中重新表示高维点。它本身不进行聚类 - 但它是辅助聚类步骤的有用预处理步骤。您将映射每个输入向量xi 到一个向量 zi (不是矩阵......)具有较小的维度,比如 2 或 3。然后你会在所有的 zi 价值观。

也许其他人可以加入使用时间序列的自动编码器,因为我从来没有这样做过。我怀疑你会希望其中一层是一维卷积层,但我不确定。

有些人也使用自动编码器作为分类的数据预处理步骤。在这种情况下,您将首先使用自动编码器来计算x-到-z 映射,然后扔掉 z-到-x^ 部分并使用 x-到-z 映射作为 MLP 中的第一层。

在询问“如何使用自动编码器对数据进行聚类?”之前 我们必须首先问“自动编码器可以聚类数据吗?”


由于自动编码器学习从潜在空间重新创建数据点。如果我们假设自动编码器以“连续方式”映射潜在空间,则来自同一簇的数据点必须映射在一起。因此,在某种程度上,编码器会将相似的点“聚集在一起”,将它们“聚集在一起”。我们在文献中看到,自动编码器无法在潜在空间中保持这种连续性假设。

但对我们来说,变分自编码器正是以这种方式工作的。变分编码器学习具有两个主要属性的潜在空间映射:连续性、完整性1。
  • 连续性属性确保潜在空间中彼此靠近的两个点在解码时不会给出两个完全不同的输出。
  • 完整性属性确保在对潜在空间中的点进行采样时,在解码时会给出有意义的输出。

因此,使用自动编码器编码本身有时可能就足够了。然而,已经做了一些工作来明确地即兴创作/学习聚类。谢等人提出的算法。(2016) 2是一个示例,它“使用从当前软集群分配中派生的辅助目标分布迭代地细化集群”。

这周我正在考虑这个问题,我有了一个想法。请原谅我,如果这太离谱了。

假设将一个 n 维数据集分类为 k 个簇。

如果我们有一个 3 层网络:

输入层:n 个神经元

隐藏层:k 个神经元,softmax 激活

输出层:n 个神经元,线性激活

如果我们将数据集用作 x 和 y(这是典型的自动编码器,是吗?),并且我们使用最小化预测值和实际值之间的欧几里德距离的损失函数,我们最终会不会得到一个经过训练的层集群?

我认为第二层的输出最终会成为数据点所属的集群。我认为如果我们删除输入层,而是添加一个 k 维的输入层,并将每个集群的 one-hot 值传递给预测函数,我们将得到质心,我认为收敛时的错误在训练期间可用于绘制方差图并找到“肘部”以确定最佳聚类数。