Контрастное обучение
Определение
Контрастное обучение (contrastive learning, [1],[2],[3]) настраивает отображение объектов в признаковое представление или эмбеддинг (embedding) объектов таким образом, чтобы "похожие" объекты были близки, а "непохожие - далеки друг от друга в пространстве эмбеддингов.
Преобразование f(x), отображающее объект в его эмбеддинг, называется сиамской сетью (siamese network).
При этом размерность пространства эмбеддингов обычно невелика и составляет несколько сотен признаков.
Примеры использования
Задача | Похожие объекты | Непохожие объекты |
---|---|---|
классификация | принадлежат одному классу | принадлежат разным классам |
проверка подписи | сканы подписей одного и того же человека | сканы подписей разных людей |
обнаружение перефразирования | перефразирования одной и той же фразы | перефразирования разных фраз |
обнаружение одинаковых изображений | преобразования одного и того же изображения (поворот, обрезка, добавление шума, изменение цветов) | разные изображения |
В задаче 1,2,3 используется разметка, поэтому это задача обучения с учителем, известная как supervised contrasitve learning. В задаче 4 разметка не используется - объекты генерируются по самим себе. Эта задача известна как instance discrimination.
При настройке похожие объекты сэмплируются целенаправленно, чтобы быть похожими, а непохожие - сэмплируются случайно. Поскольку число объектов в выборке, как правило, велико, то почти во всех случаях это будет приводить к генерации действительно разных не соответствующих друг другу объектов.
Ниже приведён пример эмбеддингов, получаемых в задаче классификации рукописных цифр на датасете MNIST, полученные с промежуточных слоёв обычной классификационной сети (слева) и с финальных слоёв сиамской сети (справа).
Как видим, эмбеддинги сиамской сети сильнее раздвинуты для объектов разных классов по сравнению с эмбеддингами обычной классификационной сети.
После того, как сиамская сеть настроена, можно решать конечную задачу. Если эта классификация, то можно
-
инициализировать классификационную сеть первыми слоями сиамской сети (особенно для instance discrimination)
-
решать классификацию в пространстве эмбеддингов. Поскольку эмбеддинги уже хорошо разделяют классы, то можно использовать метод ближайших центроидов или (лучше, но более ресурсоёмко) метод K ближайших соседей.