# Triplet Losses and Friends
## Origins
[*Deep Metric Learning via Lifted Structured Feature Embedding*](https://arxiv.org/abs/1511.06452)(Цитируется: 674)
Одна из первых первых статей на тему триплет лоссов. Она охватывает интуицию, контрпримеры достаточно качественно, чтобы начать свое погружение в тему. (Увы мое погружение было с других статей)
Итак, что такое триплет лосс, и остальные?

* Контрастив лосс -- сравниваются пары положительные и отрицательные
* Триплет лосс -- появляется понятие **Anchor**. Положительные и отрицательные пары создаются относительно него
* Lifted Embedding -- то, что предложили авторы использовать в то время
### Фейл кейсы

В стате уделяется большое внимание тому, как выбирать пары в Lifted Embedding. Есть альтернативы:
* Брать все пары в батче
* Брать только сложные пары в батче
Чтобы избежать косяков с легкими позитивами и негативами, батч лучше составлять исходя из ближайших соседей. Но и говорят, что перебарщивать и составлять пары из только сложных примеров не стоит. В общем случае при большом батч сайзе стратегия выбирать только сложные в батче хороша.
## Майнить или не Майнить
### Не майнить
Можно сделать чуть другую голову для классификации https://arxiv.org/abs/1909.05235. К статье много вопросов и кажется она не релевантны для фейсрека. Что в ней?
Вместо одного центройда в голове появляется несколько центройдов. При этом вводится регуляризация на дополнительные центройды. Визуализация ниже

Когда мы нашли симиларити до нескольких центройдов класса можно сделать либо максимум по симиларити, либо софтмакс.

### Майнить
[*In Defense of the Triplet Loss Again: Learning Robust Person Re-Identification with Fast Approximated Triplet Loss and Label Distillation*](https://arxiv.org/abs/1912.07863)
Майнить по всему датасету трудно, можно дедлать верхние оценки


Подсчет радиуса кластера позволяет получить верхнюю оценку, не высчитывая всех схожестей между объектами. (как он может быть предпосчитан, сходу не разобрался)
---
[*In Defense of the Triplet Loss for Person Re-Identificatio*](https://arxiv.org/abs/1703.07737)
Как ни странно в этой статье опять вспоминается подход 15го года.
> Most similar to our batch hard and batch all losses is
the Lifted Embedding loss
Отличий я не сильно много нашел. По факту это выбор правильных сложных пар в батче как в старой статье. В контрибушены они выделяют экспериментальную секцию, где они завели триплет лоссы для ReID
---
[*Attribute-aware Identity-hard Triplet Loss for Video-based Person Re-identificatio*](https://arxiv.org/abs/2006.07597)
Главная мотивация этой статьи про то, что вариация внутри кластера достаточно сильная и это не очень хорошо. Разные позы, освещение вызывают нестабильности в обучении. Так схожесть будет определяться скорее позой, чем специфичными признаками.

Авторы дополнительно выделяют intra-class positive/negative
> Based on the attribute distance, intra-class negative and intra-class positive can
be picked out from the identity positives
для этого они дополнительно предсказывают аттрибуты. Выливается это все в достаточно сложную процедуру обучения. Где в лосс подаются пары так, чтобы снизить разницу признаков между позитивными парами с разными аттрибутами.

---
Завершу обзор вот этой статьей
[*A theoretically sound upper bound on the triplet loss for improving the efficiency of deep distance metric learning*](https://arxiv.org/abs/1904.08720)
Нечто похожее обсуждалось недавно на нашем брейншторме. Когда вместо сравнения с триплетом шло сравнение с центройдом

Однако, с обучением центройдов что-то не гладко, они предлагают их инициализировать равномерно и не трогать.