Триплетная функция потерь
Триплетная функция потерь (англ. 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 →