6_NN_Clustering
Кластеризация данных с помощью нейросети
Необходимо обучить нейросеть-энкодер для кластеризации изображений на одном из стандартных датасетов: MNIST, Fashion-MNIST или CIFAR-10.
Идея подхода: нейросеть не кластеризует сама по себе — она преобразует исходные пиксели в компактные эмбеддинги (векторы меньшей размерности), в которых объекты одного класса расположены близко друг к другу. Кластеризация затем выполняется обычным K-Means поверх этих эмбеддингов.
Обучение происходит итеративно: на каждой эпохе K-Means назначает метки кластеров, по меткам вычисляется функция потерь, и эта потеря обновляет веса энкодера — чтобы на следующей эпохе эмбеддинги разделялись лучше.
⚠️ Использование готовых реализаций DEC (Deep Embedded Clustering) запрещено. Энкодер и функции потерь реализуются самостоятельно.
Целевые функции
Необходимо реализовать кластеризацию с тремя различными функциями потерь и сравнить результаты.
Внутрикластерный разброс — минимизируем суммарное попарное расстояние между точками внутри каждого кластера. Чем меньше значение, тем плотнее кластеры:
$$F(w, b) = \min \sum_C \sum_{x_i, x_j \in C} d(x_i, x_j)$$
Расстояние до центроидов — минимизируем среднее расстояние от каждой точки до центра её кластера. Более быстрый в вычислении вариант предыдущей функции:
$$F(w, b) = \frac{1}{N} \sum_n \sum_i (x_i^{(n)} - C_i)^2$$
Silhouette Loss — наиболее информативная функция: штрафует не только за "размазанность" своего кластера, но и за близость чужих кластеров. Максимизируем силуэтный коэффициент (минимизируем его отрицание):
$$L = -\frac{1}{N} \sum_{i=1}^{N} \frac{b(x_i) - a(x_i)}{\max(a(x_i), b(x_i))}$$
где $a(x_i)$ — среднее расстояние до точек своего кластера, $b(x_i)$ — среднее расстояние до ближайшего чужого кластера.
Оценка качества
После обучения с каждой из трёх функций потерь вычислите метрики и сравните результаты:
- Silhouette Score
- Adjusted Rand Index (ARI)
- Normalized Mutual Information (NMI)
Истинные метки классов (цифры 0–9 в MNIST и т.д.) используются только для оценки после построения кластеров — не в процессе обучения.
Визуализация
Полученные кластеры необходимо визуализировать с использованием методов снижения размерности (PCA или t-SNE). Визуализация должна позволять сравнить, насколько хорошо разделяются эмбеддинги при каждой из трёх функций потерь.