Самообучаемое обучение

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Ограничения и открытые вопросы)
(Добавлено перенаправление на существующую статью)
 
Строка 1: Строка 1:
-
'''Самообучаемое обучение''' (''self-supervised learning, SSL'') — это парадигма [[машинное обучение|машинного обучения]], в рамках которой модель обучается различать схожие и различные объекты без использования внешней разметки. В отличие от [[обучение с учителем|обучения с учителем]], контрастивные методы формируют сигнал учителя на основе структуры самих данных: они сближают представления [[аугментация данных|аугментированных]] версий одного и того же объекта (положительные пары) и отдаляют представления разных объектов (отрицательные пары) <ref name="jaiswal_survey">Jaiswal, A., et al. "A Survey on Contrastive Self-supervised Learning." arXiv:2011.00362, 2020.</ref><ref name="ultralytics_glossary">Ultralytics. "Contrastive Learning." Glossary, 2026.</ref>.
+
#REDIRECT[[Самостоятельное обучение]]
-
 
+
-
Преимущество контрастивного подхода заключается в способности извлекать [[дискриминативные признаки]] из огромных массивов неразмеченных данных. Это делает его основой для построения универсальных моделей в [[компьютерное зрение|компьютерном зрении]], [[обработка естественного языка|NLP]] и других областях, где размеченные данные являются дефицитным ресурсом <ref name="marusov_theory">Марусов А. Э., Зайцев А. А. "Теоретически обоснованные контрастивные методы самообучения для непрерывных зависимых данных." Докл. РАН, 2025.</ref><ref name="nature_ecg_comparison">"Comparison results based on transfer learning on ECG datasets." Nature, 2025.</ref>.
+
-
 
+
-
== Терминология и базовые понятия ==
+
-
 
+
-
* '''Якорь (''anchor'')''': Исходный объект <tex>x</tex>, от которого строится положительная пара.
+
-
* '''Положительная пара (''positive pair'')''': Два семантически схожих объекта: например, две случайные аугментации одного изображения <tex>x</tex> и <tex>x^+</tex> или два соседних кадра в видео <ref name="jaiswal_survey"/>.
+
-
* '''Отрицательная пара (''negative pair'')''': Объекты, которые не должны быть близки в пространстве представлений. Обычно это любые два разных объекта из батча или очереди <ref name="jaiswal_survey"/><ref name="ultralytics_glossary"/>.
+
-
* '''[[Энкодер]] (''encoder'')''': Нейросеть <tex>f_\theta</tex>, отображающая входной сигнал <tex>x</tex> в вектор представления (эмбеддинг) <tex>z = f_\theta(x)</tex>.
+
-
* '''Проекционная головка (''projection head'')''': Дополнительный MLP (обычно однослойный или двухслойный) <tex>g_\phi</tex>, который отображает представление <tex>z</tex> в пространство, где вычисляется контрастивная функция потерь <tex>h = g_\phi(z)</tex>. Во многих работах проекционная головка используется только во время обучения и отбрасывается на этапе оценки <ref name="jaiswal_survey"/>.
+
-
* '''Температурный параметр (<tex>\tau</tex>)''': Скалярный гиперпараметр, контролирующий "резкость" распределения сходств в функции потерь. Малые значения <tex>\tau</tex> заставляют модель сильнее наказывать близость к отрицательным примерам <ref name="jaiswal_survey"/><ref name="ultralytics_glossary"/>.
+
-
 
+
-
== Исторический контекст ==
+
-
 
+
-
Контрастивное обучение берёт начало в методе [[triplet loss]], предложенном для [[метрическое обучение|метрического обучения]] (Schroff et al., 2015), где модель обучалась на триплетах (якорь, положительный пример, отрицательный пример). Однако ранние подходы требовали сложной стратегии семплирования триплетов и были нестабильны.
+
-
 
+
-
Прорыв произошёл с переходом к '''сравнению внутри батча''' (''in-batch negatives''), когда все остальные объекты в мини-батче автоматически становятся отрицательными. Ключевые вехи:
+
-
 
+
-
* **CPC (Contrastive Predictive Coding)** <ref name="jaiswal_survey"/> — применение контрастивного обучения к последовательным данным (аудио, текст, видео) через предсказание будущих скрытых состояний.
+
-
* **SimCLR** (Chen et al., 2020) <ref name="jaiswal_survey"/><ref name="nature_ecg_comparison"/> — простая и эффективная архитектура, показавшая, что сильные аугментации и большой размер батча являются ключевыми факторами успеха.
+
-
* **MoCo** (He et al., 2020) <ref name="jaiswal_survey"/><ref name="nature_ecg_comparison"/> — введение механизма очереди и momentum-энкодера, что позволило использовать миллионы отрицательных примеров без увеличения размера батча.
+
-
* **BYOL** (Grill et al., 2020) <ref name="jaiswal_survey"/><ref name="nature_ecg_comparison"/> — отказ от отрицательных примеров: метод использует асимметричную архитектуру (''teacher-student'') и stop-gradient, чтобы избежать коллапса представлений.
+
-
* **SwAV** (Caron et al., 2020) <ref name="jaiswal_survey"/><ref name="nature_ecg_comparison"/> — кластеризационный подход, который не требует попарного сравнения всех объектов в батче, что делает его более эффективным.
+
-
 
+
-
Сравнение этих методов на наборе данных ImageNet показало, что они способны достигать качества, сравнимого с обучением под наблюдением <ref name="jaiswal_survey"/><ref name="video_ssl_analysis">"A critical analysis of self-supervision for video." arXiv:2104.14558, 2021.</ref>. На медицинских наборах данных (например, ЭКГ) контрастивное обучение также демонстрирует значительный прирост качества по сравнению с обучением с нуля <ref name="nature_ecg_comparison"/>.
+
-
 
+
-
== Математическая постановка ==
+
-
 
+
-
Пусть дан батч из <tex>N</tex> объектов. Для каждого объекта <tex>x_i</tex> с помощью случайных аугментаций генерируются два представления: <tex>\tilde{x}_i</tex> и <tex>\tilde{x}_i'</tex>, которые образуют положительную пару. Все остальные <tex>2N - 2</tex> аугментированных объекта в батче считаются отрицательными по отношению к <tex>\tilde{x}_i</tex>.
+
-
 
+
-
Энкодер <tex>f_\theta</tex> отображает аугментированные объекты в представления, а проекционная головка <tex>g_\phi</tex> — в пространство, где вычисляется контрастивная функция потерь.
+
-
 
+
-
=== InfoNCE и NT-Xent ===
+
-
 
+
-
Основой большинства современных контрастивных методов является функция потерь '''InfoNCE''' (''Noise Contrastive Estimation'') <ref name="jaiswal_survey"/>. Для пары <tex>(i, j)</tex>, являющейся положительной, в батче размера <tex>N</tex> используется ''NT-Xent'' (''Normalized Temperature-scaled Cross Entropy'') — вариант InfoNCE:
+
-
 
+
-
<tex>
+
-
\mathcal{L}_{\text{NT-Xent}} = -\frac{1}{2N} \sum_{i=1}^{N} \sum_{j \in \{i^+, i^{-}\}} \log \frac{\exp(\text{sim}(h_i, h_j) / \tau)}{\sum_{k=1}^{2N} \mathbf{1}_{k \neq i} \exp(\text{sim}(h_i, h_k) / \tau)}
+
-
</tex>
+
-
 
+
-
где <tex>h_i = g_\phi(f_\theta(\tilde{x}_i))</tex>, <tex>\text{sim}(u, v) = u^\top v / (\|u\| \|v\|)</tex> — [[косинусное сходство]], <tex>\tau</tex> — температурный параметр, а <tex>i^+</tex> и <tex>i^{-}</tex> — положительный и отрицательный примеры соответственно <ref name="jaiswal_survey"/>. Знаменатель суммирует сходство якоря со всеми остальными примерами в батче, кроме себя.
+
-
 
+
-
'''Теоретическая интерпретация'''. InfoNCE минимизирует дивергенцию Кульбака-Лейблера между истинным апостериорным распределением и моделью, аппроксимирующей это распределение <ref name="infoNCE_derivation">Oord, A. v. d., et al. "Representation Learning with Contrastive Predictive Coding." arXiv:1807.03748, 2018.</ref>. Можно показать, что асимптотическая форма InfoNCE является оценкой взаимной информации между <tex>x</tex> и его аугментированной версией <ref name="infoNCE_derivation"/>. Однако недавние работы <ref name="marusov_theory"/> показывают, что стандартная InfoNCE не учитывает корреляции между объектами в непрерывных данных (временные ряды, видео), и предлагают модификации, адаптированные для зависимых данных.
+
-
 
+
-
=== Связь с взаимной информацией ===
+
-
 
+
-
В пределе бесконечного числа отрицательных примеров InfoNCE минимизирует расхождение Кульбака-Лейблера между истинной апостериорной вероятностью <tex>p(\phi | y)</tex> и моделью <tex>\hat{q}_\theta(\phi | y)</tex>. Это приводит к максимизации взаимной информации <tex>I(\phi, y)</tex> между представлениями <tex>\phi</tex> и <tex>y</tex> <ref name="infoNCE_derivation"/>.
+
-
 
+
-
== Ключевые алгоритмы ==
+
-
 
+
-
=== SimCLR ===
+
-
 
+
-
'''SimCLR''' (''Simple Framework for Contrastive Learning'') <ref name="jaiswal_survey"/> использует максимально простую архитектуру:
+
-
1. Для каждого изображения случайным образом генерируются две аугментации (например, обрезание, изменение цвета).
+
-
2. Обе аугментации пропускаются через общий энкодер (обычно ResNet) и проекционную головку (MLP).
+
-
3. Вычисляется NT-Xent loss между всеми парами в батче.
+
-
4. Ключевые особенности: большой батч (до 8192), сильные аугментации данных, нормализация представлений.
+
-
 
+
-
SimCLR показал, что качество представлений растёт с увеличением размера батча и числа шагов обучения <ref name="jaiswal_survey"/>.
+
-
 
+
-
=== MoCo (Momentum Contrast) ===
+
-
 
+
-
'''MoCo''' решает проблему ограниченного размера батча, используя динамическую очередь отрицательных примеров <ref name="jaiswal_survey"/>. Архитектура состоит из:
+
-
* Энкодер запроса (<tex>f_q</tex>), который кодирует текущий объект.
+
-
* Энкодер ключа (<tex>f_k</tex>), который кодирует объекты в очереди. Этот энкодер обновляется с помощью [[экспоненциальное скользящее среднее|экспоненциального скользящего среднего (EMA)]] от энкодера запроса:
+
-
 
+
-
<tex>\theta_k \leftarrow m \theta_k + (1 - m) \theta_q</tex>
+
-
 
+
-
где <tex>m \in [0, 1)</tex> — коэффициент импульса (обычно 0.999).
+
-
 
+
-
Очередь хранит представления последних <tex>K</tex> объектов (например, 65536), что позволяет использовать большое количество отрицательных примеров без увеличения размера батча <ref name="jaiswal_survey"/>. MoCo v3 представляет собой модернизацию с использованием трансформерных энкодеров.
+
-
 
+
-
=== BYOL ===
+
-
 
+
-
'''BYOL''' (''Bootstrap Your Own Latent'') <ref name="jaiswal_survey"/> отказывается от отрицательных примеров, что радикально отличает его от контрастивных методов. Он использует две сети:
+
-
* ''Online'' сеть (ученик) с параметрами <tex>\theta</tex>.
+
-
* ''Target'' сеть (учитель) с параметрами <tex>\xi</tex>, обновляемыми через EMA: <tex>\xi \leftarrow m \xi + (1 - m) \theta</tex>.
+
-
 
+
-
Цель — предсказать представление учителя для аугментированной версии того же изображения. При этом градиенты останавливаются на сети учителя (''stop-gradient''), что предотвращает коллапс представлений. BYOL достигает качества, сравнимого с SimCLR, но без отрицательных примеров, что упрощает обучение <ref name="jaiswal_survey"/>. Эмпирические исследования показывают, что BYOL особенно эффективен для задач, требующих тонкой временной гранулярности (например, AVA) <ref name="video_ssl_analysis"/>.
+
-
 
+
-
=== SwAV ===
+
-
 
+
-
'''SwAV''' (''Swapping Assignments between Views'') <ref name="jaiswal_survey"/> объединяет контрастивное обучение с кластеризацией. Вместо попарного сравнения представлений, SwAV сравнивает кластерные назначения двух аугментированных версий одного изображения. Это позволяет избежать больших матриц попарного сходства и делает метод более масштабируемым. SwAV использует механизм ''swapped prediction'' — предсказание кластерного кода одной аугментации на основе другой.
+
-
 
+
-
== Компоненты ==
+
-
 
+
-
=== Аугментации ===
+
-
 
+
-
Выбор аугментаций критически важен для контрастивного обучения <ref name="jaiswal_survey"/><ref name="video_ssl_analysis"/>. Для изображений стандартными являются случайное обрезание и изменение размера, цветовые искажения (яркость, контраст, насыщенность), повороты и гауссово размытие. Для видео добавляются временные аугментации (например, замедление, перестановка кадров) <ref name="video_ssl_analysis"/>.
+
-
 
+
-
Исследования показывают <ref name="video_ssl_analysis"/>, что:
+
-
* Для MoCo наиболее важны цветовые аугментации.
+
-
* Для SimCLR и SwAV — временные аугментации.
+
-
* Усиление цветовых аугментаций улучшает переносимость на UCF101, но не на K400.
+
-
 
+
-
=== Stop-gradient ===
+
-
 
+
-
В BYOL и его вариантах (SimSiam) используется операция ''stop-gradient'', которая предотвращает обновление весов учителя. Это является ключевым механизмом, предотвращающим коллапс (вырождение) представлений, когда все объекты отображаются в одну точку <ref name="jaiswal_survey"/>.
+
-
 
+
-
=== Momentum encoder ===
+
-
 
+
-
Используется в MoCo и BYOL для создания стабильной цели. Параметры momentum-энкодера обновляются медленно (через EMA), что обеспечивает согласованность представлений во времени и служит дополнительной регуляризацией <ref name="jaiswal_survey"/>.
+
-
 
+
-
=== Очередь (Queue) ===
+
-
 
+
-
Ключевой компонент MoCo, позволяющий хранить представления из предыдущих батчей. Это делает возможным использование сотен тысяч отрицательных примеров без увеличения размера батча. Очередь обновляется по принципу FIFO (''first in, first out'') <ref name="jaiswal_survey"/>.
+
-
 
+
-
== Сравнение с генеративными методами ==
+
-
 
+
-
Генеративные методы ([[GAN]], [[вариационный автоэнкодер|VAE]], [[авторегрессионные модели]]) стремятся восстановить распределение данных <tex>p(x)</tex>, обучаясь генерировать объекты, неотличимые от реальных <ref name="jaiswal_survey"/>. Они позволяют синтезировать новые данные, но часто требуют сложной настройки и страдают от нестабильности обучения (особенно GAN).
+
-
 
+
-
Контрастивные методы, напротив, являются '''дискриминативными''': они не генерируют данные, а только учат различать объекты <ref name="jaiswal_survey"/><ref name="ultralytics_glossary"/>. Это делает их более стабильными и эффективными для задач, где важны представления для последующей классификации, детекции или поиска <ref name="ultralytics_glossary"/>. Современные гибридные подходы пытаются объединить преимущества обеих парадигм <ref name="roy_survey">Roy, S., et al. "Contrastive learning strategies for better image classification with imbalanced datasets." Neurocomputing, 2025.</ref>.
+
-
 
+
-
== Выбор отрицательных пар ==
+
-
 
+
-
Стратегия формирования отрицательных пар является одним из ключевых различий между методами <ref name="jaiswal_survey"/><ref name="video_ssl_analysis"/>.
+
-
 
+
-
* '''In-batch negatives''' (SimCLR): Все остальные объекты в текущем батче считаются отрицательными. Эффективно при больших размерах батча <ref name="jaiswal_survey"/>.
+
-
* '''Memory bank / Queue''' (MoCo): Отрицательные примеры хранятся в динамической очереди, что позволяет использовать их больше и разнообразнее.
+
-
* '''Нет отрицательных примеров''' (BYOL): Используется асимметричная архитектура и stop-gradient.
+
-
* '''Кластерные назначения''' (SwAV): Отрицательные примеры определяются через сравнение кластерных кодов.
+
-
 
+
-
Эмпирические исследования на видео-данных <ref name="video_ssl_analysis"/> показывают, что метод с отрицательными примерами (MoCo) лучше работает для задач с длинной временной зависимостью (Charades), в то время как метод без отрицательных примеров (BYOL) лучше для задач с более тонкой временной структурой (AVA). Это указывает на то, что выбор стратегии зависит от природы downstream-задачи.
+
-
 
+
-
== Оценка качества ==
+
-
 
+
-
Качество представлений оценивается с помощью downstream-задач:
+
-
 
+
-
* '''Линейное тестирование (Linear Probing)''': Поверх замороженного энкодера обучается линейный классификатор. Это стандартный протокол, измеряющий качество представлений "как есть" <ref name="jaiswal_survey"/><ref name="video_ssl_analysis"/>.
+
-
* '''Тонкая настройка (Fine-tuning)''': Энкодер дообучается на целевой задаче. Позволяет адаптировать представления, но не даёт чистую оценку изначального качества <ref name="video_ssl_analysis"/>.
+
-
* '''k-NN''': Использование метода [[k-ближайших соседей]] в пространстве представлений.
+
-
 
+
-
Например, на наборе данных ImageNet линейный классификатор поверх представлений, обученных MoCo, достигает точности 69.0%, что лишь на 5.7% ниже, чем у полностью обученной под наблюдением модели <ref name="video_ssl_analysis"/>. На датасетах ЭКГ контрастивные методы дают прирост в среднем на 5-10% по метрике F1 по сравнению с обучением с нуля <ref name="nature_ecg_comparison"/>.
+
-
 
+
-
== Применения ==
+
-
 
+
-
* '''Компьютерное зрение''': Классификация изображений, детекция объектов, сегментация, поиск изображений <ref name="jaiswal_survey"/><ref name="roy_survey"/>.
+
-
* '''Видеоаналитика''': Распознавание действий, обнаружение событий <ref name="video_ssl_analysis"/>.
+
-
* '''Медицинская диагностика''': Классификация заболеваний по рентгеновским снимкам, ЭКГ, МРТ. Особенно эффективно при ограниченном количестве размеченных данных <ref name="nature_ecg_comparison"/><ref name="roy_survey"/>.
+
-
* '''Обработка естественного языка''': Обучение контекстных эмбеддингов слов (например, в моделях типа BERT используется контрастивный компонент в некоторых вариантах).
+
-
* '''Несбалансированные датасеты''': Контрастивное обучение помогает улучшить качество распознавания редких классов <ref name="roy_survey"/>.
+
-
 
+
-
== Ограничения и открытые вопросы ==
+
-
 
+
-
*1. '''Чувствительность к аугментациям''': Качество сильно зависит от выбора аугментаций, который часто подбирается эмпирически <ref name="jaiswal_survey"/><ref name="video_ssl_analysis"/>.
+
-
*2. '''Вычислительная сложность''': Требуют больших батчей (SimCLR) или очередей (MoCo), что предъявляет высокие требования к памяти и времени обучения <ref name="jaiswal_survey"/>.
+
-
*3. '''Проблема коллапса''': Без специальных техник (stop-gradient, momentum encoder) модель может выродиться <ref name="jaiswal_survey"/>.
+
-
*4. '''Теоретическое обоснование''': Несмотря на связь с максимизацией взаимной информации, эта связь неполна и не объясняет всех эмпирических успехов <ref name="marusov_theory"/><ref name="infoNCE_derivation"/>.
+
-
*5. '''Зависимости в данных''': Стандартная InfoNCE не учитывает семантические корреляции между объектами в непрерывных данных, что требует специальных модификаций <ref name="marusov_theory"/>.
+
-
*6. '''Интерпретируемость''': Как и для большинства глубоких нейросетей, интерпретация выученных признаков остаётся сложной <ref name="roy_survey"/>.
+
-
 
+
-
== Практические рекомендации ==
+
-
 
+
-
*1. '''Выбор метода''': Начинайте с SimCLR для простоты, если есть достаточно вычислительных ресурсов (большие батчи). Для ограниченных ресурсов используйте MoCo или BYOL <ref name="jaiswal_survey"/>.
+
-
*2. '''Аугментации''': Для изображений обязательно включайте случайное обрезание и цветовые искажения. Для видео — временные аугментации <ref name="video_ssl_analysis"/>.
+
-
*3. '''Размер батча и очередь''': Для SimCLR используйте максимально возможный батч. Для MoCo настройте размер очереди (K) не менее 4096 <ref name="jaiswal_survey"/>.
+
-
*4. '''Температура (<tex>\tau</tex>)''': Оптимальное значение обычно лежит в диапазоне 0.07–0.1 <ref name="jaiswal_survey"/>.
+
-
*5. '''Проекционная головка''': Используйте двухслойный MLP. При переходе к downstream-задачам головку отбрасывайте <ref name="jaiswal_survey"/>.
+
-
*6. '''Оценка''': Всегда проводите линейное тестирование и, если возможно, тонкую настройку для полной оценки <ref name="jaiswal_survey"/>.
+
-
*7. '''Для несбалансированных данных''': Рассмотрите стратегии динамического семплирования или ''hard negative mining'' <ref name="roy_survey"/>.
+
-
 
+
-
== См. также ==
+
-
 
+
-
* [[Самообучаемое обучение]]
+
-
* [[Автоэнкодер]]
+
-
* [[Трансферное обучение]]
+
-
* [[Обучение представлений]]
+
-
* [[SimCLR]]
+
-
* [[BYOL]]
+
-
* [[Информационная бутстреп-оценка]]
+
-
* [[Несбалансированные выборки]]
+
-
 
+
-
== Примечания ==
+
-
 
+
-
<references />
+
-
 
+
-
== Литература ==
+
-
 
+
-
# Jaiswal, A., Babu, A. R., Zadeh, M. Z., Banerjee, D., & Makedon, F. (2020). A Survey on Contrastive Self-supervised Learning. ''arXiv:2011.00362''.
+
-
# Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020). A Simple Framework for Contrastive Learning of Visual Representations. ''ICML''. (SimCLR)
+
-
# He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum Contrast for Unsupervised Visual Representation Learning. ''CVPR''. (MoCo)
+
-
# Grill, J. B., et al. (2020). Bootstrap Your Own Latent. ''NeurIPS''. (BYOL)
+
-
# Caron, M., et al. (2020). Unsupervised Learning of Visual Features by Contrasting Cluster Assignments. ''NeurIPS''. (SwAV)
+
-
# Oord, A. v. d., Li, Y., & Vinyals, O. (2018). Representation Learning with Contrastive Predictive Coding. ''arXiv:1807.03748''. (CPC, InfoNCE)
+
-
# Марусов А. Э., Зайцев А. А. (2025). Теоретически обоснованные контрастивные методы самообучения для непрерывных зависимых данных. ''Доклады РАН'', 527, 192–205.
+
-
# Roy, S., Jadhav, R., & Meena, T. (2025). Contrastive learning strategies for better image classification with imbalanced datasets. ''Neurocomputing''.
+
-
# "A critical analysis of self-supervision for video." (2021). ''arXiv:2104.14558''. (Сравнение SimCLR, MoCo, BYOL, SwAV на видео)
+
-
# "Comparison results based on transfer learning on ECG datasets." (2025). ''Nature Scientific Reports''.
+
-
 
+
-
== Ссылки ==
+
-
 
+
-
* [https://github.com/google-research/simclr Официальный репозиторий SimCLR]
+
-
* [https://github.com/facebookresearch/moco Официальный репозиторий MoCo]
+
-
* [https://github.com/deepmind/deepmind-research/tree/master/byol Официальный репозиторий BYOL]
+
-
* [https://lilianweng.github.io/posts/2021-05-31-contrastive/ Lilian Weng — Contrastive Learning (обзор на английском)]
+
-
 
+
-
[[Категория:Машинное обучение]]
+
-
[[Категория:Глубокое обучение]]
+
-
[[Категория:Самообучаемое обучение]]
+
-
[[Категория:Обучение представлений]]
+
-
[[Категория:Нейронные сети]]
+

Текущая версия

  1. REDIRECTСамостоятельное обучение
Личные инструменты