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