Контрастивное кодирование, объяснённое для экспертов


Контрастивное кодирование — это метод обучения представлений, при котором функция встраивания \( f_\theta \) обучается так, чтобы положительные пары данных \( (x_i, x_j^+) \) располагались в латентном пространстве ближе друг к другу, чем отрицательные пары \( (x_i, x_k^-) \).

Формально часто используется функция потерь InfoNCE:

\[ \mathcal{L}_i = - \log \frac{\exp(\mathrm{sim}(f_\theta(x_i), f_\theta(x_j^+)) / \tau)}{\sum_{k=0}^K \exp(\mathrm{sim}(f_\theta(x_i), f_\theta(x_k)) / \tau)} \]

где \( \mathrm{sim} \) — функция сходства, например косинусное сходство, а \( \tau \) — параметр температуры.

Цель состоит в том, чтобы структурировать представления так, чтобы семантически похожие экземпляры группировались, а непохожие — разделялись, что приводит к лучшей обобщающей способности.


Определение:
«Контрастивное кодирование — это метод самообучения, который создаёт устойчивые и информативные представления путём максимизации сходства положительных пар и минимизации сходства отрицательных пар.»


Источник:
Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020). A Simple Framework for Contrastive Learning of Visual Representations. Proceedings of the 37th International Conference on Machine Learning (ICML).