---
# System prepended metadata

title: Triplet Losses and Friends

---

# Triplet Losses and Friends


## Origins
[*Deep Metric Learning via Lifted Structured Feature Embedding*](https://arxiv.org/abs/1511.06452)(Цитируется: 674)

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

Итак, что такое триплет лосс, и остальные? 
![](https://i.imgur.com/ibx0O69.png)

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

### Фейл кейсы
![](https://i.imgur.com/g5PTFp3.png)


В стате уделяется большое внимание тому, как выбирать пары в Lifted Embedding. Есть альтернативы:

* Брать все пары в батче
* Брать только сложные пары в батче

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

## Майнить или не Майнить

### Не майнить

Можно сделать чуть другую голову для классификации https://arxiv.org/abs/1909.05235. К статье много вопросов и кажется она не релевантны для фейсрека. Что в ней?

Вместо одного центройда в голове появляется несколько центройдов. При этом вводится регуляризация на дополнительные центройды. Визуализация ниже


![](https://i.imgur.com/6MrVVXz.png)

Когда мы нашли симиларити до нескольких центройдов класса можно сделать либо максимум по симиларити, либо софтмакс. 
![](https://i.imgur.com/c0orTcM.png)


### Майнить

[*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)

Майнить по всему датасету трудно, можно дедлать верхние оценки

![](https://i.imgur.com/XNVDhe4.png)

![](https://i.imgur.com/95S4J3M.png)

Подсчет радиуса кластера позволяет получить верхнюю оценку, не высчитывая всех схожестей между объектами. (как он может быть предпосчитан, сходу не разобрался)

---

[*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)

Главная мотивация этой статьи про то, что вариация внутри кластера достаточно сильная и это не очень хорошо. Разные позы, освещение вызывают нестабильности в обучении. Так схожесть будет определяться скорее позой, чем специфичными признаками.

![](https://i.imgur.com/4wuwb1N.png)

Авторы дополнительно выделяют intra-class positive/negative

> Based on the attribute distance, intra-class negative and intra-class positive can
be picked out from the identity positives

для этого они дополнительно предсказывают аттрибуты. Выливается это все в достаточно сложную процедуру обучения. Где в лосс подаются пары так, чтобы снизить разницу признаков между позитивными парами с разными аттрибутами.

![](https://i.imgur.com/x8fwYla.png)


---

Завершу обзор вот этой статьей 

[*A theoretically sound upper bound on the triplet loss for improving the efficiency of deep distance metric learning*](https://arxiv.org/abs/1904.08720)

Нечто похожее обсуждалось недавно на нашем брейншторме. Когда вместо сравнения с триплетом шло сравнение с центройдом

![](https://i.imgur.com/HZK1Fo9.png)

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

