Открыть сервис

Триплетная функция потерь

Триплетная функция потерь (англ. triplet loss function) — это вид функции потерь, используемый в задачах машинного обучения, в частности в метрическом обучении (metric learning) и обучении представлений (representation learning). Основная цель триплетной функции потерь — обучить нейронную сеть отображать входные данные в такое векторное пространство (эмбеддинги), где объекты одного класса (или семантически близкие) располагаются ближе друг к другу, а объекты разных классов — дальше, с соблюдением заданного минимального отступа (margin).

Принцип работы

Триплетная функция потерь оперирует тройками примеров (триплетами), которые состоят из трёх элементов:

  • Anchor (A) — опорный объект, относительно которого измеряется расстояние.
  • Positive (P) — объект, принадлежащий к тому же классу, что и Anchor (положительный пример).
  • Negative (N) — объект, принадлежащий к другому классу, чем Anchor (отрицательный пример).

Функция потерь для одного триплета определяется как:

\[ L(A, P, N) = \max(0, d(A, P) - d(A, N) + \alpha) \]

где:

  • \(d(A, P)\) — расстояние (обычно евклидово, реже косинусное) между эмбеддингами Anchor и Positive;
  • \(d(A, N)\) — расстояние между эмбеддингами Anchor и Negative;
  • \(\alpha\) — гиперпараметр отступ (margin), задающий минимальную желаемую разницу между расстоянием до положительного и до отрицательного примеров.

Смысл формулы: если расстояние до положительного примера уже меньше, чем до отрицательного, на величину, не меньшую \(\alpha\), то потери равны нулю. В противном случае потери положительны и пропорциональны нарушению отступа. Таким образом, сеть штрафуется за то, что отрицательный пример оказывается ближе к опорному, чем положительный, или за то, что разница между расстояниями недостаточна.

История

Концепция триплетной функции потерь была предложена в контексте обучения метрик. В 2005 году Шай Шалев-Шварц и др. (Shai Shalev-Shwartz et al.) использовали идею попарных ограничений, однако современный вид триплетной функции потерь популяризировали работы по обучению встраиваний для задач распознавания лиц. В 2015 году команда Google (Флориан Шрофф, Дмитрий Калениченко, Джеймс Филбин) в статье «FaceNet: A Unified Embedding for Face Recognition and Clustering» применила триплетную функцию потерь для обучения модели FaceNet, которая достигла рекордных показателей на эталонных наборах данных (LFW, YouTube Faces). С тех пор триплетная функция потерь стала стандартным инструментом в задачах, где требуется обучение метрик сходства.

Классификация и варианты

По способу формирования триплетов

Эффективность обучения сильно зависит от того, как выбираются триплеты. Выделяют три основных стратегии:

  • Случайные триплеты — выбираются случайным образом из обучающей выборки. Большинство триплетов при этом оказываются «лёгкими» (easy triplets), где условие \(d(A, P) + \alpha < d(A, N)\) выполняется, и потери равны нулю. Обучение происходит медленно.
  • Сложные триплеты (hard triplets) — для каждого Anchor выбираются такие Positive, который находится далеко от него, и такой Negative, который находится близко. Это ускоряет обучение, но может приводить к нестабильности и выбросам.
  • Полусложные триплеты (semi-hard triplets) — компромиссный вариант, предложенный в FaceNet: Negative выбирается так, что он находится дальше от Anchor, чем Positive, но не настолько далеко, чтобы потери были нулевыми (\(d(A, P) < d(A, N) < d(A, P) + \alpha\)). Этот подход обеспечивает стабильное обучение.

По модификациям функции потерь

  • Триплетная функция потерь с отступом — классическая формула с фиксированным \(\alpha\).
  • Триплетная функция потерь с адаптивным отступом — \(\alpha\) может меняться в процессе обучения, например, в зависимости от сложности класса.
  • Триплетная функция потерь с мягким отступом (soft margin triplet loss) — вместо \(\max(0, \cdot)\) используется логарифмическая или сигмоидная аппроксимация, что делает функцию гладкой и дифференцируемой всюду.
  • Триплетная функция потерь с нормализацией — эмбеддинги нормируются на единичную сферу, что упрощает выбор отступа и улучшает обобщение.

Применение

Триплетная функция потерь широко применяется в задачах, где требуется обучение инвариантных представлений и сравнение объектов по сходству:

  • Распознавание лиц — классическое применение (FaceNet, ArcFace, CosFace). Модель учится отображать изображения лиц в эмбеддинги, где расстояние между снимками одного человека мало, а разных — велико.
  • Поиск изображений (content-based image retrieval) — обучение эмбеддингов, позволяющих находить визуально похожие изображения по запросу.
  • Рекомендательные системы — обучение представлений пользователей и товаров, где триплеты формируются на основе взаимодействий (например, пользователь — положительный товар — отрицательный товар).
  • Обработка естественного языка — обучение семантических эмбеддингов предложений (например, в задачах paraphrase detection, semantic textual similarity).
  • Биометрияверификация личности по голосу, отпечаткам пальцев, радужной оболочке глаза.
  • Медицинская диагностика — сравнение медицинских изображений (например, рентгенограмм) для поиска схожих патологий.

Преимущества и недостатки

Преимущества

  • Относительная простота — формула интуитивно понятна и легко реализуема.
  • Гибкость — может использоваться с любыми архитектурами нейронных сетей (свёрточные, рекуррентные, трансформеры).
  • Эффективность — при правильном выборе триплетов позволяет получать компактные и дискриминативные представления.
  • Интерпретируемость — расстояние между эмбеддингами имеет прямой семантический смысл.

Недостатки

  • Чувствительность к выбору триплетов — случайные триплеты приводят к медленному обучению, а сложные — к нестабильности. Требуется тщательная настройка стратегии сэмплирования.
  • Вычислительная сложность — для формирования эффективных триплетов необходимо вычислять расстояния между всеми парами объектов в батче, что увеличивает затраты памяти и времени.
  • Необходимость подбора гиперпараметров — отступ \(\alpha\) и размер батча сильно влияют на качество обучения.
  • Склонность к коллапсу — при неудачной инициализации или выборе триплетов все эмбеддинги могут схлопнуться в одну точку, что делает функцию потерь бесполезной.

Сравнение с другими функциями потерь

  • Контрастивная функция потерь (contrastive loss) — работает с парами (Anchor, Positive) и (Anchor, Negative), штрафуя за слишком большое расстояние между положительными и слишком малое — между отрицательными. Триплетная функция потерь является обобщением, учитывающим относительное положение трёх точек.
  • Функция потерь с угловым отступом (angular loss) — модификация, учитывающая углы между векторами, а не только расстояния.
  • Функция потерь с центром (center loss) — добавляет штраф за удаление эмбеддингов от центра класса, что улучшает компактность кластеров.
  • Multi-Similarity loss — более сложная функция, учитывающая несколько уровней сходства между парами объектов.

Интересные факты

  • В оригинальной статье FaceNet авторы показали, что использование триплетной функции потерь позволяет достичь точности 99,63% на наборе данных LFW (Labeled Faces in the Wild) при размере эмбеддинга 128.
  • Для ускорения обучения часто применяется техника online triplet mining — формирование триплетов внутри текущего батча, а не по всей выборке.
  • В некоторых современных архитектурах (например, ArcFace) триплетная функция потерь заменяется на модифицированную softmax-функцию с добавлением углового отступа, что даёт более стабильные результаты без необходимости сложного сэмплирования.

Источники

  • Schroff, F., Kalenichenko, D., & Philbin, J. (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR).
  • Shalev-Shwartz, S., Singer, Y., & Ng, A. Y. (2005). Online and Batch Learning of Pseudo-Metrics. Proceedings of the 22nd International Conference on Machine Learning (ICML).
  • Hermans, A., Beyer, L., & Leibe, B. (2017). In Defense of the Triplet Loss for Person Re-Identification. arXiv preprint arXiv:1703.07737.
  • Deng, J., Guo, J., Xue, N., & Zafeiriou, S. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →