# Обучение без учителя: как метод SCAN классифицирует изображения без единой метки

Источник: https://www.youtube.com/watch?v=hQEnzdLkPj4
Канал: Yannic Kilcher
Опубликовано: 03.06.2020

---

В области компьютерного зрения долгое время доминировало обучение с учителем (supervised learning), требующее огромных размеченных датасетов. Однако группа исследователей (Вутер Ван Гансбеке, Симон Ван Дамм и др.) предложила метод SCAN, который позволяет классифицировать изображения, вообще не используя метки в процессе обучения. В своем видео Янник Килчер подробно разбирает статью «Learning To Classify Images Without Labels», объясняя, как комбинация самообучения, кластеризации и саморазмечивания позволяет достичь точности, сопоставимой с классическими методами.

## 🧠 Суть проблемы: как классифицировать то, что не названо?
[[JUMP:02:20]]

Основной вопрос, который задают авторы исследования: можно ли автоматически классифицировать изображения без использования эталонных аннотаций (ground truth) и даже без предварительного знания самих классов [02:20].

Янник поясняет, что с чисто технической точки зрения «классификация без меток» эквивалентна задаче кластеризации. Если алгоритм сможет сгруппировать все фотографии собак в один кластер, а кошек — в другой, то отсутствие текстовых названий («собака», «кошка») не мешает оценке точности. При тестировании исследователи используют максимально «щедрый» подход: они сопоставляют полученные кластеры с реальными метками так, чтобы получить наивысший возможный балл точности [03:26]. Если разделение данных алгоритмом совпадает с разделением, задуманным создателями датасета, метод считается успешным.

## 🛠 Трехэтапный алгоритм: от пикселей к семантике
[[JUMP:01:06]]

Авторы статьи предлагают отойти от существующих методов (например, DeepCluster) и использовать трехступенчатый процесс, в котором обучение признаков и кластеризация разделены [04:23]:

1.  **Самоуправляемое обучение (Self-Supervised Learning):** получение качественных представлений (embeddings).
2.  **Семантическая кластеризация:** использование метода ближайших соседей.
3.  **Тонкая настройка через саморазметку (Self-labeling):** уточнение результатов.

### Этап 1: Борьба с «низкоуровневыми» ловушками
[[JUMP:09:01]]

Предыдущие попытки классификации без учителя часто проваливались, потому что нейросети фокусировались на низкоуровневых признаках. По словам Янника, если в углу двух разных картинок есть синий пиксель неба, сеть может ошибочно объединить их в один класс, игнорируя то, что на одной изображен самолет, а на другой — дельфин [08:21].

Чтобы этого избежать, используется **Self-Supervised Learning**. Суть проста:

*   Берется исходное изображение и его трансформированная версия (обрезанная, повернутая или измененная в цвете) [10:45].
*   Нейросеть обучается минимизировать расстояние между ними в векторном пространстве.
*   Цель — заставить сеть «игнорировать» конкретное положение пикселей и фокусироваться на высокоуровневых объектах. К моменту завершения этого этапа сеть уже умеет выделять важные признаки, не зная имен объектов [12:32].

### Этап 2: Поиск «соседей» и кластеризация SCAN
[[JUMP:13:39]]

Вместо того чтобы просто запустить стандартный алгоритм k-means поверх полученных векторов, авторы обучают новую сеть (SCAN). Для каждого изображения находятся 5 ближайших соседей в пространстве признаков, полученном на первом этапе [16:49].

Основная идея этого этапа: если два изображения являются «соседями» (похожи по признакам), они должны получить одинаковую метку класса [20:28]. В функцию потерь (loss function) закладываются два условия:

1.  **Консистентность:** предсказания для изображения и его соседа должны максимально совпадать.
2.  **Энтропия:** распределение по классам должно быть равномерным по всему датасету. Это нужно, чтобы сеть не свалилась в тривиальное решение, назначив все картинки в один единственный кластер [22:42].

Янник признается, что во время разбора формул он сначала усомнился в утверждении авторов о том, что такая функция заставляет сеть выдавать «уверенные» (one-hot) предсказания. Однако после недолгих расчетов в прямом эфире он подтвердил правоту исследователей: из-за специфики нормализации векторов (L1-норма), максимизация скалярного произведения действительно поощряет сеть выбирать один конкретный класс, а не распределять вероятности между несколькими [25:56].

### Этап 3: Саморазметка (Self-labeling)
[[JUMP:28:04]]

На последнем этапе сеть начинает «учиться у самой себя». Она берет изображения, в классификации которых наиболее уверена (используется порог уверенности, например, 0.7), и использует эти предсказания как твердые метки для дальнейшего дообучения [32:11]. Это позволяет уточнить границы между кластерами и отсеять «шумные» примеры.

## 📊 Результаты экспериментов: ImageNet и CIFAR-10
[[JUMP:32:11]]

Результаты оказались впечатляющими, особенно на классических наборах данных:

*   **CIFAR-10:** Метод SCAN достиг точности **83.5%** и выше, вообще не видя меток [33:57]. Для сравнения, простая кластеризация k-means дает лишь около 35%.
*   **ImageNet:** На подмножестве из 50 классов точность составила **81%** (supervised-базовый уровень для той же архитектуры — 86%). На 200 классах результат упал до 69%, что все равно остается высоким показателем для обучения без учителя [38:55].

Интересное наблюдение: визуализация кластеров показала, что сеть успешно группирует изображения по семантическим блокам. Например, она выделяет «собак», «насекомых» или «людей с рыбой» в отдельные группы без подсказок со стороны человека [01:06].

## ⚠️ Критика и «подводные камни»
[[JUMP:44:11]]

Несмотря на восторг от технологического прорыва, Янник Kilcher указывает на важный нюанс — проблему выбора гиперпараметров.

По мнению ведущего, утверждение о «полном отсутствии меток» несколько лукаво. Исследователи подбирали архитектуру нейросети, типы аугментации данных (повороты, обрезки), количество соседей (K=5) и пороги уверенности, опираясь на итоговую точность [44:53].
> «Все выборы гиперпараметров алгоритма были продиктованы знанием меток. Остается неясным, как этот метод покажет себя в реальной ситуации, когда меток нет совсем и выбирать параметры придется вслепую», — утверждает Янник [45:07].

Также обсуждалась проблема «избыточной кластеризации». Если заставить алгоритм искать 20 классов там, где их всего 10, точность падает, хотя теоретически должна расти из-за большей «щедрости» системы оценки. Это указывает на некоторую хрупкость предложенного подхода при масштабировании на неизвестное количество категорий [43:31].