【问题标题】:Clustering using MLP on non-labeled dataset在非标记数据集上使用 MLP 进行聚类
【发布时间】:2021-08-17 07:09:56
【问题描述】:

如何使用多层感知器在未标记的数据集上进行 K-Means 等聚类。 我有带标签的 MNIST 数据集,但我想用 MLP 执行聚类算法。 有什么想法吗?

【问题讨论】:

  • 聚类通常是无监督的,MLP 通常是有监督的。你的确切问题是什么?你能定义一个距离度量吗?你会期望 MLP 定义这样的吗?
  • @PeterLang 我想用 K-Means 之类的 MLP 对未标记数据集(无监督)进行聚类。
  • MLP 是指堆叠的线性层还是任何神经网络?感觉这里重要的是目标(kmeans'不可微),而不是架构。
  • 我认为将多层感知器(“普通”神经网络)应用于未标记的数据是根本不可能的,因为神经网络通常只处理标记的数据。在未标记的数据上训练神经网络似乎没有意义。 (那时训练会是什么样子?)神经网络是监督模型(需要正确解决方案的示例,因此需要标签),但聚类通常是无监督(不需要标签)。
  • 这不一定是真的,transformers 网络的预训练工作没有标签。都是关于如何定义目标任务和损失函数。

标签: python machine-learning cluster-analysis k-means mlp


【解决方案1】:

编辑:如果问题仅限于使用 MLP,我认为您正在寻找可区分的聚类目标。 (由于发现质心部分,K-Means 目标不可微分)。我认为这不是集群的“主流”方法,但肯定有一些工作可以使用深度网络来优化集群(可微分)目标:

  1. Differentiable Deep Clustering with Cluster Size Constraints : “我们利用最优传输和 k-means 之间的联系,并依靠熵正则化来 导出一个完全可微的聚类损失,它可以是 在 (P) 中使用并直接使用 SGD 进行优化”。因此您可以将 SGD 应用于 MLP,MLP 是使用这种损失的最佳架构吗?取决于您的数据。

我能想到的另一种使用 ANN 的方法是 self-organizing maps (or Kohonen maps)。这取决于你对 MLP 的定义有多宽松,你当然可以在输入层和输出特征图之间添加一堆层。

您可以潜在地使用 MLP 将数据嵌入到向量空间中,您可以使用它在 KMeans 期间计算一些度量(例如欧几里德距离),这可能有意义也可能没有意义,具体取决于您如何计算嵌入和数据集。

你可以在没有标签的情况下使用自动编码器来做到这一点,尽管这比简单的 MLP 复杂一点:

不过,这可能有点矫枉过正,它确实取决于问题。考虑首先对您的数据进行 KMeans(无 MLP)。如果问题足够复杂,将数据移动到潜在空间可能会起作用,这基本上就是 word2vec 所做的,人们用它进行聚类和各种事情(参见this

【讨论】:

  • Autoencoder 不能帮助我们对 k-means 等非标记数据集进行聚类。我想通过 MLP 的变化进行聚类。
  • 您需要改变(或定义)的是学习问题,而不是架构本身。我在没有使用 K-means 的情况下编辑了答案,但仍然需要在 MLP 之外进行一些更改(实际上取决于您所说的 a-change)
猜你喜欢
  • 2018-07-26
  • 1970-01-01
  • 2011-07-25
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 2021-05-03
  • 2019-07-22
相关资源
最近更新 更多